diff options
| author | auth <[email protected]> | 2020-07-17 00:27:29 +0200 |
|---|---|---|
| committer | auth <[email protected]> | 2020-07-17 00:27:29 +0200 |
| commit | eeafa0b030a017c02d11f95c3efe2f361afbdacf (patch) | |
| tree | edb938f74f3abbafc7937047a107174213c2aa57 /server/src | |
| parent | Client login handling on server. (diff) | |
| download | loader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.tar.xz loader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.zip | |
Added injection placeholders.
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/forum/forum.cpp | 23 | ||||
| -rw-r--r-- | server/src/image/pe.h | 11 | ||||
| -rw-r--r-- | server/src/main.cpp | 3 | ||||
| -rw-r--r-- | server/src/server/packet.h | 15 | ||||
| -rw-r--r-- | server/src/server/server.h | 1 |
5 files changed, 43 insertions, 10 deletions
diff --git a/server/src/forum/forum.cpp b/server/src/forum/forum.cpp index ed2ae58..a714cc6 100644 --- a/server/src/forum/forum.cpp +++ b/server/src/forum/forum.cpp @@ -41,16 +41,31 @@ int xenforo_forum::check_login(const std::string_view username, auto json = nlohmann::json::parse(response); - data.banned = json["user"]["is_banned"].get<bool>(); + if(!json.contains("user")) { + io::logger->error("json response for user {} doesn't contain user field.", + username); + return forum_response::api_fail; + } + + auto user = json["user"]; + + if (!user.contains("custom_fields")) { + io::logger->error( + "json response for user {} doesn't contain custom fields.", username); + return forum_response::api_fail; + } + + auto custom_fields = user["custom_fields"]; + + data.banned = user["is_banned"].get<bool>(); // data.active = check user groupm - auto custom_fields = json["user"]["custom_fields"]; if (custom_fields.contains("hwid")) { - data.hwid = json["user"]["custom_fields"]["hwid"].get<std::string>(); + data.hwid = custom_fields["hwid"].get<std::string>(); } else { io::logger->warn("hwid field doesn't exist for {}.", username); } - data.id = json["user"]["user_id"].get<int>(); + data.id = user["user_id"].get<int>(); return forum_response::api_success; } diff --git a/server/src/image/pe.h b/server/src/image/pe.h index c642672..2199411 100644 --- a/server/src/image/pe.h +++ b/server/src/image/pe.h @@ -28,6 +28,9 @@ class image { std::vector<std::pair<uint32_t, win::reloc_entry_t>> m_relocs; public: + image() = default; + ~image() = default; + image(const std::string_view name) : m_image{nullptr} { if (!io::read_file(name, m_buffer)) { io::logger->error("failed to load image {}.", name); @@ -117,12 +120,12 @@ class image { } } - const auto operator()() { return m_image; } + const auto operator->() { return m_image; } operator bool() const { return m_image != nullptr; } - auto imports() const { return m_imports; } - auto relocs() const { return m_relocs; } - auto sections() const { return m_sections; } + auto &imports() const { return m_imports; } + auto &relocs() const { return m_relocs; } + auto §ions() const { return m_sections; } std::string get_json_imports() { nlohmann::json json; diff --git a/server/src/main.cpp b/server/src/main.cpp index d70b4cf..81de12e 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -2,7 +2,6 @@ #include "util/io.h" #include "util/commands.h" #include "server/server.h" -#include "image/pe.h" constexpr std::string_view version{"0.1.0"}; @@ -138,6 +137,8 @@ int main(int argc, char* argv[]) { } json["result"] = tcp::client_response::login_success; + json["games"]["csgo"] = {{"version", 1.2}, {"id", 0}}; + json["games"]["csgo beta"] = {{"version", 1.2}, {"id", 1}}; client.write(tcp::packet_t(json.dump(), tcp::packet_type::write, session, tcp::packet_id::login_resp)); diff --git a/server/src/server/packet.h b/server/src/server/packet.h index 203382e..77bca7b 100644 --- a/server/src/server/packet.h +++ b/server/src/server/packet.h @@ -9,7 +9,20 @@ constexpr size_t message_len = 512; enum packet_type { write = 0, read }; -enum packet_id { message = 0, hwid, session, login_req, login_resp, process_list, ban }; +enum packet_id { + message = 0, + hwid, + session, + login_req, + login_resp, + process_list, + ban, + game_select, + image_req, + image_resp, + import_req, + import_resp +}; struct packet_t { std::string message; diff --git a/server/src/server/server.h b/server/src/server/server.h index 7fa5dc4..738558b 100644 --- a/server/src/server/server.h +++ b/server/src/server/server.h @@ -3,6 +3,7 @@ #include "../util/events.h" #include "../client/blacklist.h" #include "../forum/forum.h" +#include "../image/pe.h" #include "ssl.h" namespace tcp { |