From 88486552350ecc0016eecba03813379a38628edc Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 14 Mar 2014 01:55:06 +0100 Subject: [PATCH] refs #185 , added checks for IPs --- src/blackmisc/networkchecks.cpp | 31 +++++++++++++++++++++++++++++++ src/blackmisc/networkchecks.h | 9 +++++++++ 2 files changed, 40 insertions(+) diff --git a/src/blackmisc/networkchecks.cpp b/src/blackmisc/networkchecks.cpp index 81601b53e..5be9a99d4 100644 --- a/src/blackmisc/networkchecks.cpp +++ b/src/blackmisc/networkchecks.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include namespace BlackMisc { @@ -82,4 +84,33 @@ namespace BlackMisc { return CNetworkChecks::canConnect(server.getAddress(), server.getPort(), message, timeoutMs); } + + /* + * Valid IPv4 address + */ + bool CNetworkChecks::isValidIPv4Address(const QString &candidate) + { + QHostAddress address(candidate); + return (QAbstractSocket::IPv4Protocol == address.protocol()); + } + + /* + * Valid IPv6 address + */ + bool CNetworkChecks::isValidIPv6Address(const QString &candidate) + { + QHostAddress address(candidate); + return (QAbstractSocket::IPv6Protocol == address.protocol()); + } + + /* + * Valid port? + */ + bool CNetworkChecks::isValidPort(const QString &port) + { + bool success; + int p = port.toInt(&success); + if (!success) return false; + return (p >= 1 && p <= 65535); + } } // namespace diff --git a/src/blackmisc/networkchecks.h b/src/blackmisc/networkchecks.h index c4d3c6f16..422b64384 100644 --- a/src/blackmisc/networkchecks.h +++ b/src/blackmisc/networkchecks.h @@ -50,6 +50,15 @@ namespace BlackMisc */ static bool canConnect(const BlackMisc::Network::CServer &server, QString &message, int timeoutMs = 1500); + //! \brief Valid IPv4 address + static bool isValidIPv4Address(const QString &candidate); + + //! \brief Valid IPv6 address + static bool isValidIPv6Address(const QString &candidate); + + //! \brief Valid port + static bool isValidPort(const QString &port); + }; } // namespace