That looks a lot like FiDos code. You sure you MADE IT?

-The G

On Thu, Jul 21, 2011 at 9:43 PM, E3pO <[email protected]> wrote:

> After the recent update and the server crashing non stop I made a little
> php
> script so I could go to sleep....
>
> <?php
>
>    define('PACKET_SIZE', '1400');
>    define('SERVERQUERY_INFO', "\xFF\xFF\xFF\xFFTSource Engine Query");
>    define ('REPLY_INFO', "\x49");
>    define('SERVERQUERY_GETCHALLENGE', "\xFF\xFF\xFF\xFF\x57");
>    define ('REPLY_GETCHALLENGE', "\x41");
>    define('SERVERDATA_AUTH', 3) ;
>    define ('SERVERDATA_EXECCOMMAND', 2) ;
>
>    class srcds_rcon
>    {
>
>        private function getByte(&$string)
>        {
>            $data = substr($string, 0, 1);
>            $string = substr($string, 1);
>            $data = unpack('Cvalue', $data);
>            return $data['value'];
>        }
>
>        private function getShortUnsigned(&$string)
>        {
>            $data = substr($string, 0, 2);
>            $string = substr($string, 2);
>            $data = unpack('nvalue', $data);
>            return $data['value'];
>        }
>
>        private function getShortSigned(&$string)
>        {
>            $data = substr($string, 0, 2);
>            $string = substr($string, 2);
>            $data = unpack('svalue', $data);
>            return $data['value'];
>        }
>
>        private function getLong(&$string)
>        {
>            $data = substr($string, 0, 4);
>            $string = substr($string, 4);
>            $data = unpack('Vvalue', $data);
>            return $data['value'];
>        }
>
>        private function getFloat(&$string)
>        {
>            $data = substr($string, 0, 4);
>            $string = substr($string, 4);
>            $array = unpack("fvalue", $data);
>            return $array['value'];
>        }
>
>        private function getString(&$string)
>        {
>            $data = "";
>            $byte = substr($string, 0, 1);
>            $string = substr($string, 1);
>            while (ord($byte) != "0")
>            {
>                    $data .= $byte;
>                    $byte = substr($string, 0, 1);
>                    $string = substr($string, 1);
>            }
>            return $data;
>        }
>
>        public function rcon_command($ip, $port, $password, $command)
>        {
>            $requestId = 1;
>            $s2 = '';
>            $socket = @fsockopen ('tcp://'.$ip, $port, $errno, $errstr, 30);
>            if (!$socket)
>                return('Unable to connect!');
>            $data = pack("VV", $requestId,
> SERVERDATA_AUTH).$password.chr(0).$s2.chr(0);
>            $data = pack("V",strlen($data)).$data;
>            fwrite ($socket, $data, strlen($data));
>
>            $requestId++ ;
>            $junk = fread ($socket, PACKET_SIZE);
>            $string = fread ($socket, PACKET_SIZE);
>            $size = $this->getLong($string);
>            $id = $this->getLong($string) ;
>
>            if ($id == -1)
>            {
>              return 'Authentication Failed!';
>            }
>
>            $data = pack ("VV", $requestId,
> SERVERDATA_EXECCOMMAND).$command.chr(0).$s2.chr(0) ;
>            $data = pack ("V", strlen ($data)).$data ;
>            fwrite ($socket, $data, strlen($data)) ;
>            $requestId++ ;
>            $i = 0 ;
>            $text = '' ;
>
>            while ($string = fread($socket, 4))
>            {
>              $info[$i]['size'] = $this->getLong($string) ;
>              $string = fread($socket, $info[$i]['size']) ;
>              $info[$i]['id'] = $this->getLong ($string) ;
>              $info[$i]['type'] = $this->getLong ($string) ;
>              $info[$i]['s1'] = $this->getString ($string) ;
>              $info[$i]['s2'] = $this->getString ($string) ;
>              $text .= $info[$i]['s1'];
>              $i++ ;
>              return $text;
>            }
>        }
>    }
> while (true)
>  {
>    echo '---- Server Check ----'.PHP_EOL;
>    $srcds_rcon = new srcds_rcon ();
>    $result =
>      $srcds_rcon->rcon_command ("SERVERIP", "27015", "RCONPASSWORD",
> "status");
>    if ($result == "Unable to connect!")
>      {
>        echo 'ERROR: Can not connect to the server!'.PHP_EOL;
>        $today = date ("F j, Y, g:i a");
>
>        passthru ('killall srcds_linux');
>        echo 'Killed all srcds_linux'.PHP_EOL;
>        passthru ('ulimit -c 2097152 &&
> /home/srcds/srcds_new_surf/orangebox/srcds_run -debug -console -game tf +ip
> 65.18.168.205 +port 27015 +map surf_supersurf_v2 +maxplayers 32
> -autoupdate');  //fu** you autoupdate breakn my shit
>        echo 'Reloaded server.'.PHP_EOL;
>        $message = "Surf Server Crashed (again fml) ".$today;
>        mail ('[email protected],[email protected]', 'Surf Crashed',
> $message);
>      }
>    else
>      {
>        echo escapeshellarg ($result).PHP_EOL;
>      }
>    echo '---- Waiting 60 Seconds ----'.PHP_EOL;
>    sleep (60);
>  }
>
> ?>
>
> Some may find it usefull... run as php5 script.php.
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlds_linux
>
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux

Reply via email to