Ich hatte vor, ein Migrationstutorial zu verfassen, aber wenn es nur um das Update geht, wenn man die MySQL Variante weiter nutzt, kann ich das natürlich auch machen.
Werde ich mir für Freitag Abend oder den Samstag vornehmen, ok?
Ich hatte vor, ein Migrationstutorial zu verfassen, aber wenn es nur um das Update geht, wenn man die MySQL Variante weiter nutzt, kann ich das natürlich auch machen.
Werde ich mir für Freitag Abend oder den Samstag vornehmen, ok?
wenn mehrere User in einem Channel sind, ist die Anordnung anders als im Client
Die Clientliste ist ja keine Liste der online Clients aus einem bestimmten Channel. Es ist eine Liste aller Clients, die zur Zeit auf dem Server online sind.
Das Array hat wahrscheinlich diesen Style, oder?
array(
[data] {
[0] {
[clid] => 1023
[nickname] => Babo
}
[1] {
[clid] => 1203
[nickname] => Peter
}
[2] {
[clid] => 1456
[nickname] => Max
}
[3] {
[clid] => 1500
[nickname] => Nico
}
.
.
.
}
)
Alles anzeigen
In dem Fall wird das Array nach den Indexes 0, 1, 2 und so weiter aufsteigend sortiert. Wie er sich das Array mit den Client-Datensätzen zusammen baut, weis ich nicht. Ich denke aber, dass es 1:1 so aus der Reihenfolge übernommen wird, wie es der ServerQuery Befehl "clientlist" zurück liefert. Der gibt die Liste nämlich aufsteigend sortiert nach "clid" zurück. Ist also kein Schönheitsfehler oder irgendeine Art von Reverse-Sortierung.
Kann man hier eigentlich auch die Instanz-Einstellungen wie "DoS-Protection" mit "instanceEdit(array $data)" setzen/ändern?
Ja, das ist möglich und zwar verwendet man hierzu die Funktion "instanceEdit" wie bereits erwähnt:
<?php
/*-------SETTINGS-------*/
$ts3_ip = '127.0.0.1';
$ts3_queryport = 10011;
$ts3_port = 9987;
/*----------------------*/
/*
Hier fehlt noch der Login als serveradmin, sonst wird das wohl nicht funktionieren. ;)
*/
#Include ts3admin.class.php
require_once("ts3admin.class.php");
#build a new ts3admin object
$tsAdmin = new ts3admin($ts3_ip, $ts3_queryport);
if($tsAdmin->getElement('success', $tsAdmin->connect())) {
/*
Wie viele Verbindungen dürfen pro IP zustande kommen?
Im Beispiel sind es "2".
2 ODER 4 sind von TeamSpeak Systems empfohlen.
*/
$data['serverinstance_pending_connections_per_ip'] = '2';
if($tsAdmin->instanceEdit($data)) {
echo "Die DoS-Protection wurde erfolgreich konfiguriert!";
} else {
echo "Die DoS-Protection konnte nicht konfiguriert werden.";
}
}else{
echo 'Connection could not be established.';
}
if(count($tsAdmin->getDebugLog()) > 0) {
foreach($tsAdmin->getDebugLog() as $logEntry) {
echo '<script>alert("'.$logEntry.'");</script>';
}
}
?>
Alles anzeigen
Ansonsten kann man das auch noch wie folgt aktivieren:
Hallo,
okay ich guck mir mal das mit der ts3admin.class an.
der Stefan aka @par0noid hat hierzu auch ein Tutorial zur Nutzung erstellt: Webprogrammierung für Teamspeak mit der ts3admin.class
Alle verfügbaren Funktionen findest du in seiner Doku: ts3admin.class » \ts3admin
Okay. Vielen Dank für das Feedback!
Ob das ganze auch für Teamspeak auf port 9987 mit UDP funktioniert, müsste getestet werden. Vielleicht kann ja Sebbo dazu was sagen, der kennt sich mit den IP-Tables besser aus wie ich?
Klar funktioniert das auch. Du kannst ja zwischen TCP und UDP unterscheiden.
Das protokolliert zum Beispiel den eingehenden Traffic auf den UDP Ports 9987 bis 9996.
Cannot access log file.
Das heißt aber nur, dass es ein Problem mit dem Zugriff der Log-Dateien gibt. Deswegen stürzt nicht gleich die Instanz ab. Klar, gab es hier mal einen Bug bzw. ein Problem, aber das wurde meines Wissens nach längst behoben. Auf welcher Version läuft dein TS Server denn?
Ebenso wäre es interessant, wie die Rechte deiner Instanz aussehen. Ich weis nicht, wie fit du in Linux bist, daher soll das keine Unterstellung sein. Also bitte nicht falsch verstehen.
Führe die beiden Befehle einfach als der Benutzer aus, der den TeamSpeak Server steuert/gehört und zeige uns die beiden Ausgaben hier als Code/Zitat:
Hallo,
ich verstehe grade irgendwie nicht so richtig, was du vor hast bzw. dein Ziel ist.
Der Server wird immer eine Log-Datei generieren, denn die ist zum Analysieren/Debuggen und für Infos gedacht. Die kannst du auch nicht deaktivieren. Du kannst sie nur löschen, aber selbst das wäre sinn frei.
Was stört dich denn an den Logs?
Mhmm, okay. Dann weis ich auch nicht, woran es liegen könnte. Müsste man wohl live am System anschauen. :s
aber lässt sich dein Verdacht (ich ahne schon welcher) auch auf die Problematik mit den einzelnen Usern (immer die gleichen) zurückführen?
Das weis ich leider nicht. Ich weis nur, dass die aktuellste Ubuntu Version einen Kernel verwendet, der mit älterer Hardware nicht (richtig) kompatibel ist und es daher zu komischen Phänomenen führen kann. Wenn deine CPU keinen PAE-Support hat, wird der Kernel große Probleme haben, richtig zu funktionieren. Laut Google-Suchergebnissen starten die meisten Server/Notebooks dann sogar erst gar nicht.
Also ich würde eine entsprechend ältere Ubuntu Version installieren oder versuchen, den Kernel zu downgraden. Laut Ubuntu selbst, funktioniert die aktuellste Ubuntu Version auch auf Uralt Rechnern - man muss lediglich den richtigen Kernel installieren.
Hier mal ein Artikel von Heise dazu: Ubuntu 12.04.4 für alte Rechner | heise open
PS: Wenn du nur 512 MB RAM hast, reicht auch die 32-Bit Version eines Betriebssystems, denn die 64-Bit Version bringt erst ab 4 GB RAM und mehr etwas.
Hallo,
ich habe da mal was für die Programmierung benötigt und dabei entstand dann dieses Thema: Sprach-/Dateiübertragung messen - Voice-/Filetransfer
Eventuell ist da was für dich dabei.
Aber prinzipiell ist vnstat ein gutes Performance-Analyse Tool. iptraf wäre glaub ich ein Tool, dass auch dauerhaft im Hintergrund aufzeichnet - bin mir allerdings nicht sicher, ob es nicht sogar ein anderes Tool war.
Hier werden einige interessante und nennenswerte Tools genannt: 18 commands to monitor network bandwidth on Linux server
Ansonsten kann das bestimmt Nagios.
Mhmm, okay. Was steht in der aktuellsten Log-Datei der TeamSpeak Server Instanz drin?
Ja, das nachfolgende ist overpowered, aber hatte irgendwie grade Bock drauf.
cat $(find $(dirname $(find / -name ts3server_startscript.sh))/logs/ -name ts3server_*_0.log | sort -nr | head -1)
Hinweis: Der Code kann als Benutzer root oder der Eigentümer des Servers ausgeführt werden.
Was macht der Code?
Wirklich? Ja, guckst du:
Auf einmal geht nicht, aber nacheinander. Per Skript geht das zum Beispiel relativ schnell.
Hab mal eben eins gebastelt - konnte es aber noch nicht testen, daher auf eigene Gefahr. Teste es vorher bitte selber oder warte, bis ich heute Abend daheim bin und dafür Zeit habe. Wird so gegen 20 Uhr sein.
Sollte am prinzipiell - rein vom logischen - so einwandfrei funktionieren.
Du musst folgende Code-Stellen anpassen:
Denn im SQLite Dump wird stehen:AUTOINCREMENTUnd in einem MySQL Dump sollte stehen:AUTO_INCREMENTIn einem SQLite Dump gibt es in einemINSERT INTOStatemant eine andere Art des Escapen.
Deswegen gibt es Hilfen, dies entsprechend zu konvertieren: sqlite - Quick easy way to migrate SQLite3 to MySQL? - Stack Overflow
Weitere Infos findet man hierzu auch hier: Suchergebnisse
SQLite nutzt anscheinend " und MySQL nutzt '
Nein, die doppelten Anführungszeichen funktionieren in beiden Datenbanken, da das genormt ist - genauso auch die einfachen Anführungszeichen.
Die Verbindungsinformationen deines Servers sind in Ordnung und akzeptabel.
2014-09-11 22:32:35.893419|WARNING |SCHandler | 1| Got command data while disconnected, dropping
Diese Meldung heißt, dass der Client bereits die Verbindung getrennt/verloren hat und er die Verbindung wieder aufbauen möchte, es jedoch nicht kann und daher vom Server fliegt bzw. geschmissen wird.
Hast du in den Servergruppen vielleicht eingestellt, dass man pro Identität nur 1x drauf darf? Falls ja: Erhöhe dieses Rechte bitte auf 3, um sowas für disconnects zu umgehen. Das Recht heißt "i_client_max_clones_uid".
Ansonsten musst du schauen, ob es irgendwelche Netzwerkprobleme am Server oder Client gibt:
Achso, okay. Das liegt dem Framework bei, das sowieso verwendet wird. Wusste ich nicht. Trotzdem Danke für die Info!
Hallo,
ich schlage folgendes vor: Erstelle eine frische Installation eines TeamSpeak 3 Servers - dieses mal jedoch mit einer MySQL bzw. MariaDB Datenbank: TeamSpeak Server Installation mit der MariaDB
Ich empfehle dir direkt die MariaDB zu nutzen, wenn du ihn eh neu installierst. Ist performance-reicher und aktueller als die MySQL Datenbank. Ansonsten funktioniert die Anleitung genauso für die MySQL Datenbank. Du musst nur immer "mariadb" durch "mysql" austauschen.
Gut. Je nachdem, wo du die neue Instanz installierst und ob du noch eine entsprechend freie IP hast, kannst du die Instanz gleich starten. Ansonsten lasse sie erstmal aus.
Jetzt machst du am besten pro virtuellen Server einen Snapshot. Hierzu empfehle ich dir, dass du ein Script bastelst/nimmst, dass das entsprechend automatisiert tut. Danach hast du dann so viele Snapshot-Dateien wie virtuelle Server.
Jetzt musst du ggfs. die funktionierende Instanz stoppen und die neue starten. Sobald diese gestartet ist, kannst du mit dem fast dem gleichen Skript die Snapshots auf der neuen Instanz wieder einspielen. So sollte das ganze relativ schnell und sauber gehen.
Wenn du dich dann versuchst, auf einen virtuellen Server zu verbinden, sollte das a) funktionieren und b) genauso erscheinen, wie zuvor.
Jetzt musst du nur noch folgendes tun: Verschiebe oder kopiere das files/ Verzeichnis von der alten Instanz in die neue. Somit sind wieder alle Dateien da, wo sie auch vorher waren.
Das wär's eigentlicht. Ich würde das dann erstmal eine weile so testen und belassen. Wenn es ein, zwei Wochen oder einen Monat ohne Probleme funktioniert, dann würde ich den Server nochmal anfassen und aufräumen:
Hinweis: Hierzu müssen die Instanzen natürlich nochmal ausgeschaltet werden!
PS: Ich entwickle genau für solche Sachen ja kommerziell die Softwares. Ich schau mal, ob ich dazu was sinnvolles hinkriege, was dann jeder nutzen kann. Das wird allerdings bis Sonntag dauern/warten müssen, da ich noch andere Projekte derzeit in der Pipe habe.
Hallo,
@RootsWin : Er meint das:
wollte fragen, ob irgendjemand ne idee hat, wie man google's reCAPTCHA hier einbauen könnte?
Den Link hab ich auch erst überlesen...