diff options
| author | auth <[email protected]> | 2020-07-11 17:09:27 +0200 |
|---|---|---|
| committer | auth <[email protected]> | 2020-07-11 17:09:27 +0200 |
| commit | f9b06df544c8134b5982b76f2d24aa93289f6d71 (patch) | |
| tree | 052961cb2d76b7999a722745b120d4fcd0977860 /server/src/main.cpp | |
| parent | More assembler implementations. (diff) | |
| download | loader-f9b06df544c8134b5982b76f2d24aa93289f6d71.tar.xz loader-f9b06df544c8134b5982b76f2d24aa93289f6d71.zip | |
Added blacklist implementation on server.
Overall code cleanup and optimization.
Diffstat (limited to 'server/src/main.cpp')
| -rw-r--r-- | server/src/main.cpp | 78 |
1 files changed, 49 insertions, 29 deletions
diff --git a/server/src/main.cpp b/server/src/main.cpp index e7e0253..6628712 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -4,64 +4,84 @@ #include "server/server.h" #include "image/pe.h" -constexpr std::string_view client_version{"0.1.0"}; +constexpr std::string_view version{"0.1.0"}; int main(int argc, char* argv[]) { io::init(false); - //pe::image image("test.dll"); + // pe::image image("test.dll"); tcp::server client_server("6666"); client_server.start(); + // client_server.bl().add({"127.0.0.1", "qsmdlkjqsdmlkqmdsl"}); + client_server.connect_event.add([&](tcp::client& client) { auto ip = client.get_ip(); + + io::logger->info("{} connected.", ip); + client.gen_session(); - client.write(tcp::packet_t(client_version, tcp::packet_type::write, - client.get_session(), + client.write(tcp::packet_t(version, tcp::packet_type::write, client(), tcp::packet_action::session)); - - io::logger->info("{} connected", ip); }); client_server.disconnect_event.add([&](tcp::client& client) { client.cleanup(); - io::logger->info("{} disconnected", client.get_ip()); + auto it = std::find_if( + client_server().begin(), client_server().end(), + [&](tcp::client& c) { return c.get_socket() == client.get_socket(); }); + + client_server().erase(it); + + io::logger->info("{} disconnected.", client.get_ip()); }); - client_server.receive_event.add([&](tcp::packet_t& packet, tcp::client& client) { - auto session = client.get_session(); - auto packet_session = packet.session_id; - auto ip = client.get_ip(); - auto message = packet(); - auto action = packet.act; + client_server.receive_event.add( + [&](tcp::packet_t& packet, tcp::client& client) { + auto session = client(); + auto packet_session = packet.session_id; + auto ip = client.get_ip(); + auto message = packet(); + auto action = packet.act; - if (!packet) { - io::logger->info("{} sent invalid packet", ip); - return; - } + if (!packet) { + io::logger->info("{} sent invalid packet.", ip); - if (packet_session != session) { - io::logger->info("{} sent wrong session id", ip); - return; - } + //client_server.disconnect_event.call(client); + return; + } - io::logger->info("{} : {}", packet_session, message); + if (packet_session != session) { + io::logger->info("{} sent wrong session id.", ip); + io::logger->info("{} : {}", packet_session, session); - if(action == tcp::packet_action::hwid) { - client.hwid = message; + //client_server.disconnect_event.call(client); + return; + } - io::logger->info("got hwid from {} : {}", ip, message); - } + io::logger->info("{} : {}", packet_session, message); - //client.write(tcp::packet_t(message, tcp::packet_type::write, - //client.get_session())); - }); + if (action == tcp::packet_action::hwid) { + client.hwid = message; + + io::logger->info("got hwid from {} : {}", ip, message); + } + + client.write(tcp::packet_t(message, tcp::packet_type::write, session)); + }); client_server.timeout_event.add([&](tcp::client& client) { client.cleanup(); + + auto it = std::find_if( + client_server().begin(), client_server().end(), + [&](tcp::client& c) { return c.get_socket() == client.get_socket(); }); + + client_server().erase(it); + io::logger->info("{} timed out.", client.get_ip()); }); |