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 hidden or 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