Beiträge von Sebbo

    +++ STATUS UPDATE +++


    Okay, also es scheint wohl der Modification Timestamp der Binary zu sein, allerdings stimmt der um so ~4 Minuten nicht überein - wird also nicht "live" ausgelesen, sondern fest im Code integriert sein. Oder die Umwandlung wird von TeamSpeak falsch durchgeführt...^^ :whistling:


    Code
    $ stat ts3server_linux_amd64  Datei: „ts3server_linux_amd64“  Größe: 6113080        Blöcke: 11944      EA Block: 4096   reguläre DateiGerät: fe05h/65029d     Inode: 1439633     Verknüpfungen: 1Zugriff: (0755/-rwxr-xr-x)  Uid: ( 1002/teamspeak)   Gid: ( 1002/teamspeak)Zugriff    : 2014-08-31 02:59:51.000000000 +0200Modifiziert: 2014-08-22 10:04:49.000000000 +0200Geändert   : 2014-08-31 13:55:44.295966204 +0200 Geburt    : -$ stat --format='%Y' ts3server_linux_amd641408694689


    Laut der Ausgabe von "version" sollte das Build aber folgenden Timestamp haben:

    Code
    $ date -d @1408694433 '+%Y-%m-%d %H:%M:%S'
    2014-08-22 10:00:33


    Also irgendwo ist ein Wurm drin...^^


    Ich denke, ich werde einfach den Modification-Timestamp nutzen, um die Versionen mit einander zu vergleichen. Bleibt ja - wie es aussieht - nichts anderes übrig... Wobei ich hierauf keine Lust habe, da ich dann immer erst die Dateien downloaden muss. :(

    Ich möchte die Überprüfung auf eine neuere Version handeln und die Build-Versionsnummer ist halt die einzigartigste und genaueste Kennziffer hierfür, daher würde ich die gerne von der aktuell installierten Instanz mit der neuesten, die verfügbar ist, gegenprüfen.


    Die Frage ist halt jetzt: Woher krieg ich die Build-Version der neuesten TeamSpeak Server Version, wenn ich den nicht jedesmal extra downloaden, starten und auslesen, sowie wieder löschen will?

    Hallo,


    seit der Version 3.0.11 (Build 1408694433) wurde die MySQL Datenbank durch den "Fork" MariaDB ersetzt. Daher möchte ich euch hier gerne zeigen, wie ihr euch einen neuen TeamSpeak Server mit der MariaDB einrichtet.


    Beachtet bitte, dass sich das Tutorial einzig und allein auf eine Neuinstallation bzw. Erst-Installation bezieht und nicht als Upgrade-Tutorial dient! Das Tutorial kann auch für die MySQL Datenbank genutzt werden. Ihr müsst hierzu dann nur immer "mariadb" durch "mysql" ersetzen. ;)


    Inhaltsverzeichnis

    • Server vorbereiten
    • Server einrichten/installieren
    • Server Admin Rechte erhalten

    Hinweis: Alles wird anhand eines Debian Systems gezeigt. Unter Umständen müsst ihr also die Befehle an eure Distribution anpassen!


    Bevor wir anfangen, müssen wir erstmal den

    • Server vorbereiten
      Wir benötigen erstmal die Server-Dateien. Hierfür laden wir sie einfach von TeamSpeak herunter und entpacken sie: TeamSpeak - Downloads (ab Version 3.0.11)
      Wichtig: Hier gelten die selben Regeln wie bei jeder anderen Installation. Siehe auch hier: Teamspeak Server auf Linux installieren


      Danach müssen wir überprüfen, ob das Paket "libmariadb2" installiert ist, denn das ist die Bibliothek, die für die MariaDB Unterstützung gebraucht wird. Hierfür führen wir auf unserem Linux System einfach folgenden Befehl aus:

      Code
      $ dpkg -s libmariadb2dpkg-query: package 'libmariadb2' is not installed and no information is availableUse dpkg --info (= dpkg-deb --info) to examine archive files,and dpkg --contents (= dpkg-deb --contents) to list their contents.


      Wie man hier sieht, ist es zum Beispiel nicht installiert.


      Ebenso sieht man das, wenn man im Verzeichnis des TeamSpeak Servers folgenden Befehl ausführt:

      Code
      $ ldd libts3db_mariadb.so        linux-vdso.so.1 (0x00007fff43fff000)        libmariadb.so.2 => not found        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211d5dd000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211d234000)        /lib64/ld-linux-x86-64.so.2 (0x00007f211dbe0000)


      Um es zu installieren, benötigt man den SID Repository von Debian. Oder man downloadet und installiert es manuell:

      Code
      wget http://ftp.de.debian.org/debian/pool/main/m/mariadb-client-lgpl/libmariadb2_2.0.0-1_amd64.debdpkg -i libmariadb2_2.0.0-1_amd64.deb


      Hier kann es vorkommen, dass man eine zu alte "libc6" Version installiert hat und dann hilft es nur, das System zu aktualisieren. Wenn es mit den aktuellen Repositorys und ohne den SID Repository bereits aktuell ist, dann müsst ihr den SID Repository noch inkludieren und das System aktualisieren. Danach könnt ihr - wie ich - das Paket einfach per Paketmanager installieren:

      Code
      aptitude install libmariadb2


      +++ UPDATE 2014-09-04 +++
      Anstatts den SID Repository zu nutzen, kann auch folgende Repository genutzt werden: MariaDB - Setting up MariaDB Repositories
      - MariaDB

      Bei Debian Wheezy wäre das zum Beispiel folgender:

      Code
      deb http://ftp.hosteurope.de/mirror/mariadb.org/repo/5.5/debian wheezy maindeb-src http://ftp.hosteurope.de/mirror/mariadb.org/repo/5.5/debian wheezy main


      +++ UPDATE ENDE +++


      Und voila - es ist installiert/vorhanden:

      Code
      $ ldd libts3db_mariadb.so        linux-vdso.so.1 (0x00007fff4e16e000)        libmariadb.so.2 => /usr/lib/x86_64-linux-gnu/libmariadb.so.2 (0x00007fa287de0000)        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa287adf000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa287736000)        /lib64/ld-linux-x86-64.so.2 (0x00007fa28832f000)        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa28751b000)        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa2872fe000)        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa2870f9000)        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fa286e99000)        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fa286aa3000)


      So... Nachdem der Server prinzipiell funktionsfähig wäre, brauchen wir noch eine Datenbank. Hierfür installieren wir sie einfach mal:

      Code
      aptitude install mariadb-server-5.5


      Dann loggen wir uns als root-User in der Datenbank ein und erstellen eine neue leere Datenbank, sowie einen extra User dafür:

      Code
      mysql -u root -p


      Passwort eingeben, was ihr während der Installation der Datenbank gewählt habt...

      Code
      CREATE DATABASE teamspeak;


      Die neue Datenbank heißt z.B. "teamspeak".

      Code
      GRANT ALL PRIVILEGES ON teamspeak.* TO 'teamspeak'@'localhost' IDENTIFIED BY 'geheimesPasswort';


      Beim letzten Befehl geben wir dem User "teamspeak" alle Rechte auf die Datenbank "teamspeak".


      Danach drücken wir noch die Tastenkombination "Strg" und "D", um aus der SQL-Shell raus zu gehen.


      Okay, das war der Datenbank-Teil und somit eigentlich auch das schwierigste. ;)


      Im root unseres TeamSpeak Server-Verzeichnisses erstellen wir nun die Datei "ts3db_mariadb.ini", welche wie folgt aufgebaut ist:

      Code
      [config]host=127.0.0.1port=3306username=teamspeakpassword=geheimesPasswortdatabase=teamspeak


      Ebenso benötigen wir noch eine "ts3server.ini", welche wie folgt aufgebaut ist und im selben Verzeichnis liegt:

      Code
      machine_id=1default_voice_port=9987voice_ip=192.168.1.20licensepath=filetransfer_port=30033filetransfer_ip=0.0.0.0query_port=10011query_ip=192.168.1.20query_ip_whitelist=query_ip_whitelist.txtquery_ip_blacklist=query_ip_blacklist.txtdbplugin=ts3db_mariadbdbpluginparameter=ts3db_mariadb.inidbsqlpath=sql/dbsqlcreatepath=create_mariadb/dblogkeepdays=90logpath=logslogquerycommands=0dbclientkeepdays=30


      Gut, jetzt haben wir die besten bzw. alle Bedingungen. ;)

    • Server einrichten/installieren
      Sobald alle notwendigen Vorbereitungen getroffen wurden, starten wir den TeamSpeak Server einfach in folgender Reihenfolge:

      Code
      ./ts3server_minimal_runscript.sh start inifile=ts3server.ini


      Wobei hier erstmal sehr viel Ausgabe-Text erscheint:


      Hier muss man sich dann alles rot markierte unbedingt sichern/raus schreiben bzw. kopieren!


      Sobald man das hat, kann man mit Hilfe der Tastenkombination "Strg" und "C" das Minimal-Runscript beenden.


      Als nächstes passen wir unsere "ts3server_startscript.sh" Datei so an, dass man den Parameter "inifile=ts3server.ini" nicht jedesmal angeben muss - vor allem, weil man es gerne mal vergessen kann. Hierfür bearbeiten wir die Datei in einem Text-Editor und ersetzen die folgende Zeile...

      Code
      COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here


      ...durch diese...

      Code
      COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here


      ...und speichern, sowie schließen die Datei. :)


      Jetzt starten wir den TeamSpeak Server ganz normal mit der MariaDB:

      Code
      $ ./ts3server_startscript.sh start
      Starting the TeamSpeak 3 server
      TeamSpeak 3 server started, for details please view the log file


      Und siehe da, unsere Log-Datei sagt, es funktioniert:


    • Server Admin Rechte erhalten
      Jetzt müssen wir uns nur noch mit einem TeamSpeak Client auf unseren neuen Server verbinden und uns unsere Server Admin-Rechte holen. Hierfür geben wir einfach den Token, den wir uns vorhin raus geschrieben haben, im entsprechenden Feld ein:

      • Rechte
      • Berechtigungsschlüssel

    Fertig! Ich wünsche euch viel Spaß damit! ;)


    Für Fragen, Verbesserungsvorschläge und/oder Kommentare bin ich gerne offen: Schreibt's einfach in die Kommentare. Danke! :)

    Hallo,


    kann mir vielleicht jemand von euch weiterhelfen?


    Ich würde gerne immer die aktuellste Build-Version des TeamSpeak Servers identifizieren, also herausfinden. Leider kann ich nur die Version, jedoch nicht die Build-Version in der CHANGELOG des jeweiligen Servers finden. Gibt es für die Build-Version wirklich nur die Variante, dass ich mich per Telnet drauf verbinden muss und dort mit Hilfe von "version" es raus lesen muss?


    Meine einzige und aktuelle Idee ist die, dass ich den Public TS von TeamSpeak nach der Version frage, aber da ist halt das Problem, ob der *immer* auf dem aktuellsten Stand ist oder nicht - einschließlich Beta...


    Abfragen kann man den voice.teamspeak.com Server jedenfalls:

    Code
    TS3
    Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.
    version
    version=3.0.11 build=1408613617 platform=Linux
    error id=0 msg=ok

    So... Nachdem ich nicht früher dazu kam: Der Vorschlag mit dem JTS3ServerMod war genau der richtige! Vielen Dank! :)


    Was muss man machen? Man erstellt eine eigene Servergruppe und setzt für diese das Sticky Bit, sodass sie sich selber nicht mehr bewegen können/dürfen. Den Bot stellt man dann so ein, dass er alle aus dieser Servergruppe in den Channel X verschiebt. Somit können die Clients sich nicht bewegen, kommen aber in den für sie vorgesehenen Channel. ;)

    Hello,


    I think you wanna use HTML and PHP, right? Therefore you have to use the ts3admin.class (ts3admin.class) and the following PHP-script:


    This script returns following output for example:

    Bei PHP sind diese SQL Injections halt ein großes Thema gewesen bwz sind Sie immernoch. Da wurden jetzt zum Beispiel prepare Statemants eingefügt die sowas zum größten Teil verhindert.


    Hier kann ich dir was empfehlen, dass extra für mich programmiert wurde: [PHP] Mysqli-Klasse überarbeitet | Par0noid :D


    Gibt es sowas auch bei bash(Funktionen oder Classen) oder muss ich da wirklich jede einzelne Eingabe auseinandernehmen und prüfen.


    Ne, da musst du leider alles auseinander nehmen und prüfen.


    Edit: Und wo wir schon dabei sind. Gibt es überhaupt sowas wie OOP in Bash?


    Ja, das gibt es wohl - habe ich allerdings noch nie genutzt:
    The Samurai Code: Object Oriented Programming in Bash

    Bezüglich SQL Injections: Das hängt vom Programmierstil ab. Wer schlampig programmiert, hat immer Probleme, daher investiert man als Programmierer auch mehrere Stunden, anstatts Minuten in ein auch noch so kleines Projekt. ;)


    Ja, das von mir gemeinte Tool ist für alles gedacht - nicht nur für TS. Das ist ein Event-Trigger und führt dann entsprechende Aktionen aus. Thomas hat mir das mal gezeigt, wenn ich mich nicht irre.


    Ja, du kannst vom Shell-Skript aus auch an das PHP-Skript Daten senden. Hatte ich ja erwähnt.

    Hallo Pagian,


    - Verbindung zu einer Datenbank(MySQL, POSTGRES)
    - Das Insert, Update, löschen und zählen der Datensätze mit den jeweiligen Datenbanken


    Ja, das ist möglich und geht zum Beispiel anhand einer MySQL Datenbank so:


    - Die Verbindung zu einer Adresse mit Port. Speziell z.B bei Teamspeak wie man dort ein "listen" aufbauen kann(also ein warten auf ein event). Also: Wenn ein Client z.B. connected mache dies, wenn er einen Channel switcht, mache das, usw.


    Ja, das geht bestimmt auch, aber hierfür gibt es meines Wissens nach ein extra dafür angefertiges Tool, welches eine deutlich bessere Performance leistet. Mir fällt der Name der Software nur gerade leider nicht ein. @Thomas könnte es vielleicht wissen.


    - Kann man die Bash Programmierung mit z.B PHP verbinden? Also ein Request an PHP senden, welcher dort dann verarbeitet wird?


    Du kannst in PHP-Skripten Shell-Skripte aufrufen, indem du die PHP-Funktion shell_exec nutzt: PHP: shell_exec - Manual


    Meines Wissens nach, kannst du aber auch anders rum damit arbeiten: Das Shell Skript führt das PHP-Skript aus. Hierfür musst du halt einfach mit "php skript.php" das PHP-Skript ausführen und die Werte, die das PHP-Skript liefert, weiter verarbeiten.


    Sonst gute Tutorials, gefallen mir sehr :)
    Gute Arbeit!


    Vielen Dank! :)

    Hallo,


    mit Hilfe des Sticky Bits kann man Clients in einem Channel einsperren, aber ist es auch möglich bestimmte Servergruppen so ein zu sperren, dass sie nur in einen einzigen Channel überhaupt rein können?


    Mein Problem ist: Ich möchte eine Servergruppe haben, die nur in den Channel "X" darf. Ich möchte hierfür allerdings nicht allen Channels die entsprechenden needed Join Power geben.


    Ich hoffe, mir kann jemand helfen. :)