summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/server/main.cpp42
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();
}