Datenpaket an den Listener
Interfaces können über das hier beschriebene Protokoll Befehle und Daten an den Listener senden oder vom Listener empfangen um einen Gameserver zu steuern. Das Datenpaket müss über TCP auf dem in der Konfiguration des Listeners angegebenen Port gesendet werden. Das Datenpaket das gesendet wird ist folgendermaßen aufgebaut:
- Code: Alles auswählen
md5(PASSWORD){0x00}SERVER{0x00}COMMAND{0x00}DATA
Byte - {0x00}
String - Server (Name des Servers aus der games.ini)
Byte - {0x00}
String - Kommando (siehe unten)
Byte - {0x00}
String - Daten
Liste der Kommandos
Der Listener erwartet als dritten String im Datenpaket eins der folgenden Kommandos:
- status - Gibt den Status des Servers zurück (UP = Server läuft DOWN = Server läuft nicht)
- start - Startet den Server
- stop - Stoppt den Server
- get_config - Sendet die Konfigurationsdatei des Servers
- set_config - Erwartet eine neue Konfiguration für den Server und schreibt die server.cfg
- get_log - Sendet die Logdatei des Servers
- delete_log - Löscht die Log Datei
Ein Paket zum starten eines Servers könnte folgendermaßen aussehen:
- Code: Alles auswählen
e22a63fb76874c99488435f26b117e37\x00server1\x00start\x00
Antwort vom Listener
Der Listener antwortet bei falschem Passwort mit
Login fail.Auf den status Befehl antwortet der Listener entweder mit einem Byte
{0x00} wenn der Server nicht läuft oder mit einem Byte {0x01} wenn der Server läuft.Auf start und stop Befehl wird mit
starting server bzw. stopping server geantwortet.Auf get_config und get_log antwortet der Server mit dem Inhalt der jeweiligen Datei.
Auf delete_log antwortet der Server mit
delete logAuf set_config antwortet der Server mit
write configfileBeispielcode
Der hier gezeigte Code ist ein Beispiel wie man über ein PHP-Script mit dem Listener kommunizieren kann.
- Code: Alles auswählen
$send = md5('passwort') . "\x00" . 'server1' . "\x00" . 'start' . "\x00";
$socket = fsockopen('123.123.123.123', '8006', $errno, $error, 0.5);
fwrite($socket, $send . "\n");
$buffer = '';
while (!feof($socket))
{
$buffer .= fgets($socket);
}
echo $buffer;
fclose($socket);
