AuthServer: Difference between revisions
From OuroDev
Packets |
|||
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Responsible for user authentication and session creation. | Responsible for user authentication and session creation. Has cross-shard capabilities. | ||
==Communication Protocols== | ==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. | |||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | |||
!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 | |||
|} | |||
</div> | |||
===Game Server=== | ===Game Server=== | ||
Line 7: | Line 38: | ||
====Incoming Packets==== | ====Incoming Packets==== | ||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | {| class="wikitable" | ||
!Opcode | !Opcode | ||
! | !Structure | ||
!DBServer Function | |||
!AuthServer Function | |||
|- | |- | ||
|AS_PLAY_OK | |AS_PLAY_OK | ||
| | |dd | ||
|authSendPlayOK | |||
|ServerPlayOk | |||
|- | |- | ||
|AS_PLAY_FAIL | |AS_PLAY_FAIL | ||
| | |cd | ||
|authSendPlayFail | |||
|ServerPlayFail | |||
|- | |- | ||
|AS_PLAY_GAME | |AS_PLAY_GAME | ||
| | |d | ||
|authSendPlayGame | |||
|ServerPlayGame | |||
|- | |- | ||
|AS_QUIT_GAME | |AS_QUIT_GAME | ||
| | |dwd | ||
|authSendQuitGame | |||
|ServerPlayQuit | |||
|- | |- | ||
|AS_KICK_ACCOUNT | |AS_KICK_ACCOUNT | ||
| | |dw | ||
|authSendKickAccount | |||
|ServerKickAccount | |||
|- | |- | ||
|AS_SERVER_USERNUM | |AS_SERVER_USERNUM | ||
| | |ww | ||
| - | |||
|ServerGetUserNum | |||
|- | |- | ||
|AS_BAN_USER | |AS_BAN_USER | ||
| | |dw | ||
|authSendBanAccount | |||
|ServerBanUser | |||
|- | |- | ||
|AS_VERSION | |AS_VERSION | ||
| | |d | ||
|authSendVersion | |||
|ServerVersion | |||
|- | |- | ||
|AS_PING | |AS_PING | ||
| | |d | ||
|authSendPing | |||
|ServerPing | |||
|- | |- | ||
|AS_WRITE_USERDATA | |AS_WRITE_USERDATA | ||
| | |db | ||
|authSendUserData | |||
|ServerWriteUserData | |||
|- | |- | ||
|AS_SET_CONNECT | |AS_SET_CONNECT | ||
| | |d | ||
|authSendSetConnect | |||
|ServerSetActive | |||
|- | |- | ||
|AS_PLAY_USER_LIST | |AS_PLAY_USER_LIST | ||
| | |dsddddd | ||
|authSendCurrentPlayers | |||
|ServerPlayUserList | |||
|- | |- | ||
|AS_SET_SERVER_ID | |AS_SET_SERVER_ID | ||
| | |cw | ||
| - | |||
|SetServerId | |||
|- | |- | ||
|AS_SERVER_USER_NUM_BY_QUEUE_LEVEL | |AS_SERVER_USER_NUM_BY_QUEUE_LEVEL | ||
| | | - | ||
| - | |||
|ServerUserNumByQueueLevel | |||
|- | |- | ||
|AS_FINISHED_QUEUE | |AS_FINISHED_QUEUE | ||
| | |d | ||
| - | |||
|FinishedQueue | |||
|- | |- | ||
|AS_SET_LOGIN_FREQUENCY | |AS_SET_LOGIN_FREQUENCY | ||
| | | - | ||
| - | |||
|SetLoginFrequency | |||
|- | |- | ||
|AS_QUEUE_SIZES | |AS_QUEUE_SIZES | ||
| | |c[cdd] | ||
| - | |||
|QueueSizes | |||
|- | |- | ||
|AS_READ_USERDATA | |AS_READ_USERDATA | ||
| | |d | ||
| - | |||
|ServerReadUserData | |||
|- | |- | ||
|AS_WRITE_GAMEDATA | |AS_WRITE_GAMEDATA | ||
| | |db | ||
|authSendUserData | |||
|ServerWriteGameData | |||
|- | |- | ||
|AS_READ_GAMEDATA | |AS_READ_GAMEDATA | ||
| | |d | ||
|authSendGameDataReq | |||
|ServerReadGameData | |||
|- | |- | ||
|AS_SHARD_TRANSFER | |AS_SHARD_TRANSFER | ||
| | |dd | ||
|authSendShardTransfer | |||
|ServerShardTransfer | |||
|} | |} | ||
</div> | |||
====Outgoing Packets==== | ====Outgoing Packets==== | ||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | {| class="wikitable" | ||
!Opcode | !Opcode | ||
! | !Structure | ||
!AuthServer Function | |||
!DBServer Function | |||
|- | |- | ||
|SQ_ABOUT_TO_PLAY | |SQ_ABOUT_TO_PLAY | ||
| | |dsdddd | ||
|AccountDB::AboutToPlay | |||
|handleAboutToPlay | |||
|- | |- | ||
|SQ_KICK_ACCOUNT | |SQ_KICK_ACCOUNT | ||
| | |dcs | ||
|AccountDB::KickAccount | |||
|handleKickAccount | |||
|- | |- | ||
|SQ_SERVER_NUM | |SQ_SERVER_NUM | ||
| | | | ||
|RequestUserCounts | |||
|handleNumOnline | |||
|- | |- | ||
|SQ_VERSION | |SQ_VERSION | ||
| | |sd(d) | ||
|CSocketServer::OnCreate | |||
|handleVersion | |||
|- | |- | ||
|SQ_PING | |SQ_PING | ||
| | |d | ||
|ServerPing | |||
|handlePing | |||
|- | |- | ||
|SQ_COMPLETE_USERLIST | |SQ_COMPLETE_USERLIST | ||
| | |d | ||
|ServerPlayUserList | |||
|handleCompleteUserList | |||
|- | |- | ||
|SQ_USER_DATA | |SQ_USER_DATA | ||
| | |db | ||
|ServerReadUserData | |||
| - | |||
|- | |- | ||
|SQ_GAME_DATA | |SQ_GAME_DATA | ||
| | |db | ||
|ServerReadGameData | |||
|handleRecvGameData | |||
|} | |} | ||
</div> | |||
===Game Client=== | ===Game Client=== | ||
TCP Port 2106. AuthServer and Game communicate through this port. | TCP Port 2106. AuthServer and Game communicate through this port. | ||
==== Incoming Packets ==== | ====Incoming Packets==== | ||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | {| class="wikitable" | ||
!Opcode | !Opcode | ||
! | !Structure | ||
!Game Function | |||
!AuthServer Function | |||
|- | |||
|AQ_LOGIN | |||
|dbdw(c) | |||
| - | |||
|LoginPacket | |||
|- | |||
|AQ_SERVER_LIST | |||
|ddc(c[d]) | |||
| - | |||
| - | |||
|- | |||
|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 | |||
| - | |||
|} | |} | ||
</div> | |||
====Outgoing Packets==== | ====Outgoing Packets==== | ||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | {| class="wikitable" | ||
!Opcode | !Opcode | ||
! | !Structure | ||
!AuthServer Function | |||
!Game Function | |||
|- | |- | ||
|AC_PROTOCOL_VER | |AC_PROTOCOL_VER | ||
| | |dddbdb | ||
|CSocketServerEx::OnCreate | |||
|acGetProtocolVer | |||
|- | |- | ||
|AC_LOGIN_FAIL | |AC_LOGIN_FAIL | ||
| | |c | ||
|CAccount::CheckPassword | |||
AccountDB::RegAccount | |||
AccountDB::CheckPersonalPayStat | |||
LoginPacketSecure | |||
|acGetLoginFail | |||
|- | |- | ||
|AC_BLOCKED_ACCOUNT | |AC_BLOCKED_ACCOUNT | ||
| | |dd | ||
|LoginPacketSecure | |||
|acGetBlockedAccount | |||
|- | |- | ||
|AC_LOGIN_OK | |AC_LOGIN_OK | ||
| | |dddddddddddd(dd) | ||
|AccountDB::RegAccount | |||
|acGetLoginOK | |||
|- | |- | ||
|AC_SEND_SERVERLIST | |AC_SEND_SERVERLIST | ||
| | |c[cddccwwcc(cs)] | ||
|CServerList::MakeServerListPacket | |||
|acGetSendServerList | |||
|- | |- | ||
|AC_SEND_SERVER_FAIL | |AC_SEND_SERVER_FAIL | ||
| | |c | ||
|ServerListExtPacket | |||
|acGetSendServerFail | |||
|- | |- | ||
|AC_PLAY_FAIL | |AC_PLAY_FAIL | ||
| | |cd | ||
|AccountDB::AboutToPlay | |||
ServerPlayFail | |||
SelectServerPacket | |||
|acGetPlayFail | |||
|- | |- | ||
|AC_PLAY_OK | |AC_PLAY_OK | ||
| | |ddc | ||
|ServerPlayOk | |||
|acGetPlayOK | |||
|- | |- | ||
|AC_ACCOUNT_KICKED | |AC_ACCOUNT_KICKED | ||
| | |c | ||
|AccountDB::KickAccount | |||
|acGetAccountKicked | |||
|- | |- | ||
|AC_BLOCKED_ACCOUNT_WITH_MSG | |AC_BLOCKED_ACCOUNT_WITH_MSG | ||
| | |s | ||
|LoginPacketSecure | |||
|acGetBlockedAccountWithMsg | |||
|- | |- | ||
|AC_SC_CHECK_REQ | |AC_SC_CHECK_REQ | ||
| - | |||
| - | |||
| | | | ||
|- | |- | ||
|AC_QUEUE_SIZE | |AC_QUEUE_SIZE | ||
| | |c[ccdd] | ||
|CServerList::MakeQueueSizePacket | |||
|acGetQueueSize | |||
|- | |- | ||
|AC_HANDOFF_TO_QUEUE | |AC_HANDOFF_TO_QUEUE | ||
| | |ddc | ||
|ServerPlayOk | |||
|acGetHandoffToQueue | |||
|- | |- | ||
|AC_POSITION_IN_QUEUE | |AC_POSITION_IN_QUEUE | ||
| - | |||
| - | |||
| | | | ||
|} | |} | ||
</div> | |||
===GM Tools=== | ===GM Tools=== | ||
TCP Port 2108. | TCP Port 2108. Used for internal administration? | ||
< | |||
====Incoming Packets==== | |||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | |||
!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 | |||
|} | |||
</div> | |||
====Outgoing Packets==== | |||
<div style="overflow-x:scroll"> | |||
{| class="wikitable" | |||
!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 | |||
|} | |||
</div> |
Latest revision as of 00:28, 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]) | - | - |
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 | Structure | AuthServer Function | Game Function |
---|---|---|---|
AC_PROTOCOL_VER | dddbdb | CSocketServerEx::OnCreate | acGetProtocolVer |
AC_LOGIN_FAIL | c | CAccount::CheckPassword
AccountDB::RegAccount AccountDB::CheckPersonalPayStat LoginPacketSecure |
acGetLoginFail |
AC_BLOCKED_ACCOUNT | dd | LoginPacketSecure | acGetBlockedAccount |
AC_LOGIN_OK | dddddddddddd(dd) | AccountDB::RegAccount | acGetLoginOK |
AC_SEND_SERVERLIST | c[cddccwwcc(cs)] | CServerList::MakeServerListPacket | acGetSendServerList |
AC_SEND_SERVER_FAIL | c | ServerListExtPacket | acGetSendServerFail |
AC_PLAY_FAIL | cd | AccountDB::AboutToPlay
ServerPlayFail SelectServerPacket |
acGetPlayFail |
AC_PLAY_OK | ddc | ServerPlayOk | acGetPlayOK |
AC_ACCOUNT_KICKED | c | AccountDB::KickAccount | acGetAccountKicked |
AC_BLOCKED_ACCOUNT_WITH_MSG | s | LoginPacketSecure | acGetBlockedAccountWithMsg |
AC_SC_CHECK_REQ | - | - | |
AC_QUEUE_SIZE | c[ccdd] | CServerList::MakeQueueSizePacket | acGetQueueSize |
AC_HANDOFF_TO_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 |