mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-01 16:22:45 +03:00
feat(net): implement CmdAuthReconnectProof
This commit is contained in:
parent
cb48aca869
commit
d0f138a656
@ -369,8 +369,50 @@ int32_t Grunt::ClientLink::CmdAuthReconnectChallenge(CDataStore& msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t Grunt::ClientLink::CmdAuthReconnectProof(CDataStore& msg) {
|
int32_t Grunt::ClientLink::CmdAuthReconnectProof(CDataStore& msg) {
|
||||||
// TODO
|
if (!msg.IsValid()) {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.IsRead()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t result;
|
||||||
|
msg.Get(result);
|
||||||
|
|
||||||
|
if (!msg.IsValid()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconnect proof failure (result != 0)
|
||||||
|
|
||||||
|
if (result != 0) {
|
||||||
|
this->SetState(STATE_CONNECTED);
|
||||||
|
|
||||||
|
if (result >= 33) {
|
||||||
|
result = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_clientResponse->ReconnectResult(static_cast<Grunt::Result>(result), nullptr, 0, 0x0);
|
||||||
|
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconnect proof success (result == 0)
|
||||||
|
|
||||||
|
uint16_t reconnectFlags = 0x0;
|
||||||
|
|
||||||
|
if (!CanRead(msg, sizeof(reconnectFlags))) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.Get(reconnectFlags);
|
||||||
|
|
||||||
|
this->SetState(STATE_AUTHENTICATED);
|
||||||
|
|
||||||
|
this->m_clientResponse->ReconnectResult(Grunt::GRUNT_RESULT_0, this->m_reconnectSessionKey, 40, reconnectFlags);
|
||||||
|
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Grunt::ClientLink::CmdRealmList(CDataStore& msg) {
|
int32_t Grunt::ClientLink::CmdRealmList(CDataStore& msg) {
|
||||||
|
|||||||
@ -61,6 +61,7 @@ class Grunt::ClientLink : public WowConnectionResponse, Grunt::Pending, Grunt::T
|
|||||||
ClientResponse* m_clientResponse;
|
ClientResponse* m_clientResponse;
|
||||||
char m_accountName[1280];
|
char m_accountName[1280];
|
||||||
char m_serverPublicKey[32];
|
char m_serverPublicKey[32];
|
||||||
|
uint8_t m_reconnectSessionKey[40];
|
||||||
|
|
||||||
// Virtual member functions
|
// Virtual member functions
|
||||||
virtual void WCMessageReady(WowConnection *conn, uint32_t timeStamp, CDataStore* msg) {};
|
virtual void WCMessageReady(WowConnection *conn, uint32_t timeStamp, CDataStore* msg) {};
|
||||||
|
|||||||
@ -17,6 +17,7 @@ class Grunt::ClientResponse {
|
|||||||
virtual void SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11) = 0;
|
virtual void SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11) = 0;
|
||||||
virtual void SetTokenInfo(bool enabled, uint8_t required) = 0;
|
virtual void SetTokenInfo(bool enabled, uint8_t required) = 0;
|
||||||
virtual void LogonResult(Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) = 0;
|
virtual void LogonResult(Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) = 0;
|
||||||
|
virtual void ReconnectResult(Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) = 0;
|
||||||
virtual void RealmListResult(CDataStore* msg) = 0;
|
virtual void RealmListResult(CDataStore* msg) = 0;
|
||||||
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state) = 0;
|
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state) = 0;
|
||||||
virtual int32_t GetServerId() = 0;
|
virtual int32_t GetServerId() = 0;
|
||||||
|
|||||||
@ -282,6 +282,10 @@ void GruntLogin::ProveVersion(const uint8_t* versionChecksum) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GruntLogin::ReconnectResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
void GruntLogin::SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11) {
|
void GruntLogin::SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11) {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class GruntLogin : public Login {
|
|||||||
virtual void SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11);
|
virtual void SetMatrixInfo(bool enabled, uint8_t width, uint8_t height, uint8_t a5, uint8_t a6, bool a7, uint8_t challengeCount, uint64_t seed, const uint8_t* sessionKey, uint32_t a11);
|
||||||
virtual void SetTokenInfo(bool enabled, uint8_t required);
|
virtual void SetTokenInfo(bool enabled, uint8_t required);
|
||||||
virtual void LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags);
|
virtual void LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags);
|
||||||
|
virtual void ReconnectResult(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 int32_t GetServerId();
|
virtual int32_t GetServerId();
|
||||||
virtual void GetRealmList();
|
virtual void GetRealmList();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user