From 2d1e99260dbb4b82378118818b177e04e9a44be4 Mon Sep 17 00:00:00 2001 From: lukas Date: Mon, 1 Feb 2021 18:33:36 +0100 Subject: [PATCH] better error correction if ip syntax not correct --- inc/IpHelper.h | 2 +- src/FileLogger.cpp | 5 +---- src/IpHelper.cpp | 6 ++++-- src/api/IPAPI.cpp | 8 +++++++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/inc/IpHelper.h b/inc/IpHelper.h index 8b30ba9..4051051 100644 --- a/inc/IpHelper.h +++ b/inc/IpHelper.h @@ -16,7 +16,7 @@ public: * @param ip ip address to test * @return validity */ - static bool isIpValid(std::string ip); + static bool isIpValid(const std::string& ip); private: }; diff --git a/src/FileLogger.cpp b/src/FileLogger.cpp index 0e9caf0..65dca05 100644 --- a/src/FileLogger.cpp +++ b/src/FileLogger.cpp @@ -23,8 +23,5 @@ std::string FileLogger::readip() { in >> ip; // when received ip has no . return 0.0.0.0 - if (!IpHelper::isIpValid(ip)) - return "0.0.0.0"; - else - return ip; + return (IpHelper::isIpValid(ip) ? ip : "0.0.0.0"); } diff --git a/src/IpHelper.cpp b/src/IpHelper.cpp index 5be0bf0..c9a2f1c 100644 --- a/src/IpHelper.cpp +++ b/src/IpHelper.cpp @@ -1,5 +1,7 @@ +#include #include "IpHelper.h" -bool IpHelper::isIpValid(std::string ip) { - return (ip.find('.') != SIZE_MAX); +bool IpHelper::isIpValid(const std::string& ip) { + const std::regex rgx(R"(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$)"); + return (std::regex_match(ip, rgx)); } diff --git a/src/api/IPAPI.cpp b/src/api/IPAPI.cpp index ec079b8..b202644 100644 --- a/src/api/IPAPI.cpp +++ b/src/api/IPAPI.cpp @@ -1,5 +1,11 @@ +#include +#include #include "api/IPAPI.h" std::string IPAPI::getGlobalIp() { - return request("https://api.ipify.org"); + const std::string ip = request("https://api.ipify.org"); + if(!IpHelper::isIpValid(ip)) + Logger::warning("no valid ip returned from ipapi"); + + return ip; } \ No newline at end of file