diff options
Diffstat (limited to 'server/server/config.cpp')
-rw-r--r-- | server/server/config.cpp | 143 |
1 files changed, 123 insertions, 20 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp index 33a8124..2b28ed0 100644 --- a/server/server/config.cpp +++ b/server/server/config.cpp @@ -2,32 +2,56 @@ config::config(const char *pth) { - std::ifstream config; - if(!pth) { + std::ifstream config; + if(!pth) + { + std::string cfg_path = boost::filesystem::initial_path().string(); + cfg_path += "/server.cfg"; + config.open(cfg_path.c_str(), std::fstream::in); + } + else + config.open(pth, std::fstream::in); + if(config.is_open()) + { + 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.debug = get_int(cfg_str, "Debug=", 0); + vars.bind_ip = get_string(cfg_str, "BindAddress=", "0.0.0.0"); + vars.log_path = get_string(cfg_str, "LogPath=", "./server.log"); + vars.dos_log_path = get_string(cfg_str, "DosLogPath=", "./server_dos.log"); + vars.ignore_ssl_errors = get_int(cfg_str, "IgnoreSslErrors=", 0); + } + } + { + std::ifstream config; std::string cfg_path = boost::filesystem::initial_path().string(); - cfg_path += "/server.cfg"; + cfg_path += "/cli_config.cfg"; config.open(cfg_path.c_str(), std::fstream::in); + if(config.is_open()) + { + std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>()); + config.close(); + cvars.config_update_interval = get_int(cfg_str, "config_update_interval=", 300); + cvars.client_update_interval = get_int(cfg_str, "client_update_interval=", 60000); + cvars.welcome_msg = get_string(cfg_str, "welcome_msg=", ""); + cvars.cfg_downloaded_msg = get_string(cfg_str, "config_downloaded_msg=", ""); + cvars.top_text = get_string(cfg_str, "top_panel_text=", ""); + cvars.bottom_text = get_string(cfg_str, "bottom_panel_text=", ""); + cvars.speed_visibility = get_int(cfg_str, "speed_visibility=", 1); + } } - 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.debug = get_int(cfg_str, "Debug=", 0); - vars.bind_ip = get_string(cfg_str, "BindAddress=", "0.0.0.0"); - vars.log_path = get_string(cfg_str, "LogPath=", "./server.log"); - vars.dos_log_path = get_string(cfg_str, "DosLogPath=", "./server_dos.log"); - vars.ignore_ssl_errors = get_int(cfg_str, "IgnoreSslErrors=", 0); load_proxy_list(); load_static_proxy_list(); load_firewall_list(); load_deleted_list(); load_upload_list(); + load_servers_list(); } const int config::get_int(const std::string& data, const char* var, int default_) { @@ -58,6 +82,45 @@ const std::string config::get_string(const std::string& data, const char* var, c return default_; } +void config::load_servers_list(char* pth) +{ + std::ifstream config; + if(!pth) + { + std::string cfg_path = boost::filesystem::initial_path().string(); + cfg_path += "/server_list.cfg"; + config.open(cfg_path.c_str(), std::fstream::in); + } + else + config.open(pth, std::fstream::in); + std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>()); + config.close(); + if(!cfg_str.empty()) + { + std::string::size_type p1 = 0, p2 = 0, l = 1; + if(cfg_str.find("\r\n") != std::string::npos) + l = 2; + p2 = cfg_str.find(';'); + while(p2 != std::string::npos) + { + std::string line = cfg_str.substr(p1, p2-p1); + p1 = p2+l+1; + std::string::size_type lp1 = 0, lp2 = 0; + std::string serv, interval, timeout; + lp1++; + lp2 = line.find(" ", lp1); + serv = line.substr(lp1, lp2-lp1); + lp1 = lp2+1; + lp2 = line.find(' ', lp1); + interval = line.substr(lp1, lp2-lp1); + lp2++; + timeout = line.substr(lp2); + servers_list.push_back(conn_server(serv, atoi(interval.c_str()), atoi(timeout.c_str()))); + p2 = cfg_str.find(';', p1); + } + } +} + void config::load_upload_list(char *pth) { std::ifstream config; @@ -349,11 +412,11 @@ const std::string& config::dos_log_path() { return vars.dos_log_path; } -std::list<proxy_entry> *config::get_proxy_list() +std::list<config::proxy_entry> *config::get_proxy_list() { return &proxy_list; } -std::list<static_proxy_entry> *config::get_static_proxy_list() +std::list<config::static_proxy_entry> *config::get_static_proxy_list() { return &static_proxy_list; } @@ -366,7 +429,7 @@ std::list<std::string> *config::get_deleted_list() return &deleted_list; } -std::list<upload_entry> *config::get_upload_list() +std::list<config::upload_entry> *config::get_upload_list() { return &upload_list; } @@ -375,3 +438,43 @@ bool config::ignore_ssl_errors() { return vars.ignore_ssl_errors; } + +const int config::c_cfg_upd_int() +{ + return cvars.config_update_interval; +} + +const int config::c_cli_upd_int() +{ + return cvars.client_update_interval; +} + +bool config::c_speed_visibility() +{ + return cvars.speed_visibility; +} + +const std::string& config::c_welcome_msg() +{ + return cvars.welcome_msg; +} + +const std::string& config::c_cfg_download_msg() +{ + return cvars.cfg_downloaded_msg; +} + +const std::string& config::c_top_text() +{ + return cvars.top_text; +} + +const std::string& config::c_bottom_text() +{ + return cvars.bottom_text; +} + +std::list<config::conn_server> *config::get_server_list() +{ + return &servers_list; +} |