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

