aboutsummaryrefslogtreecommitdiff
path: root/server/src/main.cpp
diff options
context:
space:
mode:
authorauth12 <[email protected]>2020-08-01 11:15:55 -0700
committerauth12 <[email protected]>2020-08-01 11:15:55 -0700
commit5bbda279685f52693d4f5d9cb1500e295e06fc1e (patch)
tree87cc4aa993afe879f8b5dffbbe7013dcf8e5dc44 /server/src/main.cpp
parentAdded server support for both x64 and x32 images with automatic selection. (diff)
downloadloader-5bbda279685f52693d4f5d9cb1500e295e06fc1e.tar.xz
loader-5bbda279685f52693d4f5d9cb1500e295e06fc1e.zip
Started security.
Diffstat (limited to 'server/src/main.cpp')
-rw-r--r--server/src/main.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/server/src/main.cpp b/server/src/main.cpp
index 2a50ecd..80dbe62 100644
--- a/server/src/main.cpp
+++ b/server/src/main.cpp
@@ -18,12 +18,23 @@ int main(int argc, char* argv[]) {
client_server.start();
+ uint16_t ver;
+ for(int i = 0; i < version.size(); ++i) {
+ if (i % 2) {
+ continue;
+ }
+
+ ver += static_cast<uint8_t>(version[i]) << 5;
+ }
+ io::logger->info("client version {}.", ver);
+
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(version, tcp::packet_type::write, client(),
tcp::packet_id::session));
@@ -163,11 +174,11 @@ int main(int argc, char* argv[]) {
}
json["result"] = tcp::client_response::login_success;
- json["games"]["notepad"] = {{"version", "0.1"},
+ json["games"]["notepad"] = {{"version", 1},
{"id", 0},
{"process", "notepad++.exe"},
{"x64", false}};
- json["games"]["sublime text"] = {{"version", "0.1"},
+ json["games"]["sublime text"] = {{"version", 1},
{"id", 1},
{"process", "sublime_text.exe"},
{"x64", true}};
@@ -382,6 +393,29 @@ int main(int argc, char* argv[]) {
io::logger->info("{} timed out.", client.get_ip());
});
+
+ commands cmds;
+ cmds.add("reload", [&]() {
+ for(auto&[key, image] : client_server.images) {
+ image.reload();
+ }
+
+ for(auto&[key, image] : client_server.images64) {
+ image.reload();
+ }
+ });
+
+ std::thread t1{[&](tcp::server &srv) {
+ while (srv) {
+ std::string cmd;
+ getline(std::cin, cmd);
+ if(!cmds.parse_input(cmd)) {
+ io::logger->warn("invalid command.");
+ }
+ };
+ }, std::ref(client_server)};
+ t1.detach();
+
std::thread t{tcp::server::monitor, std::ref(client_server)};
t.join();
}