Page 1 of 1

Server Tracker Monitor

PostPosted: Tue Dec 20, 2022 5:38 am
by admin
Here I leave some important information about how handler the query ports to create and show up the server monitor to put into some website



Little script called LGSL By Richard Perry (that worked before, but not now "I duno why!" )
https://farcry-wars.com/lgsl-master/

The FarCry game use a protocol called: ASE (All Seeing Eye), to do the query requests for the servers game.
Detects the All-Seeing Eye service. Provided by some game servers for querying the server's status.
The All-Seeing Eye service can listen on a UDP port separate from the main game server port (usually game port + 123). On receiving a packet with the payload "s", it replies with various game server status info... Like: the server name, game type, map name, current number of players, maximum number of players, player information, and various other information.

Here is some reference links:
https://int64.org/docs/gamestat-protocols/ase.html
https://www.codeproject.com/Articles/88 ... ry-Library
https://developer.valvesoftware.com/wiki/Server_queries

RCON protocol
https://developer.valvesoftware.com/wik ... N_Protocol
http://aluigi.altervista.org/papers.htm#ase
https://fremnet.net/article/199/source-rcon-class

I've wrote a little script in PHP as an example to show how it works "Allsee_eye.PHP"
Code: Select all
$sv_IP = "78.45.91.240";              // Server public IP
$sv_cPort  = "49001";                            // Server Port
$sv_qPort  = "49124"; // (49001 + 123)  // Server Query Port

$fp = @fsockopen("udp://{$sv_IP}", $sv_qPort, $errno, $errstr, 1);
echo "------------------------------------------------<br>";
if ($fp) {
   // Open the steam
    stream_set_timeout($fp, 0, 500000);
    stream_set_blocking($fp, TRUE);
   
   echo "Command...<br>";
   fwrite($fp, "s"); // ASE ( ALL SEEING EYE ) PROTOCOL TO FARCRY... It's send the "s" for the server query port to request the server information data!
   
   $buffer = fread($fp, 4096);
   var_dump($buffer);
   echo "<br>";
   if ($buffer) {
       $buffer = substr($buffer, 4); // REMOVE HEADER
       echo var_dump($buffer);
   }else{
      echo "Nothing<br>";
   }
   
   while (!feof($fp)) {
      echo fgets($fp, 128);
   }   
   
}else{
   echo "ERROR<br>";
}
echo "------------------------------------------------<br>";
@fclose($fp)


It's a Plugin that was made to a CMS called e107
https://e107.org/plugins/?id=967

New LGSL version here...
https://github.com/tltneon/lgsl (v6.2)