ServerStatus/query.php

138 lines
3.4 KiB
PHP

<?php
error_reporting(0);
header('Access-Control-Allow-Origin: *');
$type = strip_tags($_GET['type']);
$ip = strip_tags($_GET['ip']);
$container = strip_tags($_GET['container']);
$id = strip_tags($_GET['id']);
require 'hidden/SourceQuery/bootstrap.php';
use xPaw\SourceQuery\SourceQuery;
require 'hidden/MinecraftQuery/MinecraftQueryClass.php';
require 'hidden/MinecraftQuery/MinecraftQueryException.php';
require 'hidden/MinecraftQuery/MinecraftColors.php';
use xPaw\MinecraftQuery;
use xPaw\MinecraftQueryException;
//include('hidden/csgo_query.php');
require_once("hidden/TeamSpeak3/TeamSpeak3.php");
switch($type) {
case 'csgo': echo json_encode(csgoStatus($ip,$container,$id));break;
case 'ts': echo json_encode(tsStatus($ip,$container,$id));break;
case 'mc': echo json_encode(mcStatus($ip,$container,$id));break;
default: echo json_encode('bad query');break;
}
function csgoStatus($address,$container,$id) {
$response = '';
/*$q = format_source_query(source_query($address));
if ($q['hostname'] == '0') {
$response['status'] = 'offline';
}
else {
$response['status'] = 'online';
$response['map'] = $q['map'];
$response['players'] = $q['players'] . '/' . $q['maxplayers'];
}*/
$Query = new SourceQuery();
$exploded_ip = explode(':',$address);
try
{
$Query->Connect( $exploded_ip[0], $exploded_ip[1], 1, SourceQuery::SOURCE );
$info = $Query->GetInfo();
$response['status'] = 'online';
$response['map'] = $info['Map'];
$response['players'] = $info['Players'] . '/' . $info['MaxPlayers'];
}
catch( Exception $e )
{
//echo $e->getMessage( );
$response['status'] = 'offline';
}
finally
{
$Query->Disconnect( );
}
$response['container'] = $container;
$response['id'] = $id;
return $response;
}
function tsStatus($address,$container,$id) {
$response = '';
try
{
$ts3 = TeamSpeak3::factory("serverquery://".$address);
//query_user:query_pass@host:10011/?server_port=9987
$response['status'] = 'online';
$response['map'] = '';
$response['players'] = $ts3->virtualserver_clientsonline-1 . " / " . $ts3->virtualserver_maxclients;
}
catch(Exception $e)
{
$response['status'] = 'offline';
}
/*$c = file_get_contents($address);
$j = json_decode($c);
if ($j->status == "Online") {
$response['status'] = 'online';
$response['map'] = '';
$response['players'] = $j->players . " / " . $j->slots;
}
else {
$response['status'] = 'offline';
}*/
$response['container'] = $container;
$response['id'] = $id;
return $response;
}
function mcStatus($address,$container,$id) {
$response = '';
$address = explode(':',$address);
Ini_Set('display_errors', true);
$Query = new MinecraftQuery();
try
{
$Query->Connect($address[0], $address[1], 1);
}
catch(MinecraftQueryException $e)
{
$Exception = $e;
}
if (($Info = $Query->GetInfo()) !== false) {
$response['status'] = 'online';
$response['map'] = $Info['Map'];
$response['players'] = $Info['Players'] . " / " . $Info['MaxPlayers'];
$response['container'] = $container;
$response['id'] = $id;
}
else {
$response['status'] = 'offline';
$response['container'] = $container;
$response['id'] = $id;
}
return $response;
}
?>