#include #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(&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 if the user is banned. //return RemoteLoginResponse::USER_BANNED; // TODO: Login the user. if(strcmp(m_Header.m_Username, "betauser")) return RemoteLoginResponse::INVALID_CREDENTIALS; if(strcmp(m_Header.m_Password, "betapassword")) return RemoteLoginResponse::INVALID_CREDENTIALS; // User failed to obtain HWID? if(!m_Header.m_HardwareId) { // TODO: Shadow ban the user. return RemoteLoginResponse::INVALID_HARDWARE; } // TODO: Check if the HWID is present in DB. if(false) return RemoteLoginResponse::INVALID_HARDWARE; // TODO: Check if the user has a subscription. if(false) return RemoteLoginResponse::NO_SUBSCRIPTION; // 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; } // TODO: Check if they have beta access. if(true) return RemoteLoginResponse::ACCESS_SPECIAL_USER; return RemoteLoginResponse::ACCESS_AUTHORISED; } 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; } }