Created
June 3, 2011 09:23
-
-
Save z0w0/1006087 to your computer and use it in GitHub Desktop.
A PHP script that displays the server status of a Blockland server, with image/json/xml output.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if(count($_GET) <= 0 || (!isSet($_GET[h]) && !isSet($_GET[a])) || $_GET["h"] == "") | |
{ | |
return; | |
} | |
if(!isSet($_GET[t]) && $_GET[t] != 2 && $_GET[t] != 3) | |
{ | |
$_GET[t] = 2; | |
} | |
if(!isSet($_GET[i]) || ($_GET[i] != "png" && $_GET[i] != "gif" && $_GET[i] != "jpeg")) | |
{ | |
$_GET[i] = "png"; | |
} | |
$servers = file("http://master2.blockland.us/"); | |
foreach($servers as $index => $server) | |
{ | |
$server = explode("\t",$server); | |
if(count($server) == 1) | |
continue; | |
$host = strpos($server[4],"'",0); | |
$host = substr($server[4],0,$host); | |
if(isSet($_GET[p]) && $server[1] != $_GET[p]) | |
continue; | |
if($host == $_GET[h]) | |
$target = $server; | |
else if($server[0] == $_GET[a]) | |
$target = $server; | |
if(count($target) >= 9) | |
break; | |
} | |
if(count($target) > 1) | |
{ | |
if(isSet($_GET["ot"])) | |
{ | |
$output = $_GET["ot"]; | |
$name = $target[4]; | |
if(isSet($_GET["n"])) | |
$name = $_GET["n"]; | |
$dedi = $target[3] == 1 ? true : false; | |
$passed = $target[2] == 1 ? true : false; | |
$players = (int) $target[5]; | |
$maxplayers = (int) $target[6]; | |
$bricks = (int) $target[8]; | |
$map = $target[7]; | |
$host = $_GET["h"]; | |
if($output == "json") | |
{ | |
$json = json_encode | |
( | |
array | |
( | |
"status" => true, | |
"host" => $host, | |
"name" => $name, | |
"dedicated" => $dedi, | |
"passworded" => $passed, | |
"players" => $players, | |
"maxplayers" => $maxplayers, | |
"bricks" => $bricks, | |
"map" => $map | |
) | |
); | |
$callback = $_GET["cb"]; | |
if(isSet($callback)) | |
die($callback . "(" . $json . ");"); | |
else | |
die($json); | |
} | |
else if($output == "xml") | |
{ | |
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; | |
$xml .= "\n<server>"; | |
$xml .= "\n\t<status>true</status>"; | |
$xml .= "\n\t<host>" . $host . "</host>"; | |
$xml .= "\n\t<name>" . $name . "</name>"; | |
$xml .= "\n\t<dedicated>" . ($dedi ? "true" : "false") . "</dedicated>"; | |
$xml .= "\n\t<passworded>" . ($passed ? "true" : "false") . "</passworded>"; | |
$xml .= "\n\t<players>" . $players . "</players>"; | |
$xml .= "\n\t<maxplayers>" . $maxplayers . "</maxplayers>"; | |
$xml .= "\n\t<bricks>" . $bricks . "</bricks>"; | |
$xml .= "\n\t<map>" . $map . "</map>"; | |
$xml .= "\n</server>"; | |
die($xml); | |
} | |
} | |
switch($_GET[t]) | |
{ | |
case "2": | |
$im = imagecreatefrompng("./images/template2.png"); | |
$red = imagecolorallocate($im,255,0,0); | |
$purple = imagecolorallocate($im,255,0,255); | |
$green = imagecolorallocate($im,0,255,0); | |
$white = imagecolorallocate($im,255,255,255); | |
$black = imagecolorallocate($im,0,0,0); | |
if($_GET[wt]) | |
$black = $white; | |
imagesavealpha($im,true); | |
if(isSet($_GET[o])) | |
{ | |
$over = 0; | |
switch($_GET[o]) | |
{ | |
case "social": | |
$over = imagecreatefrompng("./images/overlay2_social.png"); | |
break; | |
case "adventure": | |
$over = imagecreatefrompng("./images/overlay2_adventure.png"); | |
break; | |
case "city": | |
$over = imagecreatefrompng("./images/overlay2_city.png"); | |
break; | |
case "challenge": | |
$over = imagecreatefrompng("./images/overlay2_challenge.png"); | |
break; | |
case "medieval": | |
$over = imagecreatefrompng("./images/overlay2_medieval.png"); | |
break; | |
default: | |
$over = imagecreatefromstring(file_get_contents($_GET[o])); | |
break; | |
} | |
if($over) | |
{ | |
imagecopy($im,$over,0,0,0,0,200,213); | |
imagedestroy($over); | |
} | |
} | |
$name = $target[4]; | |
if(isSet($_GET[n])) | |
$name = $_GET[n]; | |
$name = strLen($name) > 22 ? subStr($name,0,22) . "..." : $name; | |
$dedi = $target[3] == 1 ? "Yes" : "No"; | |
$passed = $target[2] == 1 ? "Yes" : "No"; | |
$players = $target[5] . "/" . $target[6]; | |
$bricks = $target[8]; | |
$map = $target[7]; | |
if($target[5] >= $target[6]) | |
imagettftext($im,12,0,11,36,$red,"./images/segoeUI.ttf",$name); | |
else if($target[2]) | |
imagettftext($im,12,0,11,36,$purple,"./images/segoeUI.ttf",$name); | |
else if($target[5] < $target[6]) | |
imagettftext($im,12,0,11,36,$green,"./images/segoeUI.ttf",$name); | |
else | |
imagettftext($im,12,0,11,36,$white,"./images/segoeUI.ttf",$name); | |
imagettftext($im,10,0,78,71,$black,"./images/segoeUI.ttf",$dedi); | |
imagettftext($im,10,0,88,99,$black,"./images/segoeUI.ttf",$passed); | |
imagettftext($im,10,0,59,128,$black,"./images/segoeUI.ttf",$players); | |
imagettftext($im,10,0,52,155,$black,"./images/segoeUI.ttf",$bricks); | |
imagettftext($im,10,0,45,183,$black,"./images/segoeUI.ttf",$map); | |
break; | |
case "3": | |
$im = imagecreatefrompng("./images/template3.png"); | |
$red = imagecolorallocate($im,255,0,0); | |
$purple = imagecolorallocate($im,255,0,255); | |
$green = imagecolorallocate($im,0,255,0); | |
$white = imagecolorallocate($im,255,255,255); | |
imagesavealpha($im,true); | |
$name = $target[4]; | |
if(isSet($_GET[n])) | |
$name = $_GET[n]; | |
$dedi = $target[3] == 1 ? "Yes" : "No"; | |
$passed = $target[2] == 1 ? "Yes" : "No"; | |
$players = $target[5] . "/" . $target[6]; | |
$bricks = $target[8]; | |
$map = $target[7]; | |
if($target[5] >= $target[6]) | |
imagettftext($im,12,0,10,18,$red,"./images/segoeUI.ttf",$name); | |
else if($target[2]) | |
imagettftext($im,12,0,10,18,$purple,"./images/segoeUI.ttf",$name); | |
else if($target[5] < $target[6]) | |
imagettftext($im,12,0,10,18,$green,"./images/segoeUI.ttf",$name); | |
else | |
imagettftext($im,12,0,10,18,$white,"./images/segoeUI.ttf",$name); | |
imagettftext($im,10,0,30,42,$white,"images/segoeUI.ttf",$players); | |
imagettftext($im,10,0,100,42,$white,"images/segoeUI.ttf",$passed); | |
imagettftext($im,10,0,157,42,$white,"images/segoeUI.ttf",$dedi); | |
imagettftext($im,10,0,212,42,$white,"images/segoeUI.ttf",$bricks); | |
imagettftext($im,10,0,295,42,$white,"images/segoeUI.ttf",$map); | |
break; | |
} | |
} | |
else | |
{ | |
if(isSet($_GET["ot"])) | |
{ | |
$output = $_GET["ot"]; | |
$host = $_GET["h"]; | |
if($output == "json") | |
{ | |
$json = json_encode | |
( | |
array | |
( | |
"status" => false, | |
"host" => $host | |
) | |
); | |
$callback = $_GET["cb"]; | |
if(isSet($callback)) | |
die($callback . "(" . $json . ");"); | |
else | |
die($json); | |
} | |
else if($output == "xml") | |
{ | |
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; | |
$xml .= "\n<server>"; | |
$xml .= "\n\t<status>false</status>"; | |
$xml .= "\n\t<host>" . $host . "</host>"; | |
$xml .= "\n</server>"; | |
die($xml); | |
} | |
} | |
switch($_GET[t]) | |
{ | |
case "2": | |
$im = imagecreatefrompng("./images/template2.png"); | |
$white = imagecolorallocate($im,255,255,255); | |
$black = imagecolorallocate($im,0,0,0); | |
if($_GET[wt]) | |
$black = $white; | |
imagesavealpha($im,true); | |
if(isSet($_GET[o])) | |
{ | |
$over = 0; | |
switch($_GET[o]) | |
{ | |
case "social": | |
$over = imagecreatefrompng("./images/overlay2_social.png"); | |
break; | |
case "adventure": | |
$over = imagecreatefrompng("./images/overlay2_adventure.png"); | |
break; | |
case "city": | |
$over = imagecreatefrompng("./images/overlay2_city.png"); | |
break; | |
case "challenge": | |
$over = imagecreatefrompng("./images/overlay2_challenge.png"); | |
break; | |
case "medieval": | |
$over = imagecreatefrompng("./images/overlay2_medieval.png"); | |
break; | |
default: | |
$over = imagecreatefromstring(file_get_contents($_GET[o])); | |
break; | |
} | |
if($over) | |
{ | |
imagecopy($im,$over,0,0,0,0,200,213); | |
imagedestroy($over); | |
} | |
} | |
$name = isSet($_GET[h]) ? $_GET[h] . "'s Server" : $_GET[a]; | |
if(isSet($_GET[n])) | |
$name = $_GET[n]; | |
$name = strLen($name) > 22 ? subStr($name,0,22) . "..." : $name; | |
$dedi = "N/A"; | |
$passed = "N/A"; | |
$players = "N/A"; | |
$bricks = "N/A"; | |
$map = "N/A"; | |
imagettftext($im,12,0,11,36,$white,"images/segoeUI.ttf",$name); | |
imagettftext($im,10,0,78,71,$black,"images/segoeUI.ttf",$dedi); | |
imagettftext($im,10,0,88,99,$black,"images/segoeUI.ttf",$passed); | |
imagettftext($im,10,0,59,128,$black,"images/segoeUI.ttf",$players); | |
imagettftext($im,10,0,52,155,$black,"images/segoeUI.ttf",$bricks); | |
imagettftext($im,10,0,45,183,$black,"images/segoeUI.ttf",$map); | |
break; | |
case "3": | |
$im = imagecreatefrompng("./images/template3.png"); | |
$white = imagecolorallocate($im,255,255,255); | |
imagesavealpha($im,true); | |
$name = isSet($_GET[h]) ? $_GET[h] . "'s Server" : $_GET[a]; | |
if(isSet($_GET[n])) | |
$name = $_GET[n]; | |
$dedi = "N/A"; | |
$passed = "N/A"; | |
$players = "N/A"; | |
$bricks = "N/A"; | |
$map = "N/A"; | |
imagettftext($im,12,0,10,18,$white,"images/segoeUI.ttf",$name); | |
imagettftext($im,10,0,30,42,$white,"images/segoeUI.ttf",$players); | |
imagettftext($im,10,0,100,42,$white,"images/segoeUI.ttf",$passed); | |
imagettftext($im,10,0,157,42,$white,"images/segoeUI.ttf",$dedi); | |
imagettftext($im,10,0,212,42,$white,"images/segoeUI.ttf",$bricks); | |
imagettftext($im,10,0,295,42,$white,"images/segoeUI.ttf",$map); | |
break; | |
} | |
} | |
if($im) | |
{ | |
header("Content-type: image/" . $_GET[i]); | |
switch($_GET[i]) | |
{ | |
case "png": | |
imagepng($im); | |
break; | |
case "gif": | |
imagegif($im); | |
break; | |
case "jpeg": | |
imagejpeg($im); | |
break; | |
} | |
imagedestroy($im); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment