<?php
if(!defined("MCR")){ exit("Hacking Attempt!"); }
use xPaw\MinecraftQuery;
use xPaw\MinecraftQueryException;
class monitoring{
private $ip, $port, $socket;
public $data, $type;
public function __construct($type=0){
$this->type = $type;
switch($type){
default:
$this->socket = $this->get_socket_libs();
break;
}
}
private function get_socket_libs(){
require_once(MCR_TOOL_PATH.'libs/status_query/MinecraftQuery.php');
require_once(MCR_TOOL_PATH.'libs/status_query/MinecraftQueryException.php');
return new MinecraftQuery();
}
private function socket_connection($ip, $port){
try{
$this->socket->Connect($ip, $port, 5);
} catch( MinecraftQueryException $e ) {
$exception = $e;
}
if(isset($exception) || ($data = $this->socket->GetInfo()) === false){ return false; }
$array = array(
'status' => 'online',
'title' => $data['HostName'],
'type' => $data['GameType'],
'version' => $data['Version'],
'players' => intval($data['Players']),
'slots' => intval($data['MaxPlayers']),
'player_list' => array()
);
if(($list = $this->socket->GetPlayers()) !== false){ $array['player_list'] = $list; }
return $array;
}
private function minetools_connection($ip, $port){
$json = file_get_contents("http://www.api.minetools.eu/query/$ip/$port");
if(!$json){ return false; }
$data = @json_decode($json, true);
if(!$data || isset($data['error'])){ return false; }
$array = array(
'status' => 'online',
'type' => $data['GameType'],
'version' => $data['Version'],
'players' => intval($data['Players']),
'slots' => intval($data['MaxPlayers'])
);
$array['title'] = (is_null($data['HostName'])) ? '' : $data['HostName'];
$array['player_list'] = ($data['Playerlist']=='null') ? array() : $data['Playerlist'];
return $array;
}
public function connect($ip='localhost', $port=25565){
$array = array(
'status' => 'offline',
'title' => '',
'type' => 'SMT',
'version' => 0,
'players' => 0,
'slots' => 0,
'player_list' => array()
);
$this->data = json_encode($array);
if($this->type==1){
$data = $this->minetools_connection($ip, $port);
if($data===false){ return false; }
}else{
$data = $this->socket_connection($ip, $port);
if($data===false){ return false; }
}
$this->data = json_encode($data);
return true;
}
}
?>