Felix K.
01-06-2009, 12:25
Hallo,
ich bin gerade dabei mein Teamspeak-Webinterface etwas umzuschreiben, sodass es statt des Queryports die sqlite-Datenbank benutzt.
Das Ändern der Einstellungen klappt soweit auch, nur leider werden die Änderungen nicht auf den Server übernommen. Hier mein Code:
<?php
$ts->query("UPDATE ts2_servers
SET s_server_name = '".sqlite_escape_string($_POST['name'])."'
WHERE i_server_udpport = ".$db_port);
$wi->rehash($db_port);
?>
$ts ist ein Object "SQLiteDatabase", womit ich die server.dbs bearbeite.
$wi ist meine Webinterface-Klasse, womit ich den Server starten und stoppen kann sowie prüfe, ob der User berechtigt ist etc.
Code der Methode rehash():
<?php
public function rehash($port) {
$return = false;
if ($conn = fsockopen(IP, TCPQUERY, $errNo, $errStr, 0.5)) {
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, "SLOGIN superadmin meinpw\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, 'SEL '.$port."\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, "REHASH\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
$sRead .= $cRead;
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
if (trim($sRead) == "OK") {
$return = true;
}
fwrite($conn, 'QUIT');
fclose($conn);
}
return $return;
}
?>
$wi->rehash() gibt definitiv true zurück, eine Ausgabe aller Lesevorgänge bringt nur [TS] und OK ..
ich bin gerade dabei mein Teamspeak-Webinterface etwas umzuschreiben, sodass es statt des Queryports die sqlite-Datenbank benutzt.
Das Ändern der Einstellungen klappt soweit auch, nur leider werden die Änderungen nicht auf den Server übernommen. Hier mein Code:
<?php
$ts->query("UPDATE ts2_servers
SET s_server_name = '".sqlite_escape_string($_POST['name'])."'
WHERE i_server_udpport = ".$db_port);
$wi->rehash($db_port);
?>
$ts ist ein Object "SQLiteDatabase", womit ich die server.dbs bearbeite.
$wi ist meine Webinterface-Klasse, womit ich den Server starten und stoppen kann sowie prüfe, ob der User berechtigt ist etc.
Code der Methode rehash():
<?php
public function rehash($port) {
$return = false;
if ($conn = fsockopen(IP, TCPQUERY, $errNo, $errStr, 0.5)) {
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, "SLOGIN superadmin meinpw\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, 'SEL '.$port."\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
fwrite($conn, "REHASH\n");
$sRead = '';
$timeout = time()+2;
do {
$cRead = fgets($conn);
$sRead .= $cRead;
} while ($cRead != "[TS]\r\n" && $cRead != "OK\r\n" && strtoupper(substr($cRead, 0, 5)) != "ERROR" && time() <= $timeout);
if (trim($sRead) == "OK") {
$return = true;
}
fwrite($conn, 'QUIT');
fclose($conn);
}
return $return;
}
?>
$wi->rehash() gibt definitiv true zurück, eine Ausgabe aller Lesevorgänge bringt nur [TS] und OK ..