diff options
author | claiff <claiff@mail.ru> | 2022-09-30 12:21:34 +0300 |
---|---|---|
committer | claiff <claiff@mail.ru> | 2022-09-30 12:21:34 +0300 |
commit | 7fcd35b7ad0fa2b0a49c5cdd9a62e23412bf8731 (patch) | |
tree | 2af4dacab9a5992d19abd385dbaaa9de40ffc891 /src/checker/errors/settings | |
parent | 8d38861429c3544d10752fb0f6f9da436dee218f (diff) | |
download | obmc-sila-smtp-feature/checker/server.tar.xz |
Add checking mailsfeature/checker/server
Add check server
fix add simillar mails
Diffstat (limited to 'src/checker/errors/settings')
-rw-r--r-- | src/checker/errors/settings/port_number.cpp | 9 | ||||
-rw-r--r-- | src/checker/errors/settings/port_number.hpp | 2 | ||||
-rw-r--r-- | src/checker/errors/settings/server.cpp | 39 | ||||
-rw-r--r-- | src/checker/errors/settings/server.hpp | 18 |
4 files changed, 62 insertions, 6 deletions
diff --git a/src/checker/errors/settings/port_number.cpp b/src/checker/errors/settings/port_number.cpp index 73469cb..485b4c7 100644 --- a/src/checker/errors/settings/port_number.cpp +++ b/src/checker/errors/settings/port_number.cpp @@ -10,13 +10,12 @@ namespace smtp::checker::errors::settings static const std::string PORT_FIELD = "port"; static constexpr int MIN_PORT_NUMBER = 0; static constexpr int MAX_PORT_NUMBER = 65535; - static const std::string METHOD_NAME = "Check settings"; //TODO общее использование полей auto find = line.find( PORT_FIELD ); if( find == line.end() ) { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't found" ); + logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "Port doesn't found" ); return false; } auto host_as_string = find->second; @@ -31,17 +30,17 @@ namespace smtp::checker::errors::settings } catch( std::invalid_argument const& ex ) { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't entered by numbers" ); + logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "Port doesn't entered by numbers" ); return false; } catch( std::out_of_range const& ex ) { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port out of range" ); + logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "Port out of range" ); return false; } catch( ... ) { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Port doesn't entered by numbers" ); + logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "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 index 42ab808..789a486 100644 --- a/src/checker/errors/settings/port_number.hpp +++ b/src/checker/errors/settings/port_number.hpp @@ -10,7 +10,7 @@ namespace smtp::checker::errors::settings PortNumber() = default; ~PortNumber() override = default; - bool Check( const manage::SettingsFileDataType& line ) const override; + bool Check( manage::SettingsFileDataType const& line ) const override; }; } diff --git a/src/checker/errors/settings/server.cpp b/src/checker/errors/settings/server.cpp new file mode 100644 index 0000000..c3f29af --- /dev/null +++ b/src/checker/errors/settings/server.cpp @@ -0,0 +1,39 @@ +#include <regex> + +#include "server.hpp" +#include "logger/logger_set.hpp" + +namespace smtp::checker::errors::settings +{ + // + //Public methods + // + bool Server::Check( manage::SettingsFileDataType const& line ) const + { + static const std::string SERVER_FIELD = "host"; + + auto find = line.find( SERVER_FIELD ); + if( find == line.end() ) + { + logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "Host doesn't found" ); + return false; + } + return IsNormalName( find->second ) || IsIpName( find->second ); + } + + // + //Private methods + // + bool Server::IsNormalName( std::string const& line ) const + { + std::string mask = "^[a-zA-Z](?:\.?[a-zA-Z0-9 ]+)+$"; + return std::regex_search( line, std::regex{mask} ); + } + + bool Server::IsIpName( std::string const& line) const + { + std::string mask = "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; + return std::regex_search( line, std::regex{mask} ); + } + +} diff --git a/src/checker/errors/settings/server.hpp b/src/checker/errors/settings/server.hpp new file mode 100644 index 0000000..53e6170 --- /dev/null +++ b/src/checker/errors/settings/server.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "checker/errors/types/isettings_error.hpp" + +namespace smtp::checker::errors::settings +{ + class Server : public types::IErrorSettings + { + public: + Server() = default; + ~Server() override = default; + + bool Check( manage::SettingsFileDataType const& line ) const override; + private: + bool IsNormalName( std::string const& line ) const; + bool IsIpName( std::string const& line ) const; + }; +} |