126 lines
2.3 KiB
PHP
126 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
include "mumble-ping.php";
|
||
|
|
||
|
// load
|
||
|
try{
|
||
|
$mumble = new mumble("GeoLite2-Country.mmdb");
|
||
|
|
||
|
$res = $mumble->ping(
|
||
|
$_GET["ip"],
|
||
|
isset($_GET["port"]) ? $_GET["port"] : 64738,
|
||
|
);
|
||
|
|
||
|
if($res["server"]["name"] !== null){
|
||
|
|
||
|
$str = $res["server"]["name"];
|
||
|
}else{
|
||
|
|
||
|
$str = "Unknown serber name!!";
|
||
|
|
||
|
if(isset($_GET["name"])){
|
||
|
|
||
|
$str = $_GET["name"];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}catch(Exception $error){
|
||
|
|
||
|
$ip = isset($_GET["ip"]) ? $_GET["ip"] : "Unknown address";
|
||
|
$port = isset($_GET["port"]) ? $_GET["port"] : "???";
|
||
|
|
||
|
http_response_code(404);
|
||
|
$res = [
|
||
|
"server" => [
|
||
|
"online" => "0",
|
||
|
"max" => "0",
|
||
|
"domains" => [ $ip ],
|
||
|
"port" => $port,
|
||
|
"country" => [
|
||
|
"code" => "blank"
|
||
|
]
|
||
|
]
|
||
|
];
|
||
|
|
||
|
$str = "Host unreachable!!";
|
||
|
}
|
||
|
|
||
|
$im = new Imagick();
|
||
|
$im->newImage(468, 60, "#282828");
|
||
|
$im->setImageFormat("png");
|
||
|
|
||
|
// bg
|
||
|
$bg = new Imagick("bg.png");
|
||
|
$im->compositeImage($bg, imagick::COMPOSITE_OVER, 367, 1);
|
||
|
|
||
|
// text
|
||
|
$stroke = new ImagickDraw();
|
||
|
$stroke->setStrokeColor("#504945");
|
||
|
$stroke->setFillColor("transparent");
|
||
|
$stroke->rectangle(0, 0, 467, 59);
|
||
|
$im->drawImage($stroke);
|
||
|
|
||
|
$draw = new ImagickDraw();
|
||
|
$draw->setFillColor("#ebdbb2");
|
||
|
$draw->setFontSize(13);
|
||
|
$draw->setFont("COMIC.TTF");
|
||
|
|
||
|
$newstr = "";
|
||
|
if(strlen($str) > 84){
|
||
|
|
||
|
for($i=0; $i<84; $i++){
|
||
|
|
||
|
$newstr .= $str[$i];
|
||
|
}
|
||
|
|
||
|
$str = trim($newstr) . "...";
|
||
|
unset($newstr);
|
||
|
}
|
||
|
|
||
|
$str = trim($str);
|
||
|
|
||
|
$str = explode("\n", wordwrap($str, 45, "\n", true));
|
||
|
|
||
|
if(count($str) === 1){
|
||
|
|
||
|
$im->annotateImage($draw, 5, 25, 0, $str[0]);
|
||
|
}else{
|
||
|
for($i=0; $i<2; $i++){
|
||
|
|
||
|
$im->annotateImage($draw, 5, (16 * $i) + 15, 0, $str[$i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// flag
|
||
|
if(idate("m") === 11){
|
||
|
$path = "flag/xmas/";
|
||
|
}else{
|
||
|
$path = "flag/";
|
||
|
}
|
||
|
|
||
|
$merge = new Imagick($path . strtolower($res["server"]["country"]["code"]) . ".png");
|
||
|
$height = $merge->getImageHeight();
|
||
|
|
||
|
$im->compositeImage($merge, imagick::COMPOSITE_OVER, 5, 46 - ($height / 2));
|
||
|
|
||
|
// ip
|
||
|
$draw->setFillColor("#bdae93");
|
||
|
$im->annotateImage($draw, 30, 51, 0, $res["server"]["domains"][0]);
|
||
|
|
||
|
// users
|
||
|
if($res["server"]["online"] > 0){
|
||
|
$name = "buddy.png";
|
||
|
}else{
|
||
|
$name = "buddy_alone.png";
|
||
|
}
|
||
|
|
||
|
$buddy = new Imagick($name);
|
||
|
$im->compositeImage($buddy, imagick::COMPOSITE_OVER, 340, 40);
|
||
|
|
||
|
$im->annotateImage($draw, 360, 53, 0, $res["server"]["online"] . "/" . $res["server"]["max"]);
|
||
|
|
||
|
// done.
|
||
|
header("Content-Type: image/png");
|
||
|
echo $im->getImageBlob();
|
||
|
?>
|