diff options
author | Alex Borisov <borisov.alexandr@rambler.ru> | 2011-12-03 15:16:33 +0200 |
---|---|---|
committer | Alex Borisov <borisov.alexandr@rambler.ru> | 2011-12-03 15:16:33 +0200 |
commit | f6cd6fd75ba16accbb165b8261f429b899ea2d14 (patch) | |
tree | 0075ea44d3ba3596622991a538c668dee53f2f8f | |
parent | 7e912594bcf490ffcbcd49c3530da66effb70cda (diff) | |
parent | 6a87e121161ba46e16b189639c9e304254235832 (diff) |
Merge branch 'master' of ssh://sss.chaoslab.ru//home/private_git/proxy_ui
-rw-r--r-- | server/server/main.cpp | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/server/server/main.cpp b/server/server/main.cpp index 94ef927..daa8a2d 100644 --- a/server/server/main.cpp +++ b/server/server/main.cpp @@ -663,11 +663,44 @@ void session::proto_parser(std::vector<byte>& data) 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"; + file.open(source.c_str()); + if(file.is_open()) + { + const int size = 8192; + int count = 0; + char buf[size]; + while(!file.eof()) + { + std::vector<byte> data; + file.read(buf, size); + count = file.gcount(); + data.push_back(0x13); + data.push_back(0x13); + data.push_back(0x12); + for(int i = 0; i < count; i++) + data.push_back(buf[i]); + data.push_back(0x14); + data.push_back(0x14); + data.push_back(0x0); //wtf ? + socket_.write_some(boost::asio::buffer(data)); + } + file.close(); + } + else + { + logger->lock(); + *logger<< time_str() << ": failed to open file "<<source<<" , request from "<<remote_ip<< " session " << this_sid << "\n"; + logger->unlock(); + break; + } + std::vector<byte> data; data.push_back(0x13); data.push_back(0x13); - data.push_back(0x11); - //TODO: add data here + data.push_back(0x12); data.push_back(0x14); data.push_back(0x14); write_w_response(data); @@ -726,7 +759,7 @@ void session::proto_parser(std::vector<byte>& data) file.open(uit->source.c_str()); if(file.is_open()) { - const int size = 4090; //адский костыль + const int size = 8192; int count = 0; char buf[size]; while(!file.eof()) @@ -742,8 +775,7 @@ void session::proto_parser(std::vector<byte>& data) data.push_back(0x14); data.push_back(0x14); data.push_back(0x0); //wtf ? - //write_wo_response(data); - socket_.write_some(boost::asio::buffer(data));//this may not work + socket_.write_some(boost::asio::buffer(data)); } file.close(); } |