summaryrefslogtreecommitdiff
path: root/server/server/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/server/config.cpp')
-rwxr-xr-xserver/server/config.cpp120
1 files changed, 63 insertions, 57 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp
index 4d9f960..6d945d3 100755
--- a/server/server/config.cpp
+++ b/server/server/config.cpp
@@ -1,5 +1,7 @@
#include "headers.h"
+extern logtofile *logger;
+
void reload_config_thread_func(config *cfg, boost::mutex *m)
{
while(!boost::this_thread::interruption_requested())
@@ -7,30 +9,38 @@ void reload_config_thread_func(config *cfg, boost::mutex *m)
boost::this_thread::sleep(boost::posix_time::seconds(cfg->config_reload_interval()));
if(boost::this_thread::interruption_requested())
return;
+ m->lock();
cfg->load_vars();
cfg->load_cvars();
- m->lock();
cfg->load_proxy_list();
cfg->load_static_proxy_list();
- m->unlock();
cfg->load_firewall_list();
cfg->load_deleted_list();
cfg->load_upload_list();
cfg->load_servers_list();
+ m->unlock();
}
}
-void speed_test_thread_func(int check_interval, std::list<config::proxy_entry>* proxy_list, std::list<config::static_proxy_entry> *static_proxy_list, const std::string& test_url, boost::mutex *m)
+void speed_test_thread_func(config *cfg, int check_interval, std::list<config::proxy_entry>* proxy_list, std::list<config::static_proxy_entry> *static_proxy_list, const std::string& test_url, boost::mutex *m)
{
while(!boost::this_thread::interruption_requested())
{
m->lock();
-// logtofile *l = new logtofile(std::string(boost::filesystem::initial_path().string() + "/proxy_test_info").c_str());
for(std::list<config::static_proxy_entry>::iterator i = static_proxy_list->begin(), end = static_proxy_list->end(); i != end; ++i)
{
speedtest t(test_url);
- //*l<<i->host<<" "<<(int)t.test(&(*i))<<"\n";
- t.test(&(*i));
+ int sp = (int)t.test(&(*i));
+ if(cfg->log_speed())
+ {
+ char port[10];
+ snprintf(port, 9, "%d", i->port);
+ while(!logger)
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ logger->lock();
+ *logger << time_str() << ": "<<i->host<<":"<<port<<"\tspeed: "<<sp<<"b/s\n";
+ logger->unlock();
+ }
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
/* for(std::list<config::proxy_entry>::iterator i = proxy_list->begin(), end = proxy_list->end(); i != end; ++i)
@@ -61,6 +71,7 @@ void config::load_vars()
vars.conn_time = get_int(cfg_str, "ConnectionTimeOut=", 60);
vars.dos_conn_count = get_int(cfg_str, "DosConnectionCount=", 100);
vars.debug = get_int(cfg_str, "Debug=", 0);
+ vars.log_speed = get_int(cfg_str, "LogSpeed=", 0);
vars.bind_ip = get_string(cfg_str, "BindAddress=", "0.0.0.0");
vars.log_path = get_string(cfg_str, "LogPath=", "");
vars.dos_log_path = get_string(cfg_str, "DosLogPath=", "");
@@ -75,17 +86,24 @@ void config::load_cvars()
{
std::ifstream config;
config.open(cli_config_path.c_str(), std::fstream::in);
- if(config.is_open())
+ if(!config.is_open())
+ return;
+ if(!cvars.empty())
+ cvars.clear();
+ std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
+ config.close();
+ if(!cfg_str.empty())
{
- 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);
+ 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)
+ {
+ cvars.push_back(cfg_str.substr(p1, p2-p1));
+ p1 = p2+l+1;
+ p2 = cfg_str.find(';', p1);
+ }
}
}
@@ -113,7 +131,7 @@ config::config(const char *pth): cfg_reload_thr(NULL), speed_test_thr(NULL)
load_upload_list();
load_servers_list();
cfg_reload_thr = new boost::thread(boost::bind(reload_config_thread_func, this, &lists_mutex));
- speed_test_thr = new boost::thread(boost::bind(speed_test_thread_func, vars.proxy_check_interval, &proxy_list, &static_proxy_list, vars.speed_test_file_url, &lists_mutex));
+ speed_test_thr = new boost::thread(boost::bind(speed_test_thread_func, this, vars.proxy_check_interval, &proxy_list, &static_proxy_list, vars.speed_test_file_url, &lists_mutex));
}
const int config::get_int(const std::string& data, const char* var, int default_)
{
@@ -155,12 +173,14 @@ void config::load_servers_list(char* pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!servers_list.empty())
+ servers_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!servers_list.empty())
- servers_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
if(cfg_str.find("\r\n") != std::string::npos)
l = 2;
@@ -196,12 +216,14 @@ void config::load_upload_list(char *pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!upload_list.empty())
+ upload_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!upload_list.empty())
- upload_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
if(cfg_str.find("\r\n") != std::string::npos)
l = 2;
@@ -258,12 +280,14 @@ void config::load_proxy_list(char *pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!proxy_list.empty())
+ proxy_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!proxy_list.empty())
- proxy_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
if(cfg_str.rfind("\r\n") != std::string::npos)
l = 2;
@@ -343,12 +367,14 @@ void config::load_static_proxy_list(char *pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!static_proxy_list.empty())
+ static_proxy_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!static_proxy_list.empty())
- static_proxy_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
if(cfg_str.rfind("\r\n") != std::string::npos)
l = 2;
@@ -422,12 +448,14 @@ void config::load_firewall_list(char* pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!firewall_list.empty())
+ firewall_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!firewall_list.empty())
- firewall_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
// if(cfg_str.find("\r\n") != std::string::npos)
// l = 2;
@@ -455,12 +483,14 @@ void config::load_deleted_list(char* pth)
}
else
config.open(pth, std::fstream::in);
+ if(!config.is_open())
+ return;
+ if(!deleted_list.empty())
+ deleted_list.clear();
std::string cfg_str((std::istreambuf_iterator<char>(config)), std::istreambuf_iterator<char>());
config.close();
if(!cfg_str.empty())
{
- if(!deleted_list.empty())
- deleted_list.clear();
std::string::size_type p1 = 0, p2 = 0, l = 1;
if(cfg_str.find("\r\n") != std::string::npos)
l = 2;
@@ -539,40 +569,16 @@ bool config::ignore_ssl_errors()
return vars.ignore_ssl_errors;
}
-const int config::c_cfg_upd_int()
+bool config::log_speed()
{
- return cvars.config_update_interval;
+ return vars.log_speed;
}
-const int config::c_cli_upd_int()
+std::list<std::string>* config::cli_cfg()
{
- return cvars.client_update_interval;
+ return &cvars;
}
-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;
-}
const std::string& config::speed_test_file_url()
{
return vars.speed_test_file_url;