summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rwxr-xr-xserver/server/config.cpp36
-rwxr-xr-xserver/server/main.cpp324
2 files changed, 243 insertions, 117 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp
index 4d9f960..ac0f95e 100755
--- a/server/server/config.cpp
+++ b/server/server/config.cpp
@@ -155,12 +155,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 +198,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 +262,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 +349,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 +430,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 +465,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;
diff --git a/server/server/main.cpp b/server/server/main.cpp
index 2fc1b18..4ac3c83 100755
--- a/server/server/main.cpp
+++ b/server/server/main.cpp
@@ -44,9 +44,12 @@ session::~session()
killer->interrupt();
delete killer;
}
- logger->lock();
- *logger << time_str() << ": Connection with ip "<< remote_ip << " session " << this_sid << " closed\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str() << ": Connection with ip "<< remote_ip << " session " << this_sid << " closed\n";
+ logger->unlock();
+ }
critical_mutex.unlock();
}
@@ -59,9 +62,12 @@ void session::start()
{
remote_ip = socket_.lowest_layer().remote_endpoint().address().to_string();
killer = new boost::thread(boost::bind(session::cancel_thread, this, cfg->conn_time()));
- logger->lock();
- *logger << time_str() << ": New incomming connection from "<< remote_ip << " session " << this_sid << "\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str() << ": New incomming connection from "<< remote_ip << " session " << this_sid << "\n";
+ logger->unlock();
+ }
std::list<std::string>* blacklist = server_->get_blacklist();
std::list<conn_count>* list = server_->get_connections_list();
if(!blacklist->empty())
@@ -71,9 +77,12 @@ void session::start()
{
if(*i == remote_ip)
{
- logger->lock();
- *logger << time_str() << ": session " << this_sid << " ip " << remote_ip << " is in blacklist\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str() << ": session " << this_sid << " ip " << remote_ip << " is in blacklist\n";
+ logger->unlock();
+ }
blacklisted = true;
break;
}
@@ -172,14 +181,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved config request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": config request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved config request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": config request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -287,9 +302,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": config request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": config request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -307,14 +325,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": proxy list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": proxy list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -413,9 +437,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": proxy list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": proxy list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -433,14 +460,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved static proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": static proxy list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved static proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": static proxy list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -531,9 +564,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": static proxy list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": static proxy list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -551,14 +587,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved firewall list request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": firewall list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved firewall list request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": firewall list request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -576,9 +618,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": firewall list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": firewall list request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -596,14 +641,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved existing files request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": existing files request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved existing files request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": existing files request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -633,9 +684,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": existing files request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": existing files request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -653,14 +707,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved files to del request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": files to del request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved files to del request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": files to del request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -678,9 +738,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": files to del request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": files to del request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -698,14 +761,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved client version request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": client version request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved client version request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": client version request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -717,9 +786,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": client version from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": client version from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -737,14 +809,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved client binary request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": client binary request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved client binary request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": client binary request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
std::ifstream file;
std::string source = boost::filesystem::initial_path().string();
source += "/client.exe";
@@ -773,9 +851,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": failed to open file "<<source<<" , request from "<<remote_ip<< " session " << this_sid << "\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": failed to open file "<<source<<" , request from "<<remote_ip<< " session " << this_sid << "\n";
+ logger->unlock();
+ }
break;
}
@@ -789,9 +870,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": client binary request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": client binary request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -809,14 +893,20 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- logger->lock();
- *logger<< time_str() << ": recieved file upload request from "<<remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
- if(!blacklisted)
+ if(cfg->debug())
{
logger->lock();
- *logger<< time_str() << ": file upload request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": recieved file upload request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
+ }
+ if(!blacklisted)
+ {
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": file upload request from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ logger->unlock();
+ }
it++;
std::string filename;
for(;;++it)
@@ -832,9 +922,12 @@ void session::proto_parser(std::vector<byte>& data)
std::list<config::upload_entry>::iterator uit = std::find(cfg->get_upload_list()->begin(), cfg->get_upload_list()->end(), config::s_i(filename, 1));
if(uit == cfg->get_upload_list()->end())
{
- logger->lock();
- *logger<< time_str() << ": file "<<filename << " not found in server upload_list, request from"<< remote_ip << " session " << this_sid <<"\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": file "<<filename << " not found in server upload_list, request from"<< remote_ip << " session " << this_sid <<"\n";
+ logger->unlock();
+ }
break;
}
std::ifstream file;
@@ -863,9 +956,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": failed to open file "<<uit->source<<" , request from "<<remote_ip<< " session " << this_sid << "\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": failed to open file "<<uit->source<<" , request from "<<remote_ip<< " session " << this_sid << "\n";
+ logger->unlock();
+ }
break;
}
@@ -879,9 +975,12 @@ void session::proto_parser(std::vector<byte>& data)
}
else
{
- logger->lock();
- *logger<< time_str() << ": file upload request from "<<remote_ip << " session " << this_sid <<" are denied \n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger<< time_str() << ": file upload request from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ logger->unlock();
+ }
std::vector<byte> data;
data.push_back(0x13);
data.push_back(0x13);
@@ -985,9 +1084,12 @@ void session::handle_read(const boost::system::error_code& error, size_t bytes_t
}
catch (std::exception& e)
{
- logger->lock();
- *logger << time_str() << ": read handler exception: " << e.what() << "\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str() << ": read handler exception: " << e.what() << "\n";
+ logger->unlock();
+ }
}
}
//server
@@ -1001,20 +1103,29 @@ server::server(boost::asio::io_service& io_service, unsigned short port) : io_se
tmp_path = b_path;
tmp_path.append("/ca.crt");
context_.load_verify_file(tmp_path, err);
- logger->lock();
- *logger << time_str()<<": Openning verify cert: " << tmp_path << " " << err.message()<<"\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str()<<": Openning verify cert: " << tmp_path << " " << err.message()<<"\n";
+ logger->unlock();
+ }
tmp_path = b_path;
tmp_path.append("/server.crt");
context_.use_certificate_file(tmp_path, boost::asio::ssl::context::pem, err);
- logger->lock();
- *logger << time_str()<<": Openning server cert file: " << tmp_path << " " << err.message()<<"\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str()<<": Openning server cert file: " << tmp_path << " " << err.message()<<"\n";
+ logger->unlock();
+ }
tmp_path.replace(tmp_path.length() - 3, 3, "key");
context_.use_private_key_file(tmp_path, boost::asio::ssl::context::pem, err);
- logger->lock();
- *logger << time_str()<<": Openning server key file: " << tmp_path << " " << err.message()<<"\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str()<<": Openning server key file: " << tmp_path << " " << err.message()<<"\n";
+ logger->unlock();
+ }
flood_chek = new boost::thread(boost::bind(flood_check_thread, &conns, &blacklist));
blacklist_clean = new boost::thread(boost::bind(blacklist_clean_thread, &blacklist));
@@ -1239,9 +1350,12 @@ int main(int argc, char* argv[])
}
catch (std::exception& e)
{
- logger->lock();
- *logger << time_str() << ": main thread exception: " << e.what() << " (this is bad)\n";
- logger->unlock();
+ if(cfg->debug())
+ {
+ logger->lock();
+ *logger << time_str() << ": main thread exception: " << e.what() << " (this is bad)\n";
+ logger->unlock();
+ }
}
boost::this_thread::sleep(boost::posix_time::seconds(2));
}