summaryrefslogtreecommitdiff
path: root/src/checker/errors/settings/server.cpp
diff options
context:
space:
mode:
authorclaiff <claiff@mail.ru>2022-09-30 12:21:34 +0300
committerclaiff <claiff@mail.ru>2022-09-30 12:21:34 +0300
commit7fcd35b7ad0fa2b0a49c5cdd9a62e23412bf8731 (patch)
tree2af4dacab9a5992d19abd385dbaaa9de40ffc891 /src/checker/errors/settings/server.cpp
parent8d38861429c3544d10752fb0f6f9da436dee218f (diff)
downloadobmc-sila-smtp-7fcd35b7ad0fa2b0a49c5cdd9a62e23412bf8731.tar.xz
Add checking mailsfeature/checker/server
Add check server fix add simillar mails
Diffstat (limited to 'src/checker/errors/settings/server.cpp')
-rw-r--r--src/checker/errors/settings/server.cpp39
1 files changed, 39 insertions, 0 deletions
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} );
+ }
+
+}