# TeamSpeak 3 Plugin für XASECO - Rekonstruktion

## Hintergrund

Die originalen Dateien von Reaby (`http://koti.mbnet.fi/reaby/xaseco/`) sind nicht mehr 
verfügbar. Dieses Projekt stellt nachgebaute Versionen bereit, die mit XASECO's 
`plugin.teamspeak3.php` kompatibel sind.

## Architektur

Das TS3-Widget in XASECO besteht aus **3 Komponenten**:

### 1. `includes/tsstatus.php` - TS3 ServerQuery Client
- Wird direkt vom XASECO-Server aus aufgerufen (kein HTTP!)
- Verbindet sich per TCP zum TS3 ServerQuery (Port 10011)
- Holt Server-Info, Channel-Liste und Client-Liste
- Wird alle X Sekunden aufgerufen (konfiguriert via `update_interval`)

### 2. `ts3gateway/gateway3.php` - Join-Redirect
- Wird als Webseite aufgerufen, wenn ein Spieler auf "Join Server" klickt
- Leitet per `ts3server://` URI zum TeamSpeak-Client weiter
- Muss auf einem **öffentlich erreichbaren Webserver** gehostet werden

### 3. `plugin.teamspeak3.php` - Das XASECO Plugin
- Zeigt das Widget im Spiel an (Logo + User-Zähler)
- Bei Klick: Detailansicht mit Channels und Spielern
- "Join Server" Button nutzt die gateway3.php

## Deployment

### Schritt 1: tsstatus.php installieren

Kopiere `includes/tsstatus.php` in dein XASECO `includes/` Verzeichnis:

```
xaseco/
  includes/
    tsstatus.php    <-- hierhin
    xmlparser.inc.php
    ...
```

**Wichtig:** Der XASECO-Server muss den TS3 ServerQuery Port (10011) auf 
`ts3.techniverse.net` erreichen können! Ggf. Firewall prüfen.

### Schritt 2: gateway3.php auf Webserver hochladen

Lade `ts3gateway/gateway3.php` auf einen PHP-fähigen Webserver hoch, z.B.:

```
https://assets.techniverse.net/tm/ts3gateway/gateway3.php
```

### Schritt 3: TS3-Logo hosten

Lade ein TeamSpeak 3 Logo (JPG, 128x128px empfohlen) auf deinen Webserver:

```
https://assets.techniverse.net/tm/ts3gateway/ts3logo.jpg
```

### Schritt 4: teamspeak3.xml anpassen

```xml
<helperURL>https://assets.techniverse.net/tm/ts3gateway/gateway3.php</helperURL>
<logoURL>https://assets.techniverse.net/tm/ts3gateway/ts3logo.jpg</logoURL>
```

### Schritt 5: Plugin fix anwenden

Im `plugin.teamspeak3.php` war das Logo-Bild in der Info-Ansicht **hardcoded** auf die 
alte Reaby-URL. Dieser Fix wurde bereits eingespielt - die Info-Ansicht nutzt jetzt 
ebenfalls die `logoURL` aus der Config.

## Testen

### tsstatus.php testen (PHP CLI)

```php
<?php
require_once('includes/tsstatus.php');
$ts = new TSStatus('ts3.techniverse.net', 10011, 1);
$ts->update();
echo "Users online: " . $ts->_serverDatas['virtualserver_clientsonline'] . "\n";
echo "Channels: " . count($ts->_channelDatas) . "\n";
echo "Users: " . count($ts->_userDatas) . "\n";
```

### gateway3.php testen (Browser)

```
https://dein-server/gateway3.php?server=ts3.techniverse.net&port=9987
```

Sollte eine Seite anzeigen und automatisch den TS3-Client öffnen.

## Fehlerbehebung

| Problem | Lösung |
|---------|--------|
| Widget zeigt 0/0 User | Firewall: XASECO-Server -> TS3 Port 10011 prüfen |
| "Join Server" geht nicht | gateway3.php URL in teamspeak3.xml prüfen |
| Logo fehlt | logoURL prüfen, Bild muss per HTTP(S) erreichbar sein |
| ServerQuery verweigert | IP-Whitelist in TS3 `query_ip_allowlist.txt` prüfen |
