summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-server/Login/RemoteLogin.cpp
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
committerboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
commit77b52da44b263df4884be2f35f885d8edccbb6fa (patch)
tree54a9a07c67d507cb5120ae7e4ee86669dfec7c6b /csgo-loader/csgo-server/Login/RemoteLogin.cpp
parent1270999026bd77165edfffebfce277a34761710c (diff)
added new loader project :)
merry christmas
Diffstat (limited to 'csgo-loader/csgo-server/Login/RemoteLogin.cpp')
-rw-r--r--csgo-loader/csgo-server/Login/RemoteLogin.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/csgo-loader/csgo-server/Login/RemoteLogin.cpp b/csgo-loader/csgo-server/Login/RemoteLogin.cpp
new file mode 100644
index 0000000..880c072
--- /dev/null
+++ b/csgo-loader/csgo-server/Login/RemoteLogin.cpp
@@ -0,0 +1,51 @@
+#include <Login/RemoteLogin.hpp>
+
+#define EXPECTED_CLIENT_HEADER 0xDEADBEEF
+
+namespace Login {
+ bool RemoteLoginServer::Start(ByteArray &RawLoginHeader) {
+ if(RawLoginHeader.empty())
+ return false;
+
+ // Epic direct casts :---DDDD
+ m_Header = *reinterpret_cast<RemoteLoginHeader *>(&RawLoginHeader[0]);
+ return true;
+ }
+
+ RemoteLoginResponse RemoteLoginServer::GetLoginResponse() {
+ // The header seems to be wrong, tell the client to update.
+ if(m_Header.m_ClientHeader != EXPECTED_CLIENT_HEADER)
+ return RemoteLoginResponse::OUTDATED_CLIENT;
+
+ // TODO: Check login, HWID, bans with websockets.
+
+ // User failed to obtain HWID?
+ if(!m_Header.m_HardwareId) {
+ // TODO: Shadow ban the user.
+
+ //return RemoteLoginResponse::INVALID_HARDWARE;
+ }
+
+ // Checksum validation.
+ uint8_t Checksum = m_Header.m_IntegrityBit1
+ | m_Header.m_IntegrityBit2
+ | m_Header.m_IntegrityBit3;
+
+ if(Checksum || Checksum != m_Header.m_IntegrityBit4) {
+ // TODO: Shadow ban the user.
+ return RemoteLoginResponse::INTEGRITY_FAILURE;
+ }
+
+ // Assume that they are authorised to use the cheat.
+ return RemoteLoginResponse::ACCESS_SPECIAL_USER;
+ }
+
+ ByteArray RemoteLoginServer::GetResponse() {
+ // The way the server handles data transmission is homosexual.
+ // That is the only reason this autism is here.
+ ByteArray Response;
+ Response.push_back(GetLoginResponse());
+
+ return Response;
+ }
+} \ No newline at end of file