summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/server/main.cpp595
-rw-r--r--server/server/main.h56
2 files changed, 4 insertions, 647 deletions
diff --git a/server/server/main.cpp b/server/server/main.cpp
index ef6d475..62f7108 100644
--- a/server/server/main.cpp
+++ b/server/server/main.cpp
@@ -5,414 +5,7 @@
logtofile *logger, *dos_logger;
config *cfg;
-http_client::http_client(boost::asio::io_service& io_service, const std::string& new_server, const std::string& path, session* sess_, int request_type, server* serv_) : resolver_(io_service), socket_(io_service), io_service_(io_service)
- {
- // Form the request. We specify the "Connection: close" header so that the
- // server will close the socket after transmitting the response. This will
- // allow us to treat all data up until the EOF as the content.
- session_ = sess_;
- server_ = new_server;
- serv = serv_;
- std::ostream request_stream(&request_);
- if(cfg->debug())
- {
- logger->lock();
- *logger<< time_str() << ": Requesting: " << path << "for client " << session_->get_ip() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- request_stream << "GET " << path << " HTTP/1.0\r\n";
- request_stream << "Host: " << new_server << "\r\n";
- request_stream << "User-Agent: Internal Auth Client v0.0.0.1\r\n";
- request_stream << "Accept: */*\r\n";
- request_stream << "Connection: close\r\n\r\n";
-
- // Start an asynchronous resolve to translate the server and service names
- // into a list of endpoints.
- tcp::resolver::query query(new_server, "http");
- resolver_.async_resolve(query,
- boost::bind(&http_client::handle_resolve, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::iterator, request_type));
- }
-
-
-
-void http_client::request(const std::string& path, int request_type)
- {
-
- std::ostream request_stream(&request_);
- if(cfg->debug())
- {
- logger->lock();
- *logger<< time_str()<< ": Requesting: " << path << "for client " << session_->get_ip() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- request_stream << "GET " << path << " HTTP/1.0\r\n";
- request_stream << "Host: " << server_ << "\r\n";
- request_stream << "User-Agent: Internal Auth Client v0.0.0.1\r\n";
- request_stream << "Accept: */*\r\n";
- request_stream << "Connection: close\r\n\r\n";
-
- // Start an asynchronous resolve to translate the server and service names
- // into a list of endpoints.
- tcp::resolver::query query(server_, "http");
- resolver_.async_resolve(query,
- boost::bind(&http_client::handle_resolve, this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::iterator, request_type));
- }
-
-
-void http_client::handle_resolve(const boost::system::error_code& err, tcp::resolver::iterator endpoint_iterator, int request_type)
- {
- if (!err)
- {
- // Attempt a connection to the first endpoint in the list. Each endpoint
- // will be tried until we successfully establish a connection.
- tcp::endpoint endpoint = *endpoint_iterator;
- endpoint.port(cfg->ls_port());
- socket_.async_connect(endpoint,
- boost::bind(&http_client::handle_connect, this,
- boost::asio::placeholders::error, ++endpoint_iterator, request_type));
- }
- else
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client " << session_->get_ip() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-
-void http_client::handle_connect(const boost::system::error_code& err, tcp::resolver::iterator endpoint_iterator, int request_type)
- {
- if (!err)
- {
- // The connection was successful. Send the request.
- boost::asio::async_write(socket_, request_,
- boost::bind(&http_client::handle_write_request, this,
- boost::asio::placeholders::error, request_type));
- }
- else if (endpoint_iterator != tcp::resolver::iterator())
- {
- // The connection failed. Try the next endpoint in the list.
- socket_.close();
- tcp::endpoint endpoint = *endpoint_iterator;
- socket_.async_connect(endpoint,
- boost::bind(&http_client::handle_connect, this,
- boost::asio::placeholders::error, ++endpoint_iterator, request_type));
- }
- else
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client " << session_->get_ip() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-
-void http_client::handle_write_request(const boost::system::error_code& err, int request_type)
- {
- if (!err)
- {
- // Read the response status line. The response_ streambuf will
- // automatically grow to accommodate the entire line. The growth may be
- // limited by passing a maximum size to the streambuf constructor.
- if(socket_.is_open())
- boost::asio::async_read_until(socket_, response_, "\r\n",
- boost::bind(&http_client::handle_read_status_line, this,
- boost::asio::placeholders::error, request_type));
- }
- else
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client " << session_->get_ip() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-
-void http_client::handle_read_status_line(const boost::system::error_code& err, int request_type)
- {
- if (!err)
- {
- // Check that response is OK.
- std::istream response_stream(&response_);
- std::string http_version;
- response_stream >> http_version;
- unsigned int status_code;
- response_stream >> status_code;
- std::string status_message;
- std::getline(response_stream, status_message);
- if (!response_stream || http_version.substr(0, 5) != "HTTP/")
- {
- logger->lock();
- *logger << time_str() << ": Invalid response from LS" << "for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- return;
- }
- if (status_code != 200)
- {
- logger->lock();
- *logger << time_str() << ": Response returned with status code " << status_code << " for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- return;
- }
-
- // Read the response headers, which are terminated by a blank line.
- if(socket_.is_open())
- boost::asio::async_read_until(socket_, response_, "\r\n\r\n",
- boost::bind(&http_client::handle_read_headers, this,
- boost::asio::placeholders::error, request_type));
- }
- else
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-
-void http_client::handle_read_headers(const boost::system::error_code& err, int request_type)
- {
- if (!err)
- {
- // Process the response headers.
- std::istream response_stream(&response_);
- std::string header;
- while (std::getline(response_stream, header) && header != "\r")
- {
- if(cfg->debug())
- {
- logger->lock();
- *logger << header << "\n";
- logger->unlock();
- }
- }
- if(cfg->debug())
- {
- logger->lock();
- *logger << "\nfor client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
-
- // Write whatever content we already have to output.
- if (response_.size() > 0)
- {
-// response += boost::asio::buffer_cast<const char*>(response_.data());
- response_stream >> response;
- if(cfg->debug())
- {
- logger->lock();
- *logger << time_str() << ": have while processing headers: "<< response << " client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id()<< " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-
- // Start reading remaining data until EOF.
- if(socket_.is_open())
- boost::asio::async_read(socket_, response_,
- boost::asio::transfer_at_least(1),
- boost::bind(&http_client::handle_read_content, this,
- boost::asio::placeholders::error, request_type));
- }
- else
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- }
-void http_client::proto_parser(int request_type)
- {
- if(!request_type)
- {
- std::string::size_type p1 = 0, p2 = 0;
- p1 = response.find("0:");
- if(p1 != std::string::npos)
- { // error
- p1 += strlen("0:");
- const byte buf [] = {0x83, 0x83, 0xda, 0xb1, 0xdb, 0xaa, 0xab, 0x66, 0x66, 0xac, 0x84, 0x84}; //return failure to client
- std::vector<byte> vec(buf, buf+sizeof(buf));
- session_->write_w_close(vec);
- socket_.close();
- response.clear();
- logger->lock();
- *logger << time_str() << ": Master account auth fail for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- serv->auth_fail_increment(session_->get_ip(), session_->get_this_sid());
- return;
- }
- p1 = response.find("1:");
- if(p1 != std::string::npos)
- {
- //login success, send sid before account list
- const byte buf [] = {0x83, 0x83, 0xda, 0xb1, 0xdb, 0xaa, 0xab, 0x13, 0x13, 0xad};
- std::vector<byte> vec(buf, buf+sizeof(buf));
- std::string sid = get_random(12);
- session_->set_sid(sid);
- for(int i = 0; i < sid.length(); ++i)
- vec.push_back(sid[i]);
- vec.push_back(0xad);
- p1 += 2;
- std::list<account> local_accs;
- std::string acc_str;
- for(p2 = response.find("|", p1); p2 != std::string::npos;)
- {
- for(int i = 0; i < response.substr(p1, p2-p1).length(); ++i)
- {
- vec.push_back(response.substr(p1, p2-p1)[i]);
- acc_str.push_back(response.substr(p1, p2-p1)[i]);
- }
- {
- int access_level =0, ban_time = 0;
- std::string name;
- std::string::size_type p1 =0, p2 = 0;
- p2 = acc_str.find(",");
- if(p2 != std::string::npos)
- name.append(acc_str.substr(0, p2));
- p1 = p2 + 1;
- p2 = acc_str.find(",", p1);
- if(p2 != std::string::npos)
- access_level = atoi(acc_str.substr(p1, p2).c_str());
- p1 = p2 + 1;
- p2 = acc_str.length();
- ban_time = atoi(acc_str.substr(p1, p2).c_str());
- local_accs.push_back(account(name, access_level, ban_time));
- }
- acc_str.clear();
- vec.push_back(0xad);
- p1 = p2+1;
- p2 = response.find("|", p1);
- }
- p2 = response.length();
- for(int i = 0; i < response.substr(p1, p2-p1).length(); ++i)
- {
- vec.push_back(response.substr(p1, p2-p1)[i]);
- acc_str.push_back(response.substr(p1, p2-p1)[i]);
- }
- {
- int access_level =0, ban_time = 0;
- std::string name;
- std::string::size_type p1 =0, p2 = 0;
- p2 = acc_str.find(",");
- if(p2 != std::string::npos)
- name.append(acc_str.substr(0, p2));
- p1 = p2 + 1;
- p2 = acc_str.find(",", p1);
- if(p2 != std::string::npos)
- access_level = atoi(acc_str.substr(p1, p2).c_str());
- p1 = p2 + 1;
- p2 = acc_str.length();
- ban_time = atoi(acc_str.substr(p1, p2).c_str());
- local_accs.push_back(account(name, access_level, ban_time));
- }
- session_->set_accounts(local_accs);
- const byte end [] = {0xac, 0x84, 0x84};
- for(int i = 0; i < sizeof(end); ++i)
- vec.push_back(end[i]);
- session_->write_w_response(vec); //send success notification, sid and account list
- logger->lock();
- *logger << time_str() << ": Master account auth success for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- socket_.close();
- response.clear();
- return;
- }
- }
- if(request_type == 1) //subacc
- {
- std::string::size_type p1 = 0, p2 = 0;
- p1 = response.find("0:");
- if(p1 != std::string::npos)
- { // error
-// p1 += strlen("0:");
- const byte buf [] = {0x83, 0x83, 0xda, 0xb2, 0xdb, 0xaa, 0xab, 0x66, 0x66, 0xac, 0x84, 0x84}; //return failure to client
- std::vector<byte> vec(buf, buf+sizeof(buf));
- if(session_->get_fail_count() < cfg->invalid_sub_count())
- session_->write_w_response(vec);
- else
- session_->write_w_close(vec);
- socket_.close();
- response.clear();
- logger->lock();
- *logger << time_str() << ": sub account auth fail for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- session_->fail_count_increment();
- return;
- }
- p1 = response.find("1:");
- if(p1 != std::string::npos)
- {
- p1 +=2;
- const byte buf [] = {0x83, 0x83, 0xda, 0xb2, 0xdb, 0xaa, 0xab, 0x13, 0x13, 0xad};
- std::vector<byte> vec(buf, buf+sizeof(buf));
- p2 = response.length();
- for(int i = 0; i < response.substr(p1, p2-p1).length(); ++i)
- vec.push_back(response.substr(p1, p2-p1)[i]);
- const byte end [] = {0xac, 0x84, 0x84};
- for(int i = 0; i < sizeof(end); ++i)
- vec.push_back(end[i]);
- logger->lock();
- *logger << time_str() << ": sub account auth success for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- session_->write_w_response(vec); //send subacc access sid
- socket_.close();
- response.clear();
- return;
- }
- }
- }
-
-void http_client::handle_read_content(const boost::system::error_code& err, int request_type)
- {
- if (!err)
- {
- // Write all of the data that has been read so far.
- if(cfg->debug())
- {
- logger->lock();
- *logger << time_str() << ": Appending remain data... for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- std::istream response_stream(&response_);
- response_stream >> response;
-// response += boost::asio::buffer_cast<const char*>(response_.data());
-
- // Continue reading remaining data until EOF.
- boost::asio::async_read(socket_, response_,
- boost::asio::transfer_at_least(1),
- boost::bind(&http_client::handle_read_content, this,
- boost::asio::placeholders::error, request_type));
- }
- else if (err != boost::asio::error::eof)
- {
- logger->lock();
- *logger << time_str() << ": Error: " << err.message() << " for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() << "\n";
- logger->unlock();
- }
- else
- {
- if(cfg->debug())
- {
- logger->lock();
- *logger << "\n" << time_str()<< ": for client ip " << session_->get_ip()<< " login hash " << session_->get_lhash() << " Hardware ID " << session_->get_hardware_id() << " session " << session_->get_this_sid() <<": End of data.\n";
- logger->unlock();
- }
- proto_parser(request_type);
- }
- }
-/*http_client::~http_client()
-{
- try
- {
- socket_.close();
- }
- catch (std::exception& e)
- {
- logger->lock();
- *logger << time_str() << ": session delete exception: " << e.what() << "\n";
- logger->unlock();
- }
-}*/
//session
@@ -422,10 +15,8 @@ session::session(boost::asio::io_service& io_service, boost::asio::ssl::context&
recv_data_[0] = 0;
snd_data_[0] = 0;
fail_count = 0;
- http_client_ = NULL;
server_ = serv;
blacklisted = canceled = false;
- hardware_id = "Not received yet";
}
void session::cancel_thread(session *s, int minutes)
{
@@ -443,8 +34,6 @@ ssl_socket::lowest_layer_type& session::socket()
}
session::~session()
{
- if(http_client_)
- delete http_client_;
if(killer)
{
killer->interrupt();
@@ -637,58 +226,7 @@ void session::proto_parser(std::vector<byte>& data)
logger->lock();
*logger<< time_str() << ": recieved main account login info from " << remote_ip <<" session " << this_sid << "\n";
logger->unlock();
- std::vector<byte>::iterator p1 = std::search(local_data.begin(), local_data.end(), delim, delim + 2);
- if(p1 != local_data.end())
- {
- std::vector<byte>::iterator p2 = std::find(local_data.begin(), local_data.end(),data_c_delim);
- if(p2 != local_data.end())
- {
- p1 +=2;
- std::vector<byte> tmp_vec(p1, p2);
- std::string request = "/index.php?/8870ebc1484f13c87ce89f19a8cd1605/get_ga_list/lhash:";
- lhash.clear();
- for(int i = 0; i < tmp_vec.size(); i++)
- {
- request.push_back(tmp_vec[i]);
- lhash.push_back(tmp_vec[i]);
- }
- request.append(",phash:");
- ++p2;
- p1 = std::find(p2, local_data.end(),data_c_delim);
- if(p1 == local_data.end())
- {
- p1 = std::find(p2, local_data.end(),data_c_end);
- if(p1 == local_data.end())
- delete this;
- else
- {
- logger->lock();
- *logger<< time_str() << ": WARNING old client version, allowed old clients for now " << remote_ip <<" session " << this_sid << "\n";
- logger->unlock();
- }
- }
- tmp_vec.assign(p2, p1);
- for(int i = 0; i < tmp_vec.size(); i++)
- request.push_back(tmp_vec[i]);
- hardware_id.clear();
- ++p1;
- p2 = std::find(p1, local_data.end(),data_c_end);
- if(p2 != local_data.end())
- {
- tmp_vec.assign(p1, p2);
- for(int i = 0; i < tmp_vec.size(); i++)
- hardware_id.push_back(tmp_vec[i]);
- }
- request.append(",hwid:");
- request.append(hardware_id);
- request.push_back('/');
- if(http_client_)
- delete http_client_;
- http_client_ = new http_client(io_service_, cfg->ls_host(), request, this, 0, server_);
- }
- }
- else
- delete this;
+ delete this;
}
break;
case 0xa2: //subacc login request
@@ -698,77 +236,7 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- std::vector<byte>::iterator p1 = std::find(local_data.begin(), local_data.end(), sid_begin);
- if(p1 != local_data.end())
- {
- ++p1;
- if(accounts.empty())
- {
- delete this;
- break;
- }
- ///index.php?/[key]/get_ls_sid/mname:[mname],lname:[lname],pass:[sha1(pass)]
- std::string request = "/index.php?/8870ebc1484f13c87ce89f19a8cd1605/get_ga_sid/mname:", response_sid;
- for(; *p1 != sid_end; ++p1)
- response_sid.push_back(*p1);
- if(response_sid != sid)
- {
- logger->lock();
- *logger<<time_str()<<": Invalid sid from ip "<<remote_ip << " login hash " << lhash << " Hardware ID " << hardware_id << " session " << this_sid <<"\n";
- logger->unlock();
- const unsigned char buf [] = {0x83, 0x83, 0xDA, 0xB2, 0xDB, 0xAA, 0xAB, 0x66, 0x66, 0xAC, 0x84, 0x84}; //login denied
- memset(snd_data_, 0, 1024);
- for(int i = 0; i < sizeof(buf); i++)
- snd_data_[i] = buf[i];
- socket_.async_write_some(boost::asio::buffer(snd_data_, max_length), boost::bind(&session::handle_write_close, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
- }
- p1 = std::search(local_data.begin(), local_data.end(), delim, delim +2);
- if(p1 == local_data.end())
- {
- logger->lock();
- *logger<<time_str()<<": Data not found in request from ip "<<remote_ip << " login hash " << lhash << " Hardware ID " << hardware_id << " session " << this_sid<<"\n";
- logger->unlock();
- delete this;
- break;
- }
- p1 +=2;
- for(; *p1 != data_c_delim; ++p1)
- request.push_back(*p1);
- ++p1;
- request += ",lname:";
- std::string recvd_acc;
- for(; *p1 != data_c_delim; ++p1)
- {
- request.push_back(*p1);
- recvd_acc.push_back(*p1);
- }
- logger->lock();
- *logger<< time_str() << ": recieved subacc login info from ip "<<remote_ip << " login hash " << lhash << " Hardware ID " << hardware_id << " game account " << recvd_acc << " session " << this_sid <<"\n";
- logger->unlock();
- std::list<account>::iterator t_acc = std::find(accounts.begin(), accounts.end(), recvd_acc);
- if(t_acc == accounts.end() || t_acc->ban_time == -1)
- {
- logger->lock();
- *logger<<time_str()<<": account "<< recvd_acc << " not exist for ip " << remote_ip << " login hash " << lhash << " Hardware ID " << hardware_id << " session " << this_sid << "\n";
- logger->unlock();
- const byte buf [] = {0x83, 0x83, 0xda, 0xb2, 0xdb, 0xaa, 0xab, 0x66, 0x66, 0xac, 0x84, 0x84}; //return failure to client
- std::vector<byte> vec(buf, buf+sizeof(buf));
- write_w_close(vec);
- break;
- }
- ++p1;
- request += ",pass:";
- for(; *p1 != data_c_end; ++p1)
- request.push_back(*p1);
- request += ",ip:";
- request += remote_ip;
- request += ",hwid:";
- request += hardware_id;
- request.push_back('/');
- http_client_->request(request, 1); //request subacc sid
- }
- else
- delete this;
+ delete this;
}
break;
case 0xa3:
@@ -778,33 +246,7 @@ void session::proto_parser(std::vector<byte>& data)
delete this;
break;
}
- if(cfg->debug())
- {
- logger->lock();
- *logger<<time_str() << ": recieved ping request from ip "<<remote_ip << " login hash " << lhash << " Hardware ID " << hardware_id << " session " << this_sid<<"\n";
- logger->unlock();
- }
- std::vector<byte>::iterator p1 = std::search(local_data.begin(), local_data.end(), delim, delim + 2);
- if(p1 != local_data.end())
- {
- p1 +=2;
- if(*p1 == 0x14)
- {
- ++p1;
- if(*p1 == 0x14)
- {
- const unsigned char buf [] = {0x83, 0x83, 0xDA, 0xB3, 0xDB, 0xAA, 0xAB, 0x15, 0x15, 0xAC, 0x84, 0x84};
- memset(snd_data_, 0, 1024);
- for(int i = 0; i < sizeof(buf); i++)
- snd_data_[i] = buf[i];
- socket_.async_write_some(boost::asio::buffer(snd_data_, max_length), boost::bind(&session::handle_write, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
- }
- }
- else
- delete this;
- }
- else
- delete this;
+ delete this;
}
break;
default:
@@ -817,10 +259,6 @@ void session::proto_parser(std::vector<byte>& data)
}
}
}
-void session::set_accounts(std::list<account>& accs)
- {
- accounts.assign(accs.begin(), accs.end());
- }
void session::set_sid(std::string _sid)
{
sid = _sid;
@@ -972,33 +410,6 @@ void server::connections_increment(std::string ip, const std::string& l_sid)
}
}
}
-void server::auth_fail_increment(std::string ip, const std::string& l_sid)
-{
- if(!conns.empty())
- {
- std::list<conn_count>::iterator p = std::find(conns.begin(), conns.end(), ip);
- if(p != conns.end())
- {
- p->fail_count++;
- if(cfg->debug())
- {
- logger->lock();
- *logger<< time_str() << ": auth fail count from " << ip << " incremented, current value " << p->fail_count << " session "<< l_sid << "\n";
- logger->unlock();
- }
- }
- }
- else
- {
- conns.push_back(conn_count(ip, 1, 1));
- if(cfg->debug())
- {
- logger->lock();
- *logger<< time_str() << ": auth fail count from " << ip << " session "<< l_sid << " incremented, current value 1\n";
- logger->unlock();
- }
- }
-}
void server::flood_check_thread(std::list<conn_count> *list, std::list<std::string> *blacklist) //sort and clean blacklist ?
{
if(cfg->debug())
diff --git a/server/server/main.h b/server/server/main.h
index dbcb178..6ecc9d4 100644
--- a/server/server/main.h
+++ b/server/server/main.h
@@ -26,48 +26,6 @@ const byte reply_failure [] = {0x66, 0x66};
class session;
class server;
-
-class http_client
-{
-public:
- http_client(boost::asio::io_service& io_service, const std::string& new_server, const std::string& path, session* sess_, int request_type, server *serv);
-// ~http_client();
- void request(const std::string& path, int request_type);
-private:
- void handle_resolve(const boost::system::error_code& err, tcp::resolver::iterator endpoint_iterator, int request_type);
- void handle_connect(const boost::system::error_code& err, tcp::resolver::iterator endpoint_iterator, int request_type);
- void handle_write_request(const boost::system::error_code& err, int request_type);
- void handle_read_status_line(const boost::system::error_code& err, int request_type);
- void handle_read_headers(const boost::system::error_code& err, int request_type);
- void proto_parser(int request_type);
- void handle_read_content(const boost::system::error_code& err, int request_type);
-
- tcp::resolver resolver_;
- tcp::socket socket_;
- boost::asio::streambuf request_;
- boost::asio::streambuf response_;
- boost::asio::io_service& io_service_;
- session *session_;
- server *serv;
- std::string response, server_;
-};
-struct account
-{
- std::string name;
- int access_level, ban_time;
- account(const std::string& n, int lvl, int bt)
- {
- name = n;
- access_level = lvl;
- ban_time = bt;
- }
- const bool operator==(const std::string& n)
- {
- return this->name == n;
- }
-};
-
-
class session
{
public:
@@ -80,7 +38,6 @@ public:
void handle_write_close(const boost::system::error_code& error, size_t bytes_transferred);
void handle_auth_server_reply(const boost::system::error_code& error, size_t bytes_transferred);
void proto_parser(std::vector<byte>& data);
- void set_accounts(std::list<account>& accs);
void set_sid(std::string _sid);
void write_w_close(std::vector<byte>& data);
void write_w_response(std::vector<byte>& data);
@@ -89,18 +46,10 @@ public:
void set_cancel();
const int get_fail_count();
const std::string& get_ip();
- const std::string& get_lhash()
- {
- return lhash;
- }
const std::string& get_this_sid()
{
return this_sid;
}
- const std::string& get_hardware_id()
- {
- return hardware_id;
- }
void fail_count_increment();
void handle_operation(const boost::system::error_code& error, size_t bytes_transferred);
void handle_read(const boost::system::error_code& error, size_t bytes_transferred);
@@ -110,9 +59,7 @@ private:
unsigned char recv_data_[max_length];
unsigned char snd_data_[max_length];
boost::asio::io_service& io_service_;
- http_client *http_client_;
- std::string sid, remote_ip, lhash, hardware_id, this_sid;
- std::list<account> accounts;
+ std::string sid, remote_ip, this_sid;
server *server_;
bool blacklisted, canceled;
int fail_count;
@@ -152,7 +99,6 @@ public:
std::string get_password() const;
void handle_accept(session* new_session, const boost::system::error_code& error);
void connections_increment(std::string ip, const std::string& l_sid);
- void auth_fail_increment(std::string ip, const std::string& l_sid);
static void flood_check_thread(std::list<conn_count> *list, std::list<std::string> *blacklist);
static void blacklist_clean_thread(std::list<std::string> *list);
std::list<std::string>* get_blacklist();