summaryrefslogtreecommitdiff
path: root/src/checker/errors/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker/errors/settings')
-rw-r--r--src/checker/errors/settings/host_number.cpp36
-rw-r--r--src/checker/errors/settings/host_number.hpp17
-rw-r--r--src/checker/errors/settings/port_number.cpp48
-rw-r--r--src/checker/errors/settings/port_number.hpp17
4 files changed, 65 insertions, 53 deletions
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 <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;
- }
-}
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 <stdexcept>
+
+#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;
+ };
+}
+
+