AuthServer: Difference between revisions

From OuroDev
No edit summary
No edit summary
Line 156: Line 156:
{| class="wikitable"
{| class="wikitable"
!Opcode
!Opcode
!AuthServer Function / DBServer Function
!Structure
!Structure
!AuthServer Function
!DBServer Function
|-
|-
|SQ_ABOUT_TO_PLAY
|SQ_ABOUT_TO_PLAY
|dsdddd
|AccountDB::AboutToPlay / handleAboutToPlay
|AccountDB::AboutToPlay / handleAboutToPlay
|dsdddd
|
|-
|-
|SQ_KICK_ACCOUNT
|SQ_KICK_ACCOUNT
|dcs
|AccountDB::KickAccount / handleKickAccount
|AccountDB::KickAccount / handleKickAccount
|dcs
|
|-
|-
|SQ_SERVER_NUM
|SQ_SERVER_NUM
|
|RequestUserCounts / handleNumOnline
|RequestUserCounts / handleNumOnline
|
|
|-
|-
|SQ_VERSION
|SQ_VERSION
|sd(d)
|CSocketServer::OnCreate / handleVersion
|CSocketServer::OnCreate / handleVersion
|sd(d)
|
|-
|-
|SQ_PING
|SQ_PING
|d
|ServerPing / handlePing
|ServerPing / handlePing
|d
|
|-
|-
|SQ_COMPLETE_USERLIST
|SQ_COMPLETE_USERLIST
|d
|ServerPlayUserList / handleCompleteUserList
|ServerPlayUserList / handleCompleteUserList
|d
|
|-
|-
|SQ_USER_DATA
|SQ_USER_DATA
|db
|ServerReadUserData / -
|ServerReadUserData / -
|db
|
|-
|-
|SQ_GAME_DATA
|SQ_GAME_DATA
|db
|ServerReadGameData / handleRecvGameData
|ServerReadGameData / handleRecvGameData
|db
|
|}
|}
</div>
</div>
Line 200: Line 209:
{| class="wikitable"
{| class="wikitable"
!Opcode
!Opcode
!Game Function / AuthServer Function
!Structure
!Structure
!Game Function
!AuthServer Function
|-
|-
|AQ_LOGIN
|AQ_LOGIN
|dbdw(c)
|<nowiki>- / LoginPacket</nowiki>
|<nowiki>- / LoginPacket</nowiki>
|dbdw(c)
|
|-
|-
|AQ_SERVER_LIST
|AQ_SERVER_LIST
|ddc(c[d])
|<nowiki>- / DeprecatedPacket</nowiki>
|<nowiki>- / DeprecatedPacket</nowiki>
|ddc(c[d])
|
|-
|-
|AQ_ABOUT_TO_PLAY
|AQ_ABOUT_TO_PLAY
|ddc
|acSendAboutToPlay / SelectServerPacket
|acSendAboutToPlay / SelectServerPacket
|ddc
|
|-
|-
|AQ_LOGOUT
|AQ_LOGOUT
|dd
|acSendLogout / LogoutPacket
|acSendLogout / LogoutPacket
|dd
|
|-
|-
|AQ_LOGIN_MD5
|AQ_LOGIN_MD5
|dbdw(c)
|acSendLoginMD5 / LoginPacketMd5Key
|acSendLoginMD5 / LoginPacketMd5Key
|dbdw(c)
|
|-
|-
|AQ_SERVER_LIST_EXT
|AQ_SERVER_LIST_EXT
|ddc(c[d])
|acSendServerList / ServerListExtPacket
|acSendServerList / ServerListExtPacket
|ddc(c[d])
|
|-
|-
|AQ_LOGIN_MD5_MD5
|AQ_LOGIN_MD5_MD5
|dbdw(c)
|acSendLoginMD5 / -
|acSendLoginMD5 / -
|dbdw(c)
|
|}
|}
</div>
</div>
Line 238: Line 255:
!Opcode
!Opcode
!Description
!Description
!AuthServer Function / Game Function
!Structure
!Structure
!AuthServer Function
!Game Function
|-
|-
|AC_PROTOCOL_VER
|AC_PROTOCOL_VER
|Exchange common protocol version with client
|Exchange common protocol version with client
|dddbdb
|CSocketServerEx::OnCreate / acGetProtocolVer
|CSocketServerEx::OnCreate / acGetProtocolVer
|dddbdb
|
|-
|-
|AC_LOGIN_FAIL
|AC_LOGIN_FAIL
|Reject client authentication
|Reject client authentication
|c
|(more than 1) / acGetLoginFail
|(more than 1) / acGetLoginFail
|c
|
|-
|-
|AC_BLOCKED_ACCOUNT
|AC_BLOCKED_ACCOUNT
|Account banned for X until Y
|Account banned for X until Y
|dd
|LoginPacketSecure / acGetBlockedAccount
|LoginPacketSecure / acGetBlockedAccount
|dd
|
|-
|-
|AC_LOGIN_OK
|AC_LOGIN_OK
|Allow client authentication
|Allow client authentication
|dddddddddddd(dd)
|AccountDB::RegAccount / acGetLoginOK
|AccountDB::RegAccount / acGetLoginOK
|dddddddddddd(dd)
|
|-
|-
|AC_SEND_SERVERLIST
|AC_SEND_SERVERLIST
|Send list of shards
|Send list of shards
|c[cddccwwcc(cs)]
|CServerList::MakeServerListPacket / acGetSendServerList
|CServerList::MakeServerListPacket / acGetSendServerList
|c[cddccwwcc(cs)]
|
|-
|-
|AC_SEND_SERVER_FAIL
|AC_SEND_SERVER_FAIL
|Something unexpected happened
|Something unexpected happened
|c
|ServerListExtPacket / acGetSendServerFail
|ServerListExtPacket / acGetSendServerFail
|c
|
|-
|-
|AC_PLAY_FAIL
|AC_PLAY_FAIL
|Server selected, but down possibly?
|Server selected, but down possibly?
|c
|(more than 1) / acGetPlayFail
|(more than 1) / acGetPlayFail
|c
|
|-
|-
|AC_PLAY_OK
|AC_PLAY_OK
|Server selected, continue
|Server selected, continue
|ddc
|ServerPlayOk / acGetPlayOK
|ServerPlayOk / acGetPlayOK
|ddc
|
|-
|-
|AC_ACCOUNT_KICKED
|AC_ACCOUNT_KICKED
|Account kicked for X
|Account kicked for X
|c
|AccountDB::KickAccount / acGetAccountKicked
|AccountDB::KickAccount / acGetAccountKicked
|c
|
|-
|-
|AC_BLOCKED_ACCOUNT_WITH_MSG
|AC_BLOCKED_ACCOUNT_WITH_MSG
|Account permabanned for X
|Account permabanned for X
|s
|LoginPacketSecure / acGetBlockedAccountWithMsg
|LoginPacketSecure / acGetBlockedAccountWithMsg
|s
|
|-
|-
|AC_SC_CHECK_REQ
|AC_SC_CHECK_REQ
Line 295: Line 323:
| -
| -
| -
| -
|
|-
|-
|AC_QUEUE_SIZE
|AC_QUEUE_SIZE
|Queue length and wait time
|Queue length and wait time
|c[ccdd]
|CServerList::MakeQueueSizePacket / acGetQueueSize
|CServerList::MakeQueueSizePacket / acGetQueueSize
|c[ccdd]
|
|-
|-
|AC_HANDOFF_TO_QUEUE
|AC_HANDOFF_TO_QUEUE
|Wait in server queue
|Wait in server queue
|ddc
|ServerPlayOk / acGetHandoffToQueue
|ServerPlayOk / acGetHandoffToQueue
|ddc
|
|-
|-
|AC_POSITION_IN_QUEUE
|AC_POSITION_IN_QUEUE
Line 310: Line 341:
| -
| -
| -
| -
|
|}
|}
</div>
</div>
Line 320: Line 352:
{| class="wikitable"
{| class="wikitable"
!Opcode
!Opcode
!Structure
!AuthServer Function
!AuthServer Function
!Structure
|-
|-
|IA_SERVER_VERSION
|IA_SERVER_VERSION
|d
|GetConnectSessionKey
|GetConnectSessionKey
|d
|-
|-
|IA_IP_KIND
|IA_IP_KIND
Line 332: Line 364:
|-
|-
|IA_IP_USE
|IA_IP_USE
|dcdd
|GetIPAcquireSuccess
|GetIPAcquireSuccess
|dcdd
|-
|-
|IA_IP_START_OK
|IA_IP_START_OK
|dcddd
|StartIPCharge
|StartIPCharge
|dcddd
|-
|-
|IA_IP_START_FAIL
|IA_IP_START_FAIL
|dcddds
|StartIPChargeFail
|StartIPChargeFail
|dcddds
|-
|-
|IA_IP_USE_FAIL
|IA_IP_USE_FAIL
|dc
|GetIPAcquireFail
|GetIPAcquireFail
|dc
|-
|-
|IA_IP_SESSIONKEY
|IA_IP_SESSIONKEY
Line 360: Line 392:
|-
|-
|IA_IP_KICK
|IA_IP_KICK
|dddsd
|GetIPKick
|GetIPKick
|dddsd
|-
|-
|IA_IP_READY_FAIL
|IA_IP_READY_FAIL
|dc
|ReadyIPFail
|ReadyIPFail
|dc
|-
|-
|IA_IP_READY_OK
|IA_IP_READY_OK
|dcddd
|ReadyIPOK
|ReadyIPOK
|dcddd
|-
|-
|IA_IP_SET_STARTTIME_OK
|IA_IP_SET_STARTTIME_OK
Line 376: Line 408:
|-
|-
|IA_IP_SET_STARTTIME_FAIL
|IA_IP_SET_STARTTIME_FAIL
|d
|SetStartTimeFail
|SetStartTimeFail
|d
|}
|}
</div>
</div>
Line 385: Line 417:
{| class="wikitable"
{| class="wikitable"
!Opcode
!Opcode
!Structure
!AuthServer Function
!AuthServer Function
!Structure
|-
|-
|AI_SERVER_VERSION
|AI_SERVER_VERSION
|sc
|CIPSocket::OnCreate
|CIPSocket::OnCreate
|sc
|-
|-
|AI_IP_KIND
|AI_IP_KIND
Line 397: Line 429:
|-
|-
|AI_IP_ACQUIRE
|AI_IP_ACQUIRE
|sddd
|CIPSessionDB::AcquireSessionRequest
|CIPSessionDB::AcquireSessionRequest
|sddd
|-
|-
|AI_IP_RELEASE
|AI_IP_RELEASE
|ddddd
|CIPSessionDB::ReleaseSessionRequest
|CIPSessionDB::ReleaseSessionRequest
|ddddd
|-
|-
|AI_IP_START_CHARGE
|AI_IP_START_CHARGE
|dddcdd
|CIPSessionDB::StartIPCharge
|CIPSessionDB::StartIPCharge
|dddcdd
|-
|-
|AI_IP_STOP_CHARGE
|AI_IP_STOP_CHARGE
|ddddcddsd
|CIPSessionDB::StopIPCharge
|CIPSessionDB::StopIPCharge
|ddddcddsd
|-
|-
|AI_IP_INSTANT_START_GAME
|AI_IP_INSTANT_START_GAME
Line 425: Line 457:
|-
|-
|AI_IP_READY_GAME
|AI_IP_READY_GAME
|dddcdd
|CIPSessionDB::ReadyToIPCharge
|CIPSessionDB::ReadyToIPCharge
|dddcdd
|-
|-
|AI_IP_SET_START_TIME
|AI_IP_SET_START_TIME
|dddcdd
|CIPSessionDB::ConfirmIPCharge
|CIPSessionDB::ConfirmIPCharge
|dddcdd
|}
|}
</div>
</div>

Revision as of 00:22, 3 September 2020

Responsible for user authentication and session creation. Has cross-shard capabilities.

Communication Protocols

In the sections below, the table column "Structure" is denoted in a similar format used by the server source. Minus the opcode, which is type c anyways.

Type Description
c Char
w Word / Short
d DWord / Int
q QWord / Long
b Byte Array
s NUL-terminated C String
[] Array
() Conditional, based on config

Game Server

TCP Port 2104. AuthServer and DBServer communicate through this port.

Incoming Packets

Opcode Structure DBServer Function AuthServer Function
AS_PLAY_OK dd authSendPlayOK / ServerPlayOk
AS_PLAY_FAIL cd authSendPlayFail / ServerPlayFail
AS_PLAY_GAME d authSendPlayGame / ServerPlayGame
AS_QUIT_GAME dwd authSendQuitGame / ServerPlayQuit
AS_KICK_ACCOUNT dw authSendKickAccount / ServerKickAccount
AS_SERVER_USERNUM ww - / ServerGetUserNum
AS_BAN_USER dw authSendBanAccount / ServerBanUser
AS_VERSION d authSendVersion / ServerVersion
AS_PING d authSendPing / ServerPing
AS_WRITE_USERDATA db authSendUserData / ServerWriteUserData
AS_SET_CONNECT d authSendSetConnect / ServerSetActive
AS_PLAY_USER_LIST dsddddd authSendCurrentPlayers / ServerPlayUserList
AS_SET_SERVER_ID cw - / SetServerId
AS_SERVER_USER_NUM_BY_QUEUE_LEVEL - - / ServerUserNumByQueueLevel
AS_FINISHED_QUEUE d - / FinishedQueue
AS_SET_LOGIN_FREQUENCY - - / SetLoginFrequency
AS_QUEUE_SIZES c[cdd] - / QueueSizes
AS_READ_USERDATA d - / ServerReadUserData
AS_WRITE_GAMEDATA db authSendUserData / ServerWriteGameData
AS_READ_GAMEDATA d authSendGameDataReq / ServerReadGameData
AS_SHARD_TRANSFER dd authSendShardTransfer / ServerShardTransfer

Outgoing Packets

Opcode Structure AuthServer Function DBServer Function
SQ_ABOUT_TO_PLAY dsdddd AccountDB::AboutToPlay / handleAboutToPlay
SQ_KICK_ACCOUNT dcs AccountDB::KickAccount / handleKickAccount
SQ_SERVER_NUM RequestUserCounts / handleNumOnline
SQ_VERSION sd(d) CSocketServer::OnCreate / handleVersion
SQ_PING d ServerPing / handlePing
SQ_COMPLETE_USERLIST d ServerPlayUserList / handleCompleteUserList
SQ_USER_DATA db ServerReadUserData / -
SQ_GAME_DATA db ServerReadGameData / handleRecvGameData

Game Client

TCP Port 2106. AuthServer and Game communicate through this port.

Incoming Packets

Opcode Structure Game Function AuthServer Function
AQ_LOGIN dbdw(c) - / LoginPacket
AQ_SERVER_LIST ddc(c[d]) - / DeprecatedPacket
AQ_ABOUT_TO_PLAY ddc acSendAboutToPlay / SelectServerPacket
AQ_LOGOUT dd acSendLogout / LogoutPacket
AQ_LOGIN_MD5 dbdw(c) acSendLoginMD5 / LoginPacketMd5Key
AQ_SERVER_LIST_EXT ddc(c[d]) acSendServerList / ServerListExtPacket
AQ_LOGIN_MD5_MD5 dbdw(c) acSendLoginMD5 / -

Outgoing Packets

Opcode Description Structure AuthServer Function Game Function
AC_PROTOCOL_VER Exchange common protocol version with client dddbdb CSocketServerEx::OnCreate / acGetProtocolVer
AC_LOGIN_FAIL Reject client authentication c (more than 1) / acGetLoginFail
AC_BLOCKED_ACCOUNT Account banned for X until Y dd LoginPacketSecure / acGetBlockedAccount
AC_LOGIN_OK Allow client authentication dddddddddddd(dd) AccountDB::RegAccount / acGetLoginOK
AC_SEND_SERVERLIST Send list of shards c[cddccwwcc(cs)] CServerList::MakeServerListPacket / acGetSendServerList
AC_SEND_SERVER_FAIL Something unexpected happened c ServerListExtPacket / acGetSendServerFail
AC_PLAY_FAIL Server selected, but down possibly? c (more than 1) / acGetPlayFail
AC_PLAY_OK Server selected, continue ddc ServerPlayOk / acGetPlayOK
AC_ACCOUNT_KICKED Account kicked for X c AccountDB::KickAccount / acGetAccountKicked
AC_BLOCKED_ACCOUNT_WITH_MSG Account permabanned for X s LoginPacketSecure / acGetBlockedAccountWithMsg
AC_SC_CHECK_REQ - - -
AC_QUEUE_SIZE Queue length and wait time c[ccdd] CServerList::MakeQueueSizePacket / acGetQueueSize
AC_HANDOFF_TO_QUEUE Wait in server queue ddc ServerPlayOk / acGetHandoffToQueue
AC_POSITION_IN_QUEUE - - -

GM Tools

TCP Port 2108. Used for internal administration?

Incoming Packets

Opcode Structure AuthServer Function
IA_SERVER_VERSION d GetConnectSessionKey
IA_IP_KIND - -
IA_IP_USE dcdd GetIPAcquireSuccess
IA_IP_START_OK dcddd StartIPCharge
IA_IP_START_FAIL dcddds StartIPChargeFail
IA_IP_USE_FAIL dc GetIPAcquireFail
IA_IP_SESSIONKEY - -
IA_IP_INSTANTLOGIN_OK - -
IA_IP_INSTANTLOGIN_FAIL - -
IA_IP_KICK dddsd GetIPKick
IA_IP_READY_FAIL dc ReadyIPFail
IA_IP_READY_OK dcddd ReadyIPOK
IA_IP_SET_STARTTIME_OK - -
IA_IP_SET_STARTTIME_FAIL d SetStartTimeFail

Outgoing Packets

Opcode Structure AuthServer Function
AI_SERVER_VERSION sc CIPSocket::OnCreate
AI_IP_KIND - -
AI_IP_ACQUIRE sddd CIPSessionDB::AcquireSessionRequest
AI_IP_RELEASE ddddd CIPSessionDB::ReleaseSessionRequest
AI_IP_START_CHARGE dddcdd CIPSessionDB::StartIPCharge
AI_IP_STOP_CHARGE ddddcddsd CIPSessionDB::StopIPCharge
AI_IP_INSTANT_START_GAME - -
AI_IP_INSTANT_STOP_GAME - -
AI_IP_KICKED - -
AI_IP_READY_GAME dddcdd CIPSessionDB::ReadyToIPCharge
AI_IP_SET_START_TIME dddcdd CIPSessionDB::ConfirmIPCharge