summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/server/main.cpp88
1 files changed, 82 insertions, 6 deletions
diff --git a/server/server/main.cpp b/server/server/main.cpp
index 2c171ce..0c89281 100644
--- a/server/server/main.cpp
+++ b/server/server/main.cpp
@@ -162,12 +162,12 @@ void session::proto_parser(std::vector<byte>& data)
break;
}
logger->lock();
- *logger<< time_str() << ": recieved request type 1 "<<remote_ip << " session " << this_sid <<"\n";
+ *logger<< time_str() << ": recieved config request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
if(!blacklisted)
{
logger->lock();
- *logger<< time_str() << ": request type 1 from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *logger<< time_str() << ": config request from "<<remote_ip<< " session " << this_sid << " are permited \n";
logger->unlock();
std::vector<byte> data;
data.push_back(0x13);
@@ -181,7 +181,7 @@ void session::proto_parser(std::vector<byte>& data)
else
{
logger->lock();
- *logger<< time_str() << ": request type 1 from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ *logger<< time_str() << ": config request from "<<remote_ip << " session " << this_sid <<" are denied \n";
logger->unlock();
std::vector<byte> data;
data.push_back(0x13);
@@ -201,12 +201,12 @@ void session::proto_parser(std::vector<byte>& data)
break;
}
logger->lock();
- *logger<< time_str() << ": recieved request type 1 "<<remote_ip << " session " << this_sid <<"\n";
+ *logger<< time_str() << ": recieved proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
logger->unlock();
if(!blacklisted)
{
logger->lock();
- *logger<< time_str() << ": request type 1 from "<<remote_ip<< " session " << this_sid << " are permited \n";
+ *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);
@@ -262,7 +262,83 @@ void session::proto_parser(std::vector<byte>& data)
else
{
logger->lock();
- *logger<< time_str() << ": request type 1 from "<<remote_ip << " session " << this_sid <<" are denied \n";
+ *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);
+ data.push_back(0x66);
+ data.push_back(0x14);
+ data.push_back(0x14);
+ write_w_close(data);
+ }
+ }
+ break;
+ case 0x04: // static proxy list request
+ {
+ if(canceled)
+ {
+ delete this;
+ break;
+ }
+ logger->lock();
+ *logger<< time_str() << ": recieved static proxy list request from "<<remote_ip << " session " << this_sid <<"\n";
+ logger->unlock();
+ if(!blacklisted)
+ {
+ 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);
+ data.push_back(0x04);
+ for(std::list<static_proxy_entry>::iterator it = cfg->get_static_proxy_list()->begin(), end = cfg->get_static_proxy_list()->end(); it != end; ++it)
+ {
+ if(!it->login.empty() && !it->password.empty())
+ {
+ for(int i = 0; i < it->login.size(); ++ i)
+ data.push_back(it->login[i]);
+ data.push_back(':');
+ for(int i = 0; i < it->password.size(); ++ i)
+ data.push_back(it->password[i]);
+ data.push_back('@');
+ }
+ for(int i = 0; i < it->host.size(); ++ i)
+ data.push_back(it->host[i]);
+ data.push_back(':');
+ {
+ char port[8];
+ snprintf(port, 8, "%d", it->port);
+ int len = strlen(port);
+ for(int i = 0; i < len; ++i)
+ data.push_back(port[i]);
+ }
+ data.push_back(' ');
+ data.push_back('"');
+ for(int i = 0; i < it->label.size(); ++ i)
+ data.push_back(it->label[i]);
+ data.push_back('"');
+ data.push_back(' ');
+ {
+ char pos[4];
+ snprintf(pos, 4, "%d", it->position);
+ int len = strlen(pos);
+ for(int i = 0; i < len; ++i)
+ data.push_back(pos[i]);
+ }
+ data.push_back(' ');
+ data.push_back('0'); //add speed here
+ data.push_back(';');
+ }
+ data.push_back(0x14);
+ data.push_back(0x14);
+ write_w_close(data);
+ }
+ else
+ {
+ 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);