this page describes the methods of discovering monopd servers.
as far as I can see by looking at atlantik and gtkatlantic there are two different ways of discovering servers, monopigator (used by atlantik) and meta-atlantic (used by gtkatlantic). they both however use XML to describe the servers (its slightly different but we should be able to parse both at the same time), the only big difference is that monopigator uses http where meta-atlantic uses a custom atlantic-like Command->Response Protocol.
monopigator
there is only one monopigator server that I know of (which is hardcoded in the atlantik source) which is http://monopd-gator.kde.org/, to get the server list you just have to request the page and parse the resuling XML.
<?xml version='1.0'?> <monopigator> <server ip="193.85.247.149" host="pro.vserver.cz" port="11234" version="0.9.3" users="0" /> <server ip="69.13.181.249" host="all-games-2.bishopston.net" port="11234" version="0.9.3-p4" users="1" /> <server ip="66.221.209.131" host="all-games-1.bishopston.net" port="11234" version="0.9.3-p7" users="4" /> <server ip="82.211.59.207" host="monopd.de.eu.conceptt.com" port="1234" version="0.9.3.1" users="0" /> </monopigator>
meta-atlantic
as I said earlier these use a custom protocol, a server you can screw around with is at meta.gradator.net port 1240 (like monopd it sends one xml document per line)
Note: the commands seem to be Case-Sensitive
Commands (basically nicked from the create_connection_metaserver function in game.c in gtkatlantic):
- CHECKCLIENT: seems to be a check function for newer gtkatlantic versions? (we probably won't need it)
- SERVERLIST: Returns an XML-Formatted Serverlist
- GAMELIST: Returns an XML-Formatted Game List
CHECKCLIENT:
- Seems to Take 2 Arguments, Package Name and Package Version
SERVERLIST:
Returns something like the following:
<meta_atlantic><server host="solarium.devnullteam.org" port="1230" version="0.8.3" users="0" /><server host="solarium.devnullteam.org" port="1231" version="0.8.3" users="0" /><server host="solarium.devnullteam.org" port="1232" version="0.8.3" users="0" /><server host="solarium.devnullteam.org" port="1233" version="0.8.3" users="0" /></meta_atlantic>
GAMELIST:
Returns something like:
<meta_atlantic><servergamelist host="solarium.devnullteam.org" port="1230" version="0.8.3"><game id="-1" gametype="atlantic" name="Atlantic" description="Rob Kaper's Atlantic"/><game id="-1" gametype="city" name="Monopoly" description="The classic Monopoly game"/></servergamelist><servergamelist host="solarium.devnullteam.org" port="1231" version="0.8.3"><game id="-1" gametype="atlantic" name="Atlantic" description="Rob Kaper's Atlantic"/><game id="-1" gametype="city" name="Monopoly" description="The classic Monopoly game"/></servergamelist><servergamelist host="solarium.devnullteam.org" port="1232" version="0.8.3"><game id="-1" gametype="atlantic" name="Atlantic" description="Rob Kaper's Atlantic"/><game id="-1" gametype="city" name="Monopoly" description="The classic Monopoly game"/></servergamelist><servergamelist host="solarium.devnullteam.org" port="1233" version="0.8.3"><game id="-1" gametype="atlantic" name="Atlantic" description="Rob Kaper's Atlantic"/><game id="-1" gametype="city" name="Monopoly" description="The classic Monopoly game"/></servergamelist></meta_atlantic>