AuthServer

From OuroDev

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 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