1 |
This brief document is meant to describe the operation of the crossfire |
2 |
metaserver, as well as the form of the data. |
3 |
|
4 |
The metaserver listens on port 13326 for both tcp and udp packets. |
5 |
|
6 |
The server sends updates to the metaserver via udp. The metaserver only |
7 |
does basic checking on the data that server sends. It trusts the server |
8 |
for the ip name it provides. The metaserver does add the ip address |
9 |
and also tracks the idle time (time since last packet received). |
10 |
|
11 |
The client gets its information from the metaserver through connecting by |
12 |
means of tcp. When the metaserver accepts the tcp connection, it dumps |
13 |
the metaserver information over the connection - there is no negotiation |
14 |
that needs to be done (and in fact, a telnet to port 13326 will show |
15 |
the dumped data). |
16 |
|
17 |
The current metaserver implementation is in Perl. But the metaserver could be |
18 |
in any language. Currently, perl is fast enough for the amount of data |
19 |
that is being exchanged. |
20 |
|
21 |
An example of a line from metaserver output: |
22 |
|
23 |
165.227.59.56|330|tavern.santa-clara.ca.us|0|1.0.0|Development server - |
24 |
usually running CVS or even later experimental code. At end of DSL link (128k |
25 |
upload). May be restarted unexpectedly - play at your own |
26 |
risk.|3254|117133|1569 |
27 |
|
28 |
For input and output, all this data is on a single line. It is broken up here |
29 |
to be more readable. |
30 |
|
31 |
The first field (165.227.59.56) is the ip address that send this to the |
32 |
server. The metaserver adds this information. |
33 |
|
34 |
The second field (330) is the number of seconds since the metaserver last |
35 |
received and update from this server. |
36 |
|
37 |
The third fields and beyond are all data the server has sent to the |
38 |
metaserver. |
39 |
|
40 |
The third field (tavern.santa-clara.ca.us) is the hostname of the server. |
41 |
This is provided by the server itself - the metaserver does not look |
42 |
this up. |
43 |
|
44 |
Fourth field (0) is the number of players currently on the server. |
45 |
|
46 |
Fifth field (1.0.0) is the version of the server. |
47 |
|
48 |
Sixth field (Development server ....) is comment. It can contain most |
49 |
any character or data. For clarity reasons, this is not used in the unix |
50 |
clients, but is used on the web page output. This should not contain any |
51 |
vertical bars, as it will then confusion programs parsing the data. |
52 |
|
53 |
Seventh field (3254) is the number of bytes the server has taken in over the |
54 |
socket over the lifetime of that server instance. |
55 |
|
56 |
Eigth field (117133) is the number of bytes the server has written out |
57 |
on the socket over the lifetime of that server instance. |
58 |
|
59 |
Ninth field (1569) is the number of seconds this server instance has been up. |
60 |
When referring to server instance for the 7->9'th field, this means how |
61 |
long since the executable has been started. A particular host may have |
62 |
been running a server for quite a long time, but due to updates or crashes, |
63 |
the length of time the server instance has been up may be much shorter. |
64 |
|