diff options
Diffstat (limited to 'server/server/config.cpp')
-rw-r--r-- | server/server/config.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp index d4602da..b6b343d 100644 --- a/server/server/config.cpp +++ b/server/server/config.cpp @@ -22,8 +22,10 @@ config::config(const char *pth) 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(); } const int config::get_int(const std::string& data, const char* var, int default_) { @@ -183,6 +185,30 @@ void config::load_static_proxy_list(char *pth) } } } +void config::load_firewall_list(char* pth) +{ + std::ifstream config; + if(!pth) + config.open("./firewall_list.cfg", 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; + firewall_list.push_back(line); + p2 = cfg_str.find(';', p1); + } + } +} const int config::ban_time() { @@ -228,4 +254,12 @@ std::list<static_proxy_entry> *config::get_static_proxy_list() { return &static_proxy_list; } +std::list<std::string> *config::get_firewall_list() +{ + return &firewall_list; +} +bool config::ignore_ssl_errors() +{ + return vars.ignore_ssl_errors; +} |