User:Pizzahut/test.php: Difference between revisions
Jump to navigation
Jump to search
(A test script in PHP to check which master servers respond.) |
(added new IPs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
A test script in PHP to check which master servers respond. | A test script in PHP to check which master servers respond.<br> | ||
The results can vary on a daily basis. | The results can vary on a daily basis. | ||
<pre> | <pre> | ||
<?php | <?php | ||
$master_servers = array("69.28.158.131", " | $master_servers = array("68.177.101.62", "69.28.158.131", "208.64.200.117", "208.64.200.118"); | ||
define("MIN_PORT", 27010); | define("MIN_PORT", 27010); | ||
define("MAX_PORT", | define("MAX_PORT", 27013); | ||
define("FILTER", '\gamedir\tfc'); | define("FILTER", '\gamedir\tfc'); | ||
define("REGION", "\xFF"); | define("REGION", "\xFF"); | ||
Line 24: | Line 24: | ||
$info = stream_get_meta_data($socket); | $info = stream_get_meta_data($socket); | ||
if ($info['timed_out']) | if ($info['timed_out']) | ||
echo " | echo "UNKNOWN (time out occurred)\n"; | ||
else | else | ||
{ | { | ||
Line 30: | Line 30: | ||
{ | { | ||
if ($s == "") | if ($s == "") | ||
echo " | echo "DOWN\n"; | ||
else | else | ||
echo " | echo "MALFUNCTION (expected ff ff ff ff 66 0a (hex) but got $s)\n"; | ||
return True; | return True; | ||
} | } | ||
else | else | ||
echo " | echo "UP\n"; | ||
} | } | ||
return $info['timed_out']; | return $info['timed_out']; |
Latest revision as of 07:35, 17 July 2012
A test script in PHP to check which master servers respond.
The results can vary on a daily basis.
<?php $master_servers = array("68.177.101.62", "69.28.158.131", "208.64.200.117", "208.64.200.118"); define("MIN_PORT", 27010); define("MAX_PORT", 27013); define("FILTER", '\gamedir\tfc'); define("REGION", "\xFF"); define("TIMEOUT", 2.0); function query_timeout(&$socket, $seed) { stream_set_timeout($socket, TIMEOUT); if (!fwrite($socket, "1".REGION."$seed\0".FILTER."\0")) { fclose($socket); exit("fwrite error\n"); } stream_set_timeout($socket, TIMEOUT); $s = bin2hex(fread($socket, 6)); $info = stream_get_meta_data($socket); if ($info['timed_out']) echo "UNKNOWN (time out occurred)\n"; else { if ($s !== "ffffffff660a") { if ($s == "") echo "DOWN\n"; else echo "MALFUNCTION (expected ff ff ff ff 66 0a (hex) but got $s)\n"; return True; } else echo "UP\n"; } return $info['timed_out']; } // Connect to master server, return timeout info. // The socket is passed as reference and thus returned as well. function master_server_timeout(&$socket, $ip) { $port = MIN_PORT; do { echo "Connecting to master server \"$ip:$port\".\n"; $socket = fsockopen("udp://$ip", $port, $errno, $errstr, TIMEOUT); if (!$socket) exit("Error $errno : $errstr \n"); $timeout = query_timeout($socket, "0.0.0.0:0"); fclose($socket); $port = $port + 1; } while ($port <= MAX_PORT); return $timeout; } // Try all master servers. foreach ($master_servers as $ip) $timeout=master_server_timeout($socket, $ip) ?>