fix(xaseco): Neustart-Schleifen durch TS3-Plugin und Dedimania beheben

- tsstatus.php: ungefangene Exception bei fehlerhafter TS3-Query-Antwort
  beendete XAseco (auch unter PHP 7, live 58x im Log); jetzt leere Antwort
- XAsecoHealthcheck.sh: Webaccess-/Dedimania-Verbindungsfehler nicht mehr
  als XAseco-Fehler werten; das nicht erreichbare dedimania.net loeste
  sonst alle ~30 Minuten einen Neustart aus
This commit is contained in:
Patrick Asmus committed 2026-11-01 17:06:59 +01:00
1 parent 96798c2db6
commit 8b6a34e8d1
2 files changed
+15 -2

No files matched your search

+9
View File
@@ -446,6 +446,15 @@ if [ -f "$XASECO_TS3" ] && grep -qF "if ( count(\$info['players']) > 0 ) {" "$XA
echo " plugin.teamspeak3.php: count()-Pruefung entschaerft."
fi
# XAseco TeamSpeak3-Plugin: Antwortet der TS3-Query-Port nicht korrekt, wirft
# tsstatus.php eine Exception, die niemand faengt -> XAseco stirbt (auch unter
# PHP 7). Wie bei den uebrigen, bereits auskommentierten throws: leer zurueck.
XASECO_TSSTATUS="/opt/tmserver/xaseco/includes/tsstatus.php"
if [ -f "$XASECO_TSSTATUS" ] && grep -qF 'if(!$isTs3) throw new Exception("Not a Teamspeak 3 server/bad query port");' "$XASECO_TSSTATUS"; then
sed -i 's|if(!\$isTs3) throw new Exception("Not a Teamspeak 3 server/bad query port");|if(!$isTs3) { $this->disconnect(); return ""; } // tmserver-docker: kein Absturz|' "$XASECO_TSSTATUS"
echo " tsstatus.php: Exception bei fehlerhaftem TS3-Query entschaerft."
fi
# AdminServ: stat() liefert bei Dateinamen mit Sonderzeichen false (AdminServ
# wandelt sie vorher per utf8_encode um). @array_slice(false) war unter PHP 7
# still, unter PHP 8 ein TypeError -> "MatchSettings erstellen" brach ab.
+6 -2
View File
@@ -94,8 +94,12 @@ check_xaseco_log() {
if [ ! -f "$LOG_FILE" ]; then
return 0
fi
# Letzte 20 Zeilen auf fatale Fehler / Verbindungsabbrueche pruefen
LAST_LINES=$(tail -20 "$LOG_FILE" 2>/dev/null)
# Letzte 20 Zeilen auf fatale Fehler / Verbindungsabbrueche pruefen.
# Fehlschlaege externer Webdienste (Dedimania, ManiaKarma, ...) laufen ueber
# Webaccess/fsockopen und betreffen nicht die Verbindung zum TM-Server.
# Ohne Filter loeste das nicht erreichbare dedimania.net alle ~30 Minuten
# einen XAseco-Neustart aus.
LAST_LINES=$(tail -20 "$LOG_FILE" 2>/dev/null | grep -v -i "webaccess\|fsockopen\|dedimania")
# Typische Fehlermeldungen bei XAseco-Verbindungsverlust
if echo "$LAST_LINES" | grep -qi "connection refused\|broken pipe\|server not responding\|transport error\|socket error\|fatal error"; then
return 1