TS3-Modul

From EQdkp Plus
Jump to navigation Jump to search


Überblick

Das Portalmodul Teamspeak3 zeigt die Channelstruktur und eingeloggte Clients des Teamspeak3-Servers als Modulinhalt an.

Solltet ihr nach der Installation des Moduls die Fehlermeldung 'Queryclient has ban, check flooding settings' bekommen wurde euer TS3-Portalmodul von eurem TS3-Server gebannt. Für Lösungen im Abschnitt #Flooding-Problematik weiterlesen.

Einstellungen

Server IP

Trage hier die IP des Teamspeak3-Servers ein. Läuft der TS3-Server auf dem gleichen Computer wie das EQdkpPlus, dann kann hier '127.0.0.1' eingetragen werden. Die IP bitte immer ohne den Port angeben. Ein ':9987' gehört nicht zur IP.

Server Port

Trage hier den Port des Teamspeak3-Servers ein. (Standard: 9987)

Virtual Server ID

Trage hier die ID des virtuellen Servers innerhalb des Teamspeak3-Servers ein, der angezeigt werden soll. Gibt es nur einen virtuellen Server ist die ID 1. Wie kann ich die Server-ID sonst herausfinden?

  • Verbinde dich via Client auf deinem RAW/SSH-Query und authentifiziere dich mit deinen Query-Daten.
  • Gib den Befehl "serverlist -short" ein.
  • Suche deinen Server raus. Die ID findest du hinter "virtualserver_id=".

Serverquery-Protokoll

Unterstützt werden drei verschiedene Serverquery-Protokolle:

  • Telnet (unverschlüsselt, der Standard)
  • SSH (verschlüsselt, muss aktiviert werden)
  • WebQuery (kann verschlüsselt eingerichtet werden, muss aktiviert werden)

Telnet Port

Trage hier den Telnet Port (auch ServerQuery-Port genannt) des Teamspeak3-Servers ein. (Standard: 10011)

SSH-Port

Ab TS3 Server-Version 3.3.0 unterstützt TS den Serverquery über SSH. Dies muss manuell deaktiviert werden, soll aber in einigen Versionen Standard werden. Trage hier den Port der Variable query_ssh_port aus der ts3server.ini ein. Default-Wert ist hierbei 10022. Wenn du Telnet verwenden willst, lasse dieses Feld einfach leer.

SSH-Benutzer

Der SSH-Benutzer für den Serverquery ist standardmäßig serveradmin. Hier sind jedoch keine Benutzer des Betriebssystems gemeint. Wenn du Telnet verwenden willst, lasse dieses Feld einfach leer.

Passwort für SSH-Benutzer

Das Passwort für den oben angegebenen Benutzer. Hier sind keine Benutzer des Betriebssystems gemeint. Wenn du Telnet verwenden willst, lasse dieses Feld einfach leer.

WebQuery URL

Trage die vollständige URL zum WebQuery ein, inklusive Protokoll und Port, z.B. https://domain.com:10443

WebQuery API-Key

Trage den erzeugten API-Key hier ein. Einen API-Key kannst du folgendermaßen erzeugen:

  • Verbinde dich via Client auf deinem RAW/SSH-Query und authentifiziere dich mit deinen Query-Daten.
  • Wähle den Server mit dem Befehl "use port=9987" (der Port könnte abweichen).
  • Gib den Befehl "apikeyadd scope=manage lifetime=0" ein
  • Du erhältst einen API-Key, dieser sieht zum Beispiel wie folgt aus: BAAn2tsFpFUzeLp3D9Q_ss9wZqK3R7-GG5dqukH

Mindestabstand zwischen TS3-Abfragen

Trage hier die Anzahl in Sekunden ein, die eine Abfrage gespeichert bleiben soll bevor der TS3-Server erneut abgefragt wird. Es muss ein APC-Cache in deiner PHP-Installation aktiv sein, damit das Zwischenspeichern funktioniert.

Sollte der TS-Server ein Banner setzen kannst du hier einstellen ob es auch im Portalmodul eingeblendet werden soll oder nicht.

Link zum Beitreten

Auf Wunsch kann das Portalmodul einen klickbaren Link anzeigen mit dem man sich zum Teamspeak3-Server verbinden kann.

Linktext

Hier kannst du den Text des Links zum Beitreten einstellen.

Gruppenübersicht

Falls eingeschaltet zeigt das Portalmodul unter den Channels eine Legende über die Gruppen des Servers an.

Benutzernamen kürzen

Übermäßig lange Benutzernamen können das Design deines EQdkpPlus stören, da die Breite der Menüspalte in dem das Portalmodul angezeigt wird entsprechend breiter wird. Aus diesem Grund kannst du hier die maximale Anzahl Zeichen einstellen, die von einem Clientnamen im TS3 angezeigt werden sollen. Sollen die Namen in voller Länge angezeigt werden trage hier eine 0 ein.

Channelnamen kürzen

Übermäßig lange Channelnamen können das Design deines EQdkpPlus stören, da die Breite der Menüspalte in dem das Portalmodul angezeigt wird entsprechend breiter wird. Aus diesem Grund kannst du hier die maximale Anzahl Zeichen einstellen, die von einem Channelnamen im TS3 angezeigt werden sollen. Sollen die Namen in voller Länge angezeigt werden trage hier eine 0 ein.

Zeige nur Channel an, in denen sich auch jemand befindet?

Falls aktiviert werden nur die Channel angezeigt in denen (oder deren Subchannels) sich auch gerade jemand befindet.

Flooding-Problematik

Solltet ihr nach der Installation des Moduls die Fehlermeldung 'Queryclient has ban, check flooding settings' bekommen wurde euer TS3-Portalmodul von eurem TS3-Server gebannt. Für Lösungen in diesem Abschnitt weiterlesen.

Ab der beta13 des TS3-Servers wurde als Sicherheitsmerkmal eine Flooding-Protection für die ServerQuery-Schnittstelle eingeführt. Fragt ein ServerQueryClient zu viele Informationen über die ServerQuery-Schnittstelle in zu kurzer Zeit ab bekommt dieser für mehrere Minuten einen Bann vom TS3-Server. Das TS3-Portalmodul ist so ein ServerQuery-Client und seine Abfragen müssen auf eurem TS3 entsprechend erlaubt werden. Ihr könnt dazu entweder allgemein für euren TS3-Server mehr Zugriffe auf diese Schnittstelle erlauben oder speziell die IP-Adresse eures Webservers für unbegrenzte Nutzung freigeben. Beide Verfahren werden im Folgenden näher beschrieben.

Die Datei 'query_ip_whitelist.txt'

Seid der beta13 des TS3-Servers liegt dem TS3-Server eine Datei mit dem Namen 'query_ip_whitelist.txt' bei. Diese Datei befindet sich im Hauptverzeichnis des TS3-Servers. In diese Datei könnt ihr die Adresse des Webservers (eine IP pro Zeile) eintragen auf dem euer EQdkpPlus läuft (und von der also das Portalmodul den TS3 abfragt). Alle Anfragen, die nun von diesem Server aus kommen, gehen an der Flooding-Protection vorbei und werden uneingeschränkt beantwortet.

Damit die dort eingetragenen IP-Adressen auch verwendet werden muss der TS3-Server nach dem Bearbeiten der Datei neu gestartet werden!

Die allgemeinen Flooding-Einstellungen des TS3-Servers

Die Einstellungen zum Flooding-Schutz der ServerQuery-Schnittstelle bestehen aus drei Werten:

serverinstance_serverquery_flood_commands

Max number of commands allowed in <serverinstance_serverquery_flood_time> seconds. Default value=10

serverinstance_serverquery_flood_time

Timeframe in seconds for <serverinstance_serverquery_flood_commands> commands. Default value=3

serverinstance_serverquery_ban_time

Time in seconds used for automatic bans triggered by the ServerQuery flood protection. Default value=600

Diese Werte kann man mit der ServerQuery-Schnittstelle selbst ändern und somit allgemein mehr Zugriffe auf die Schnittstelle erlauben bevor die Flooding-Sperre greift. Dazu öffnet man ein im TS3-Client den Menüpunkt 'ServerQuery' aus dem Menü 'Extras' oder drückt die Tastenkombination STRG+SHIFT+V. Es öffnet sich der ServerQuery-Editor. Stellt die Authentifizierungsmethode auf 'Manuell' und tragt eure Serveradmin-Logindaten in die Felder darunter ein. Diese Logindaten wurden bei der Installation eures TS-Servers erstellt und einmalig am Bildschirm angezeigt. Solltet ihr sie vergessen haben findet ihr im TS3-Forum Beiträge dazu, wie man diese neu setzen kann. Zum Beispiel in diesem Post: http://forum.teamspeak.com/showthread.php?t=48255. In das linke Textfeld nun das auszuführende Skript eintragen. Hier ein Beispiel um die command auf 999, die time auf 2 Sekunden und die bantime auf 60 Sekunden zu setzen:

instanceedit serverinstance_serverquery_flood_commands=999 serverinstance_serverquery_flood_time=2 serverinstance_serverquery_ban_time=60

Durch einen Klick auf den grünen Pfeil oben links wird das Skript ausgeführt. Wenn alles geklappt hat, dann steht unten im Ausgabefenster 'error id=0 msg=ok'

Nähere Informationen zu Befehlen und Syntax der ServerQuery findet ihr in der, dem TS3-Server beiliegenden, Dokumentation. Für Hilfestellungen dazu bitte das TS3-Forum unter http://forum.teamspeak.com besuchen.

Berechtigungen

Der EQdkp-Plus Viewer (also genauer gesagt, die Gast-Gruppe) braucht Zugriff auf die folgende Berechtigungen. Diese musst du über deinen TS3-Client der Gast-Gruppe zuweisen. Es ist dafür eventuell notwendig, dass du in den Optionen deines TS3-Clients das "Fortgeschrittene Berechtigungssystem" aktivierst. Die Rechtenamen kannst du einfach im Filten oben eintippen, ansonsten kannst du unten von Beschreibungen auf Namen umstellen.

Virtueller Server -> Information

  • b_virtualserver_info_view ("ServerQuery: Informationen des virtuellen Servers abrufen")
  • b_virtualserver_channel_list ("ServerQuery: Liste vorhandener Channel abrufen")
  • b_virtualserver_client_list ("ServerQuery: Liste verbundener Clients abrufen")

Gruppe -> Information

  • b_virtualserver_servergroup_list ("ServerQuery: Liste der Server Gruppen abrufen")
  • b_virtualserver_channelgroup_list ("ServerQuery: Liste der Channel Gruppen abrufen")

error id=2568 msg=insufficient client permissions failed_permid=8470

thumb Schlüsseln wir den Fehler mal auf:

  • Die error-id interessiert uns mal weniger
  • insufficient client permissions: da kommen wir dem Problem schon näher: der Client (also z.B. unser Viewer) hat nicht genügend Rechte
  • failed_permid=8470: und genau dieses Recht fehlt uns...

Nach ein bisschen Suchen kommt man darauf, dass die Permission-ID 8470 den Namen "b_virtualserver_info_view" trägt. Der Query Guest Group bzw. der Guest Group braucht jetzt nur noch dieses Recht gegeben werden, und schon läuft auch der TS-Viewer.

Eine schöne Anleitung zur allgemeinen Einrichtung und Administration eines TS3-Servers, u.a. auch die Rechtevergabe, findet ihr unter http://www.allvatar.com/rex/1897-0-Teamspeak-3-Server-How-To-Guide.html


Übersicht Rechte-IDs

ID Recht-Name
8471 b_virtualserver_info_view
8472 b_virtualserver_connectioninfo_view
8473 b_virtualserver_channel_list
8475 b_virtualserver_client_list