Sorry Stewie :| Had niet door dat dat niet de bedoeling was.
En de Code, is nogal een stukje. Maar het zit versprijd in verschillende scripts.
Ik plaats het zo. Bedankt.
FUNC2.php:
PHP Code:
<?php
function getByte(&$string)
{
$data = substr($string, 0, 1);
$string = substr($string, 1);
$data = unpack('Cvalue', $data);
return $data['value'];
}
function getShortUnsigned(&$string)
{
$data = substr($string, 0, 2);
$string = substr($string, 2);
$data = unpack('nvalue', $data);
return $data['value'];
}
function getShortSigned(&$string)
{
$data = substr($string, 0, 2);
$string = substr($string, 2);
$data = unpack('svalue', $data);
return $data['value'];
}
function getLong(&$string)
{
$data = substr($string, 0, 4);
$string = substr($string, 4);
$data = unpack('Vvalue', $data);
return $data['value'];
}
function getFloat(&$string)
{
$data = substr($string, 0, 4);
$string = substr($string, 4);
$array = unpack("fvalue", $data);
return $array['value'];
}
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;
}
?>
Test.php:
PHP Code:
<?php
include("./config.php");
include("./func2.php");
if (isset($_POST['testb'])) {
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");
// Ip address and port
//$_ip = '86.83.25.94' ; // server ip
//$_port = '27015'; // server port
//$_password = 'Tog maar wel verborgen :P' ; // your rcon password
$s2 = '';
$command = 'status';
$requestId = 1;
// open connection with server
$socket = fsockopen ('tcp://'.$ip, $port, $errno, $errstr, 15) ;
// Construct packet
$data = pack("VV", $requestId, SERVERDATA_AUTH).$pass.chr(0).$s2.chr(0);
// Prefix the packet by its size
$data = pack("V",strlen($data)).$data;
// Send packet
fwrite ($socket, $data, strlen($data)) ;
$requestId++ ;
// Check if auth is successful
$junk = fread ($socket, PACKET_SIZE) ;
$string = fread ($socket, PACKET_SIZE) ;
$size = getLong($string) ;
$id = getLong ($string) ;
if ($id == -1)
{
// Error
die ('Auth failed: bad password !') ;
}
// Sending the command and getting the answer
$data = pack ("VV", $requestId, SERVERDATA_EXECCOMMAND).$command.chr(0).$s2.chr(0) ;
// Prefix the packet by its size
$data = pack ("V", strlen ($data)).$data ;
// Send packet
fwrite ($socket, $data, strlen($data)) ;
$requestId++ ;
// Read response
$i = 0 ;
$text = '' ;
while ($string = fread($socket, 4))
{
$info[$i]['size'] = getLong($string) ;
$string = fread($socket, $info[$i]['size']) ;
$info[$i]['id'] = getLong ($string) ;
$info[$i]['type'] = getLong ($string) ;
$info[$i]['s1'] = getString ($string) ;
$info[$i]['s2'] = getString ($string) ;
$text .= $info[$i]['s1'] ;
$i++ ;
}
echo "<br/> TEXT:".$text;
}
?>