You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							2.5 KiB
						
					
					
				<?php
 | 
						|
// error_reporting(0);
 | 
						|
header('Content-Type: application/json');
 | 
						|
set_error_handler("exception_error_handler", E_ALL);
 | 
						|
 | 
						|
require_once __DIR__ . "/../include/tsutils.php";
 | 
						|
require_once __DIR__ . "/../lib/phpfastcache/autoload.php";
 | 
						|
 | 
						|
date_default_timezone_set($config["general"]["timezone"]);
 | 
						|
 | 
						|
use phpFastCache\Util;
 | 
						|
use phpFastCache\CacheManager;
 | 
						|
 | 
						|
Util\Languages::setEncoding("UTF-8");
 | 
						|
$cache = CacheManager::Files();
 | 
						|
 | 
						|
$serverstatus = $cache->get('serverstatus');
 | 
						|
 | 
						|
// $cache->clean();
 | 
						|
 | 
						|
if (is_null($serverstatus)) {
 | 
						|
    $serverstatus = getResult();
 | 
						|
    $cache->set('serverstatus', $serverstatus, 10);
 | 
						|
}
 | 
						|
 | 
						|
die ($serverstatus);
 | 
						|
 | 
						|
// *********
 | 
						|
//  METHODS
 | 
						|
// *********
 | 
						|
 | 
						|
function getResult() {
 | 
						|
    try {
 | 
						|
        $start = microtime(true);
 | 
						|
 | 
						|
        $tsstatus = getTeamspeakServerStatus();
 | 
						|
 | 
						|
        $stop = microtime(true);
 | 
						|
 | 
						|
        return json_encode(array(
 | 
						|
            "tsstatus" => $tsstatus,
 | 
						|
            "generated" => date('d-m-Y H:i:s')
 | 
						|
        ));
 | 
						|
    } catch (Exception $e) {
 | 
						|
        scriptFail($e);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function scriptFail($error) {
 | 
						|
    die(json_encode(array(
 | 
						|
        "success" => false,
 | 
						|
        "id" => "script_error",
 | 
						|
        "message" => "There has been an error while retrieving the server status",
 | 
						|
        "error" => $error
 | 
						|
    )));
 | 
						|
}
 | 
						|
 | 
						|
function exception_error_handler($errno, $errstr, $errfile, $errline) {
 | 
						|
    scriptFail("[$errfile @ $errline] " . $errstr);
 | 
						|
}
 | 
						|
 | 
						|
function getTeamspeakServerStatus() {
 | 
						|
 | 
						|
    $response = pingTeamspeakServerFromConfig();
 | 
						|
 | 
						|
    if ($response) {
 | 
						|
        return array(
 | 
						|
            "success"           => $response["virtualserver_status"]->toString() == "online",
 | 
						|
            "name"              => $response["virtualserver_name"]->toString(),
 | 
						|
            "clientsonline"     => $response["virtualserver_clientsonline"] - $response["virtualserver_queryclientsonline"],
 | 
						|
            "maxclients"        => $response["virtualserver_maxclients"],
 | 
						|
            "version"           => TeamSpeak3_Helper_Convert::versionShort($response["virtualserver_version"]->toString())->toString(),
 | 
						|
            "platform"          => $response["virtualserver_platform"]->toString(),
 | 
						|
            "uptime"            => TeamSpeak3_Helper_Convert::seconds($response["virtualserver_uptime"], false, "%dd %02dh %02dm"),
 | 
						|
            "averagePacketloss" => $response["virtualserver_total_packetloss_total"]->toString(),
 | 
						|
            "averagePing"       => $response["virtualserver_total_ping"]->toString()
 | 
						|
        );
 | 
						|
    } else {
 | 
						|
        return array(
 | 
						|
            "success" => false,
 | 
						|
            "id" => "not_responding",
 | 
						|
            "message" => "Server is not responding"
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |