AuthServer: Difference between revisions

From OuroDev
No edit summary
Line 1: Line 1:
Responsible for user authentication and session creation. Cross-shard capabilities.
Responsible for user authentication and session creation. Has cross-shard capabilities.


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

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

Outgoing Packets

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

Game Client

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

Incoming Packets

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

Outgoing Packets

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

GM Tools

TCP Port 2108. Used for internal administration?

Incoming Packets

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

Outgoing Packets

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