feat(net): handle get version proof

This commit is contained in:
fallenoak 2023-01-09 07:49:49 -06:00 committed by GitHub
parent 59a0883529
commit 85a9f8bde8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 4 deletions

View File

@ -11,11 +11,12 @@ class Grunt::ClientResponse {
virtual bool Connected(const NETADDR& addr) = 0;
virtual bool OnlineIdle() = 0;
virtual void GetLogonMethod() = 0;
virtual void GetVersionProof(const uint8_t* a2) = 0;
virtual void GetVersionProof(const uint8_t* crcSalt) = 0;
virtual void SetPinInfo(bool enabled, uint32_t a3, const uint8_t* a4) = 0;
virtual void SetMatrixInfo(bool enabled, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, bool a7, uint8_t a8, uint64_t a9, const uint8_t* a10, uint32_t a11) = 0;
virtual void SetTokenInfo(bool enabled, uint8_t required) = 0;
virtual void LogonResult(Result result, const uint8_t* a3, uint32_t a4, uint16_t a5) = 0;
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state) = 0;
virtual void GetRealmList() = 0;
virtual void Logon(const char* a2, const char* a3) = 0;
virtual void Logoff() = 0;

View File

@ -88,8 +88,14 @@ void GruntLogin::GetRealmList() {
// TODO
}
void GruntLogin::GetVersionProof(const uint8_t* a2) {
// TODO
void GruntLogin::GetVersionProof(const uint8_t* crcSalt) {
if (this->IsReconnect()) {
// TODO
} else {
memcpy(this->m_crcSalt, crcSalt, sizeof(this->m_crcSalt));
LOGIN_STATE nextState = this->NextSecurityState(LOGIN_STATE_FIRST_SECURITY);
this->m_loginResponse->UpdateLoginStatus(nextState, LOGIN_OK, nullptr, 0);
}
}
void GruntLogin::Init(LoginResponse* loginResponse) {
@ -133,6 +139,11 @@ void GruntLogin::LogonResult(Grunt::Result result, const uint8_t* a3, uint32_t a
// TODO
}
LOGIN_STATE GruntLogin::NextSecurityState(LOGIN_STATE state) {
// TODO
return LOGIN_STATE_CHECKINGVERSIONS;
}
void GruntLogin::SetMatrixInfo(bool enabled, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, bool a7, uint8_t a8, uint64_t a9, const uint8_t* a10, uint32_t a11) {
// TODO
}

View File

@ -8,17 +8,19 @@
class GruntLogin : public Login {
public:
// Member variables
uint8_t m_crcSalt[16];
Grunt::ClientLink* m_clientLink = nullptr;
// Virtual member functions
virtual ~GruntLogin();
virtual bool Connected(const NETADDR& addr);
virtual void GetLogonMethod();
virtual void GetVersionProof(const uint8_t* a2);
virtual void GetVersionProof(const uint8_t* crcSalt);
virtual void SetPinInfo(bool enabled, uint32_t a3, const uint8_t* a4);
virtual void SetMatrixInfo(bool enabled, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, bool a7, uint8_t a8, uint64_t a9, const uint8_t* a10, uint32_t a11);
virtual void SetTokenInfo(bool enabled, uint8_t tokenRequired);
virtual void LogonResult(Grunt::Result result, const uint8_t* a3, uint32_t a4, uint16_t a5);
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state);
virtual void GetRealmList();
virtual void Logon(const char* a2, const char* a3);
virtual void Logoff();

View File

@ -0,0 +1,12 @@
#include "net/login/LoginResponse.hpp"
void LoginResponse::UpdateLoginStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* a4, uint16_t a5) {
this->m_loginState = state;
this->m_loginResult = result;
// TODO string lookups
const char* stateStr = nullptr;
const char* resultStr = nullptr;
this->LoginServerStatus(state, result, a4, stateStr, resultStr, a5);
}

View File

@ -11,6 +11,9 @@ class LoginResponse {
// Virtual member functions
virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint16_t a7) = 0;
// Member functions
void UpdateLoginStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* a4, uint16_t a5);
};
#endif