mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-12-12 03:02:30 +00:00
feat(net): handle successful authentication in GruntLogin
This commit is contained in:
parent
191ce79fb3
commit
9fe2e2e8ff
3 changed files with 66 additions and 2 deletions
|
|
@ -135,8 +135,71 @@ void GruntLogin::Logon(const char* a2, const char* a3) {
|
||||||
this->m_clientLink->Connect(a2);
|
this->m_clientLink->Connect(a2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GruntLogin::LogonResult(Grunt::Result result, const uint8_t* a3, uint32_t a4, uint16_t a5) {
|
void GruntLogin::LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) {
|
||||||
|
// Reconnect
|
||||||
|
if (this->IsReconnect()) {
|
||||||
// TODO
|
// TODO
|
||||||
|
// this->m_loginResponse->HandleRealmData(1, 0);
|
||||||
|
this->m_clientLink->Disconnect();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Authentication success
|
||||||
|
if (result == Grunt::GRUNT_RESULT_0 || result == Grunt::GRUNT_RESULT_14) {
|
||||||
|
// TODO
|
||||||
|
// this->uint8 = 0;
|
||||||
|
// LOBYTE(this->uint105C) = 0;
|
||||||
|
|
||||||
|
if (sessionKeyLen >= 40) {
|
||||||
|
sessionKeyLen = 40;
|
||||||
|
}
|
||||||
|
memcpy(this->m_sessionKey, sessionKey, sessionKeyLen);
|
||||||
|
|
||||||
|
this->m_loginResponse->m_loginResult = LOGIN_OK;
|
||||||
|
|
||||||
|
if (this->m_clientLink->m_surveyID == 0) {
|
||||||
|
this->m_loginResponse->m_loginState = LOGIN_STATE_AUTHENTICATED;
|
||||||
|
|
||||||
|
char stateStr[64];
|
||||||
|
SStrCopy(stateStr, Grunt::g_LoginStateStringNames[LOGIN_STATE_AUTHENTICATED], sizeof(stateStr));
|
||||||
|
|
||||||
|
char resultStr[64];
|
||||||
|
SStrCopy(resultStr, Grunt::g_LoginResultStringNames[LOGIN_OK], sizeof(resultStr));
|
||||||
|
|
||||||
|
this->m_loginResponse->LoginServerStatus(
|
||||||
|
LOGIN_STATE_AUTHENTICATED,
|
||||||
|
LOGIN_OK,
|
||||||
|
nullptr,
|
||||||
|
stateStr,
|
||||||
|
resultStr,
|
||||||
|
flags
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this->m_loginResponse->m_loginState = LOGIN_STATE_SURVEY;
|
||||||
|
|
||||||
|
char stateStr[64];
|
||||||
|
SStrCopy(stateStr, Grunt::g_LoginStateStringNames[LOGIN_STATE_SURVEY], sizeof(stateStr));
|
||||||
|
|
||||||
|
char resultStr[64];
|
||||||
|
SStrCopy(resultStr, Grunt::g_LoginResultStringNames[LOGIN_OK], sizeof(resultStr));
|
||||||
|
|
||||||
|
this->m_loginResponse->LoginServerStatus(
|
||||||
|
LOGIN_STATE_SURVEY,
|
||||||
|
LOGIN_OK,
|
||||||
|
nullptr,
|
||||||
|
stateStr,
|
||||||
|
resultStr,
|
||||||
|
flags
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Authentication failure
|
||||||
|
// TODO
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGIN_STATE GruntLogin::NextSecurityState(LOGIN_STATE state) {
|
LOGIN_STATE GruntLogin::NextSecurityState(LOGIN_STATE state) {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class GruntLogin : public Login {
|
||||||
virtual void SetPinInfo(bool enabled, uint32_t a3, const uint8_t* a4);
|
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 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 SetTokenInfo(bool enabled, uint8_t tokenRequired);
|
||||||
virtual void LogonResult(Grunt::Result result, const uint8_t* a3, uint32_t a4, uint16_t a5);
|
virtual void LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags);
|
||||||
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state);
|
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state);
|
||||||
virtual void GetRealmList();
|
virtual void GetRealmList();
|
||||||
virtual void Logon(const char* a2, const char* a3);
|
virtual void Logon(const char* a2, const char* a3);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ class Login : public Grunt::ClientResponse {
|
||||||
char m_accountName[1280] = {};
|
char m_accountName[1280] = {};
|
||||||
char m_rawAccountName[1280] = {};
|
char m_rawAccountName[1280] = {};
|
||||||
char* m_password = nullptr;
|
char* m_password = nullptr;
|
||||||
|
uint8_t m_sessionKey[40] = {};
|
||||||
LoginResponse* m_loginResponse = nullptr;
|
LoginResponse* m_loginResponse = nullptr;
|
||||||
|
|
||||||
// Virtual member functions
|
// Virtual member functions
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue