From 6cfc7076808138be2ad5a2b05edd635b5948bf31 Mon Sep 17 00:00:00 2001 From: claiff Date: Wed, 21 Sep 2022 15:50:24 +0300 Subject: add port errors check --- src/checker/errors/settings/host_number.cpp | 36 --------------------- src/checker/errors/settings/host_number.hpp | 17 ---------- src/checker/errors/settings/port_number.cpp | 48 ++++++++++++++++++++++++++++ src/checker/errors/settings/port_number.hpp | 17 ++++++++++ src/checker/errors/types/isettings_error.hpp | 2 +- 5 files changed, 66 insertions(+), 54 deletions(-) delete mode 100644 src/checker/errors/settings/host_number.cpp delete mode 100644 src/checker/errors/settings/host_number.hpp create mode 100644 src/checker/errors/settings/port_number.cpp create mode 100644 src/checker/errors/settings/port_number.hpp (limited to 'src/checker') diff --git a/src/checker/errors/settings/host_number.cpp b/src/checker/errors/settings/host_number.cpp deleted file mode 100644 index 3580265..0000000 --- a/src/checker/errors/settings/host_number.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "host_number.hpp" -#include "managment/logger.hpp" -#include -namespace smtp::checker::errors::settings -{ - bool HostNumber::Check( const manage::SettingsFileDataType& line ) const - { - //TODO общее использование полей - auto find = line.find("host"); - if(find == line.end()) - { - manage::Logger::LogError("Host doesn't found"); - return false; - } - int host_as_int{}; - auto host_as_string = find->second; - if(host_as_string.empty()) - { - return true; - } - - try - { - host_as_int = std::stoi( host_as_string ); - } - catch( std::invalid_argument const& ex ) - { - manage::Logger::LogError("Host doesn't entered by numbers"); - } - catch( std::out_of_range const& ex ) - { - manage::Logger::LogError("Host out of range"); - } - return host_as_int >= 0 && host_as_int <= 65535; - } -} diff --git a/src/checker/errors/settings/host_number.hpp b/src/checker/errors/settings/host_number.hpp deleted file mode 100644 index 1f2bfe7..0000000 --- a/src/checker/errors/settings/host_number.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "checker/errors/types/isettings_error.hpp" - -namespace smtp::checker::errors::settings -{ - class HostNumber : public types::IErrorSettings - { - public: - HostNumber() = default; - ~HostNumber() override = default; - - virtual bool Check( const manage::SettingsFileDataType& line ) const override; - }; -} - - diff --git a/src/checker/errors/settings/port_number.cpp b/src/checker/errors/settings/port_number.cpp new file mode 100644 index 0000000..b02eec4 --- /dev/null +++ b/src/checker/errors/settings/port_number.cpp @@ -0,0 +1,48 @@ +#include + +#include "port_number.hpp" +#include "management/logger.hpp" + +namespace smtp::checker::errors::settings +{ + bool PortNumber::Check( const manage::SettingsFileDataType& line ) const + { + static const std::string PORT_FIELD = "port"; + static constexpr int MIN_PORT_NUMBER = 0; + static constexpr int MAX_PORT_NUMBER = 65535; + + //TODO общее использование полей + auto find = line.find( PORT_FIELD ); + if( find == line.end() ) + { + manage::Logger::LogError( "Port doesn't found" ); + return false; + } + auto host_as_string = find->second; + if( host_as_string.empty()) + { + return true; + } + int host_as_int{}; + try + { + host_as_int = std::stoi( host_as_string ); + } + catch( std::invalid_argument const& ex ) + { + manage::Logger::LogError( "Port doesn't entered by numbers" ); + return false; + } + catch( std::out_of_range const& ex ) + { + manage::Logger::LogError( "Port out of range" ); + return false; + } + catch( ... ) + { + manage::Logger::LogError( "Port doesn't entered by numbers" ); + return false; + } + return host_as_int >= MIN_PORT_NUMBER && host_as_int <= MAX_PORT_NUMBER; + } +} diff --git a/src/checker/errors/settings/port_number.hpp b/src/checker/errors/settings/port_number.hpp new file mode 100644 index 0000000..42ab808 --- /dev/null +++ b/src/checker/errors/settings/port_number.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "checker/errors/types/isettings_error.hpp" + +namespace smtp::checker::errors::settings +{ + class PortNumber : public types::IErrorSettings + { + public: + PortNumber() = default; + ~PortNumber() override = default; + + bool Check( const manage::SettingsFileDataType& line ) const override; + }; +} + + diff --git a/src/checker/errors/types/isettings_error.hpp b/src/checker/errors/types/isettings_error.hpp index d5a788f..05f68e3 100644 --- a/src/checker/errors/types/isettings_error.hpp +++ b/src/checker/errors/types/isettings_error.hpp @@ -6,7 +6,7 @@ #include -#include "managment/general.hpp" +#include "management/general.hpp" namespace smtp::checker::errors::types { -- cgit v1.2.3