aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authorauth <[email protected]>2020-07-17 00:27:29 +0200
committerauth <[email protected]>2020-07-17 00:27:29 +0200
commiteeafa0b030a017c02d11f95c3efe2f361afbdacf (patch)
treeedb938f74f3abbafc7937047a107174213c2aa57 /server/src
parentClient login handling on server. (diff)
downloadloader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.tar.xz
loader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.zip
Added injection placeholders.
Diffstat (limited to 'server/src')
-rw-r--r--server/src/forum/forum.cpp23
-rw-r--r--server/src/image/pe.h11
-rw-r--r--server/src/main.cpp3
-rw-r--r--server/src/server/packet.h15
-rw-r--r--server/src/server/server.h1
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 &sections() 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 {