Si vous ne connaissez pas TeamSpeak, il s’agit d’un logiciel d’audioconférence qui permet à plusieurs personnes de discuter via Internet (pour plus d’informations http://fr.wikipedia.org/wiki/TeamSpeak). Ce module sert à afficher l’état du serveur TeamSpeak (allumé/éteint) ainsi que la liste des personnes qui y sont connectées.
Pour obtenir ces informations j’utilise TeamSpeak 3 PHP Framework qui est téléchargeable gratuitement. Cette grosse lib PHP permet d’accéder à toutes les fonctionnalités du serveur TeamSpeak3. Que demande le peuple ? 🙂
Il suffit de télécharger et décompresser TeamSpeak 3 PHP Framework à la racine de votre répertoire web.
index.php
Comme pour les autres modules, une seule <div> suffit. Vous commencez à avoir l’habitude 😉
<div id="ts3"></div>
La balise reste vide, et sera « remplie » par la fonction JavaScript…
style.css
Feuille de style minimaliste pour ce module :
/* ts3 */
div#ts3
{
left : 340px;
bottom : 10px;
position : absolute;
overflow : hidden;
background-color : rgba(0, 0, 0, 1);
color : #FFF;
font-weight : bold;
text-align : center;
}
td.ts3_user
{
text-align : left;
font-size : 30px;
padding-left : 10px;
}
javascript.js
Encore une fois, une simple requête AJAX permet de récupérer les informations à afficher.
/* TS3 */
var ts3_timeout;
function ts3 ()
{
$.ajax({
async : false,
type: "GET",
url: "./ajax.php",
data: "block=ts3",
success: function(html){
$("#ts3").html(html);
}
});
ts3_timeout = setTimeout("ts3()", 10000);
}
Le délai de rafraichissement est fixé à 10 secondes pour voir rapidement qui se connecte/déconnecte du serveur.
ajax.php
Cela se passe d’explications…
/////////////////////////////////////////////////
// TS3
/////////////////////////////////////////////////
if($block == 'ts3'){
echo ts3();
}
inc.php
C’est ici que nous utilisons TeamSpeak 3 PHP Framework.
Dans un premier temps j’ouvre une socket sur le port 30033 (comme pour le Module 4 – Ping de serveur) pour vérifier que le serveur TeamSpeak tourne bien. Si oui, alors j’affiche la bannière du serveur (l’image triton_ts3.png), puis j’utilise TeamSpeak 3 PHP Framework pour récupérer la liste et l’état des utilisateurs connectés 🙂
/////////////////////////////////////////////////
// TS3
/////////////////////////////////////////////////
function ts3 () {
$host_ip = '10.0.0.1';
$host_port = '30033';
$socket = 0;
$socket = @fsockopen($host_ip, $host_port, $errno, $errstr, 3);
$html = '';
if($socket && !$errno){
require_once("./TS3_PHP_Framework-1.1.12/libraries/TeamSpeak3/TeamSpeak3.php");
$ts3_ServerInstance = TeamSpeak3::factory("serverquery://login:password@10.0.0.1:10011/");
$ts3_VirtualServer = $ts3_ServerInstance->serverGetById(1);
$html .= '<img width="200px" src="pict/triton_ts3.png" style="margin-bottom : 10px;">';
$html .= '<table cellspacing="0px" cellpadding="0px">';
foreach($ts3_VirtualServer->clientList() as $client){
if($client["client_unique_identifier"] == 'serveradmin'){continue;}
$html .= ' <tr>';
$html .= ' <td valign="middle">';
$html .= ' <img style="width : 20px;" src="./TS3_PHP_Framework-1.1.12/images/viewer/'.$client->getIcon().'.png" alt="">';
$html .= ' </td>';
$html .= ' <td valign="middle">';
$html .= ' '.htmlspecialchars($client);
$html .= ' </td>';
$html .= ' </tr>';
}
$html .= '</table>';
}
return $html;
}
Ce module est très simple à réaliser grâce à la lib TeamSpeak 3 PHP Framework 🙂

