Skip to content

Instantly share code, notes, and snippets.

@Bluscream
Created July 2, 2018 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bluscream/424098578b20326ec75dc90f2fb89c86 to your computer and use it in GitHub Desktop.
Save Bluscream/424098578b20326ec75dc90f2fb89c86 to your computer and use it in GitHub Desktop.
<?php
/**
* Created by PhpStorm.
* User: blusc
* Date: 7/2/2018
* Time: 6:41 PM
*/
require_once __DIR__ . '/vendor/autoload.php';
include_once 'config.php';
TeamSpeak3::init();
try {
TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryWaitTimeout", "onTimeout");
TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyCliententerview", "onClientEnter");
TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerselected", "onSelect");
$uri = "serverquery://".$teamspeak["loginname"].":".$teamspeak["loginpass"]."@".$teamspeak["host"].":".$teamspeak["queryport"]."/?server_port=".$teamspeak["serverport"]."&nickname=".urlencode($teamspeak["nickname"])."&blocking=0";
echo $uri."\n\n";
$tsHandle = TeamSpeak3::factory($uri);
while(1) $tsHandle->getAdapter()->wait();
} catch(Exception $e) {
die("[ERROR] " . $e->getMessage() . "\n");
}
/**
* @param $seconds
* @param TeamSpeak3_Adapter_ServerQuery $adapter
*/
function onTimeout($seconds, TeamSpeak3_Adapter_ServerQuery $adapter) {
$last = $adapter->getQueryLastTimestamp();
$time = time();
$newtime = $time-300;
$update = $last < $newtime;
$update_str = ($update) ? 'true' : 'false';
print_r("Timeout! seconds=$seconds last=$last time=$time newtime=$newtime update=$update_str\n");
if($update)
{
$adapter->request("clientupdate");
}
}
/**
* @param TeamSpeak3_Node_Host $host
*/
function onSelect(TeamSpeak3_Node_Host $host) {
$host->serverGetSelected()->notifyRegister("server");
}
/**
* @param TeamSpeak3_Adapter_ServerQuery_Event $event
* @param TeamSpeak3_Node_Host $host
*/
function onClientEnter(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host) {
try {
if ($event["client_type"] == 0) {
$client = $host->serverGetSelected()->clientGetById($event["clid"]);
$clientInfo = $client->getInfo();
print_r($clientInfo);
$mytsid = $clientInfo["client_myteamspeak_id"];
print_r("\$mytsid = $mytsid\n");
$match = preg_match("/^A[\da-zA-Z\/]{43}$/", $mytsid);
print_r("\$match = $match\n");
if (!$match) {
echo "would kick!\n";return;
$client->kick(5, 'Invalid or missing myTeamspeak ID!');
}
}
} catch(TeamSpeak3_Exception $e) {
echo "Error ".$e->getCode().": ".$e->getMessage();
$client = $host->serverGetSelected()->clientGetById($event["clid"]);
echo "would kick!\n";return;
$client->kick(5, 'Error while verifying myTeamspeakID!');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment