feat(client): handle successful authentication in ClientServices

This commit is contained in:
fallenoak 2023-02-07 12:57:25 -06:00
parent 9fe2e2e8ff
commit 5355b75768
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
10 changed files with 60 additions and 0 deletions

View file

@ -1208,6 +1208,13 @@ enum WOWCS_OPS {
COP_WAIT_QUEUE = 10,
};
struct LoginData {
char m_account[1280];
int32_t m_loginServerID;
uint8_t m_sessionKey[40];
int32_t m_loginServerType;
};
struct NETADDR {
uint16_t family;
char data[14];

View file

@ -44,6 +44,10 @@ int32_t NetClient::Initialize() {
return 1;
}
void NetClient::SetLoginData(LoginData* loginData) {
memcpy(&this->m_loginData, loginData, sizeof(this->m_loginData));
}
void NetClient::SetMessageHandler(NETMESSAGE msgId, MESSAGE_HANDLER handler, void* param) {
this->m_handlers[msgId] = handler;
this->m_handlerParams[msgId] = param;

View file

@ -36,6 +36,7 @@ class NetClient : public WowConnectionResponse {
static int32_t s_clientCount;
// Member variables
LoginData m_loginData;
NETSTATE m_netState = NS_UNINITIALIZED;
MESSAGE_HANDLER m_handlers[NUM_MSG_TYPES];
void* m_handlerParams[NUM_MSG_TYPES];
@ -50,6 +51,7 @@ class NetClient : public WowConnectionResponse {
// Member functions
int32_t Initialize();
void SetLoginData(LoginData* loginData);
void SetMessageHandler(NETMESSAGE msgId, MESSAGE_HANDLER handler, void* param);
};

View file

@ -17,11 +17,13 @@ class Grunt::ClientResponse {
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 LOGIN_STATE NextSecurityState(LOGIN_STATE state) = 0;
virtual int32_t GetServerId() = 0;
virtual void GetRealmList() = 0;
virtual void Logon(const char* a2, const char* a3) = 0;
virtual void ProveVersion(const uint8_t* versionChecksum) = 0;
virtual void Logoff() = 0;
virtual void Init(LoginResponse* loginResponse) = 0;
virtual int32_t GetLoginServerType() = 0;
};
#endif

View file

@ -34,6 +34,11 @@ bool GruntLogin::Connected(const NETADDR& addr) {
return true;
}
int32_t GruntLogin::GetLoginServerType() {
// Grunt
return 0;
}
void GruntLogin::GetLogonMethod() {
Grunt::ClientLink::Logon logon;
@ -88,6 +93,11 @@ void GruntLogin::GetRealmList() {
// TODO
}
int32_t GruntLogin::GetServerId() {
// TODO
return 0;
}
void GruntLogin::GetVersionProof(const uint8_t* versionChallenge) {
if (this->IsReconnect()) {
// TODO

View file

@ -21,11 +21,13 @@ class GruntLogin : public Login {
virtual void SetTokenInfo(bool enabled, uint8_t tokenRequired);
virtual void LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags);
virtual LOGIN_STATE NextSecurityState(LOGIN_STATE state);
virtual int32_t GetServerId();
virtual void GetRealmList();
virtual void Logon(const char* a2, const char* a3);
virtual void ProveVersion(const uint8_t* versionChecksum);
virtual void Logoff();
virtual void Init(LoginResponse* loginResponse);
virtual int32_t GetLoginServerType();
};
#endif