aboutsummaryrefslogtreecommitdiff
path: root/server/src/main.cpp
diff options
context:
space:
mode:
authorauth <[email protected]>2020-07-11 17:09:27 +0200
committerauth <[email protected]>2020-07-11 17:09:27 +0200
commitf9b06df544c8134b5982b76f2d24aa93289f6d71 (patch)
tree052961cb2d76b7999a722745b120d4fcd0977860 /server/src/main.cpp
parentMore assembler implementations. (diff)
downloadloader-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.cpp78
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());
});