diff options
Diffstat (limited to 'server/src/main.cpp')
| -rw-r--r-- | server/src/main.cpp | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/server/src/main.cpp b/server/src/main.cpp index 6628712..779b610 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -9,14 +9,10 @@ constexpr std::string_view version{"0.1.0"}; int main(int argc, char* argv[]) { io::init(false); - // 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(); @@ -24,7 +20,7 @@ int main(int argc, char* argv[]) { client.gen_session(); client.write(tcp::packet_t(version, tcp::packet_type::write, client(), - tcp::packet_action::session)); + tcp::packet_id::session)); }); client_server.disconnect_event.add([&](tcp::client& client) { @@ -33,45 +29,55 @@ int main(int argc, char* argv[]) { 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); + + if (it != client_server().end()) { + 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(); - 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 id = packet.id; + + if (!packet) { + io::logger->warn("{} sent invalid packet.", ip); + + // client_server.disconnect_event.call(client); + return; + } - if (!packet) { - io::logger->info("{} sent invalid packet.", ip); + if (packet_session != session) { + io::logger->warn("{} sent wrong session id.", ip); - //client_server.disconnect_event.call(client); - return; - } + // client_server.disconnect_event.call(client); + return; + } - if (packet_session != session) { - io::logger->info("{} sent wrong session id.", ip); - io::logger->info("{} : {}", packet_session, session); + io::logger->info("{} : {}", packet_session, message); - //client_server.disconnect_event.call(client); - return; - } + if (id == tcp::packet_id::hwid) { + client.hwid = message; - io::logger->info("{} : {}", packet_session, message); + // client_server.bl().add({ip, message}); - if (action == tcp::packet_action::hwid) { - client.hwid = message; + io::logger->info("got hwid from {} : {}", ip, message); - io::logger->info("got hwid from {} : {}", ip, message); - } + if (client_server.bl().find(message)) { + io::logger->warn("{} is hwid banned.", ip); - client.write(tcp::packet_t(message, tcp::packet_type::write, session)); - }); + client_server.disconnect_event.call(client); + return; + } + } + + client.write(tcp::packet_t(message, tcp::packet_type::write, session)); + }); client_server.timeout_event.add([&](tcp::client& client) { client.cleanup(); @@ -80,7 +86,9 @@ int main(int argc, char* argv[]) { client_server().begin(), client_server().end(), [&](tcp::client& c) { return c.get_socket() == client.get_socket(); }); - client_server().erase(it); + if (it != client_server().end()) { + client_server().erase(it); + } io::logger->info("{} timed out.", client.get_ip()); }); |