summaryrefslogtreecommitdiff
path: root/src/checker/errors/settings/host_number.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker/errors/settings/host_number.cpp')
-rw-r--r--src/checker/errors/settings/host_number.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/checker/errors/settings/host_number.cpp b/src/checker/errors/settings/host_number.cpp
new file mode 100644
index 0000000..3580265
--- /dev/null
+++ b/src/checker/errors/settings/host_number.cpp
@@ -0,0 +1,36 @@
+#include "host_number.hpp"
+#include "managment/logger.hpp"
+#include <stdexcept>
+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;
+ }
+}