diff options
Diffstat (limited to 'server/server/config.cpp')
-rw-r--r-- | server/server/config.cpp | 105 |
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; +} |