summaryrefslogtreecommitdiff
path: root/server/server/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/server/config.cpp')
-rw-r--r--server/server/config.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp
new file mode 100644
index 0000000..e145b4a
--- /dev/null
+++ b/server/server/config.cpp
@@ -0,0 +1,105 @@
+#include "headers.h"
+
+config::config(const char *pth)
+{
+ std::ifstream config;
+ if(!pth)
+ config.open("/etc/aion_otp", std::fstream::out);
+ else
+ config.open(pth, std::fstream::in);
+ std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
+ config.close();
+ vars.ban_time = get_int(cfg_str, "BanTime=", 60);
+ vars.check_interval = get_int(cfg_str, "ConnListCheckInterval=", 30);
+ vars.conn_count = get_int(cfg_str, "ConnectionCount=", 30);
+ vars.conn_time = get_int(cfg_str, "ConnectionTimeOut=", 60);
+ vars.dos_conn_count = get_int(cfg_str, "DosConnectionCount=", 200);
+ vars.invalid_ml_count = get_int(cfg_str, "MainAccountInvalidLoginCount=", 10);
+ vars.invalid_sub_count = get_int(cfg_str, "SubAccountInvalidLoginCount=", 3);
+ vars.ls_port = get_int(cfg_str, "LSServerPort=", 80);
+ vars.debug = get_int(cfg_str, "Debug=", 0);
+ vars.bind_ip = get_string(cfg_str, "BindAddress=", "0.0.0.0");
+ vars.ls_host = get_string(cfg_str, "LSServerHost=", "ls.aionlegend.ru");
+ vars.log_path = get_string(cfg_str, "LogPath=", "/var/log/aion_otp");
+ vars.dos_log_path = get_string(cfg_str, "DosLogPath=", "/var/log/aion_otp_dos");
+}
+const int config::get_int(const std::string& data, const char* var, int default_)
+{
+ std::string::size_type p1 = 0, p2 = 0;
+ p1 = data.find(var);
+ if(p1 != std::string::npos)
+ {
+ p2 = data.find(";", p1);
+ if(p2 == std::string::npos)
+ p2 = data.length();
+ p1+=strlen(var);
+ return atoi(data.substr(p1, p2-p1).c_str());
+ }
+ return default_;
+}
+const std::string config::get_string(const std::string& data, const char* var, const std::string& default_)
+{
+ std::string::size_type p1 = 0, p2 = 0;
+ p1 = data.find(var);
+ if(p1 != std::string::npos)
+ {
+ p2 = data.find(";", p1);
+ if(p2 == std::string::npos)
+ p2 = data.length();
+ p1+=strlen(var);
+ return data.substr(p1, p2-p1).c_str();
+ }
+ return default_;
+}
+const int config::ban_time()
+{
+ return vars.ban_time;
+}
+const int config::invalid_ml_count()
+{
+ return vars.invalid_ml_count;
+}
+const int config::conn_count()
+{
+ return vars.conn_count;
+}
+const int config::conn_time()
+{
+ return vars.conn_time;
+}
+const int config::check_interval()
+{
+ return vars.check_interval;
+}
+const int config::invalid_sub_count()
+{
+ return vars.invalid_sub_count;
+}
+const int config::ls_port()
+{
+ return vars.ls_port;
+}
+const int config::debug()
+{
+ return vars.debug;
+}
+const int config::dos_conn_count()
+{
+ return vars.dos_conn_count;
+}
+const std::string& config::ls_host()
+{
+ return vars.ls_host;
+}
+const std::string& config::bind_ip()
+{
+ return vars.bind_ip;
+}
+const std::string& config::log_path()
+{
+ return vars.log_path;
+}
+const std::string& config::dos_log_path()
+{
+ return vars.dos_log_path;
+}