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 🙂