The Implementors EQStatus


EverQuest Status Server

The EverQuest Status Server is created and maintained by Sony Online Entertainment / Verant Interactive to provide support for the EverQuest Status Server Protocol. The EverQuest Status Server Protocol is used by any application software that needs to get information as to the current status of all EverQuest Chat, World, and Zone servers.

By using the Everquest Status Server protocol, it is possible to get the following information:

Usage

Communication with the EQ Status Server is accomplished via the UDP protocol using host status.everquest.com on port 24252. Command sequences are as follows:

Command Sequence Notes
Request Server Names 0xFFFF0100 Request a list of all server names.
Request Abbreviated Status Data 0xFFFF0500 Request server/zone status data for all servers.
Request Chat Banner 0xFFFF0900 Request the Chat Server Banner.

The Request Server Names command should only need to be sent once, at the start of the application to get the current list of server names.

The client application should try to ensure that there is a buffer between sending Request Abbreviated Status Data commands, to prevent clients from flooding the Status Server. Clients should restrict refreshes to no more than once every 20 to 30 seconds.

After a commands is sent to the Status Server, an associated reply will be sent back for that command. The first 4 bytes of each reply contain the same 4 bytes that were sent as the command. After that, the rest of the reply is based on the command being sent.

Request Server Names Reply

This reply contains a listing of current server names, including the chat server, and uses the following format:

Bytes 1-4 Byte 5 Byte 6 Byte(s) 7+
0xFFFF0100 44 101 Chat Server Test Server Rallos Zek (PvP) Xegony The Rathe Fennin Ro...
Return Command Code Total number of World Server names Zones per. World Server The rest of the data is each name of each server seperated by a null (0x00) character


Bytes 1-4 = Command Code that was sent (0xFFFF0100).
Byte 5 = Total number of World Server names.
Byte 6 = Total number of zones per World Server.
Byte(s) 7+ = Name of each server seperated by a null (0x00) character. The number of names returned is equal to the total number of server names count provided in Byte 5.

Request Abbreviated Status Data Reply

Here you will get the actual server status, and indication of how many zones are up. The structure of the returned data is as follows:

Bytes 1-4 Byte 5 Bytes 6-7 Byte 8 Byte(s) 9+
0xFFFF0500 1 1 43 ...
Return Command Code total number of Chat Servers. user count on Chat Server total number of World Servers World Server Data


Bytes 1-4 = Command Code that was sent (0xFFFF0500).
Byte 5 = Total number of Chat Servers. (Currently always 1.)
Bytes 6-7 = Status of Chat Server (-1 = DOWN and 1 = UP).
Byte 8 = Total number of World Servers.
Byte(s) 9+ = World Server Data
World Server Data
Bytes 1-2 Byte 3 Bytes 6-7
1 101 101
World Server status number of zones number of zones up


Bytes 1-2 = Status of World Server (-1 = DOWN and 1 = UP, results of 0 and 65535 are also possible, but undocumented).
Byte 3 = Total number of zones in this World Server.
Byte 4 = Total number of zones up in this World Server.

Request Chat Banner Reply

You will obtain the text string equivalent of the banner currently running in the Chat Server. It is null-terminated (0x00) and will be a null if there is no banner. Maximum length of the entire packet returned is 512 bytes. The structure of the returned data is as follows:

Bytes 1-4 Byte(s) 5+
0xFFFF0900 (0x00)
Return Command Code Chat Server Banner (null-terminated)


Bytes 1-4 = Command Code that was sent (0xFFFF0900).
Byte(s) 5+ = The Chat Server Banner string, null terminated. Maximum length of the entire packet returned is 512 bytes.


Notes

The "Zones per. World Server" value in the Request Server Names Reply appears to be bogus, as the value has not increased despite the addition of new zones. Likewise, the "number of zones" and "number of zones up" data in the World Server Data response also appear to be invalid. Fully operational servers are returning 100 of 101 zones up.

"Missing" servers (such as the European servers Kael, Sebilis and Venril) belong to UBI Soft Europe, and are not reported by the Status Server. The script works properly, the server just doesn't report those server's status. (Probably for similar reasons, EQIM doesn't work on those servers either.)

Server status is NOT reported correctly from the Status Server. There is nothing to be done about it until SOE fixes it. However, since SOE seems to have stopped supporting or updating the server quite some time ago, an upcoming fix seems unlikely.

Proof of Concept

Perl source may be found here: eqstatus-20031220.tar.Z.

eqstatus.cgi is Copyright © 2003, David G. Hesprich (Dark Grue).

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


EverQuest is a trakemark of Sony Computer Entertainment America, Inc.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.
Picture of The Implementors from the Zork Zero manual, Infocom, 1988.

Copyright © 2004, Dark Grue.