From 1da86fb528bff3699ab36083a4a8b0c25a16a7e2 Mon Sep 17 00:00:00 2001 From: Gemini Bot Date: Fri, 5 Dec 2025 03:26:26 +0000 Subject: [PATCH] Fix repair.sh: Use python:3.11-slim image instead of bridge image --- repair.sh | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/repair.sh b/repair.sh index 3392f90..4d3dc7e 100755 --- a/repair.sh +++ b/repair.sh @@ -1,20 +1,22 @@ #!/bin/bash -echo "=== Beeper Bridge Repair Tool v2 (Python YAML Fix) ===" +echo "=== Beeper Bridge Repair Tool v3 (Python Fix) ===" -# 1. Python Script erstellen, das YAML sauber manipuliert +# 1. Python Script erstellen cat << 'PYTHON_SCRIPT' > fix_yaml.py import sys import os -# Versuche ruamel.yaml zu importieren (Standard in mautrix images), sonst pyyaml +# Pip install on the fly if needed (wird im Container gemacht) try: from ruamel.yaml import YAML - yaml = YAML() - yaml.preserve_quotes = True except ImportError: - print("WARNUNG: ruamel.yaml nicht gefunden. Nutze einfaches String-Parsing (weniger sicher).") - sys.exit(1) + import subprocess + subprocess.check_call([sys.executable, "-m", "pip", "install", "ruamel.yaml"]) + from ruamel.yaml import YAML + +yaml = YAML() +yaml.preserve_quotes = True files = [ "data/whatsapp/config.yaml", @@ -58,18 +60,14 @@ for file_path in files: # 1. Fix Database URI if 'appservice' in data and 'database' in data['appservice']: - # Alte Struktur if isinstance(data['appservice']['database'], str): data['appservice']['database'] = "sqlite:////data/bridge.db" - # Neue Struktur (oft direkt unter root oder appservice.database.uri) elif isinstance(data['appservice']['database'], dict): data['appservice']['database']['uri'] = "sqlite:////data/bridge.db" - # Fallback: Suche nach 'database' im Root (manche Bridges) if 'database' in data and isinstance(data['database'], dict) and 'uri' in data['database']: data['database']['uri'] = "sqlite:////data/bridge.db" - # 2. Replace Logging Section completely data['logging'] = logging_config @@ -80,16 +78,14 @@ for file_path in files: except Exception as e: print(f" -> Error processing {file_path}: {e}") - PYTHON_SCRIPT -# 2. Prüfen ob Python/ruamel verfügbar ist. Wenn nicht, nutzen wir einen Docker Container zum Fixen! -# Da wir eh Docker haben, nutzen wir einfach das whatsapp image, da ist python+ruamel drin. -echo "[*] Starte Reparatur im Docker Container (um Python-Abhängigkeiten zu nutzen)..." +# 2. Docker Container mit Python starten +echo "[*] Starte Reparatur mit python:3.11-slim..." +# Wir nutzen python:3.11-slim, installieren pip deps und führen das Script aus +docker run --rm -v $(pwd):/work -w /work python:3.11-slim sh -c "pip install ruamel.yaml && python fix_yaml.py" -docker run --rm -v $(pwd):/work -w /work dock.mau.dev/mautrix/whatsapp:latest python3 fix_yaml.py - -# 3. Berechtigungen nochmal setzen +# 3. Berechtigungen echo "[*] Setze Berechtigungen auf 777..." chmod -R 777 data/ @@ -98,4 +94,4 @@ rm fix_yaml.py echo "" echo "=== Fertig ===" -echo "Versuche jetzt: docker compose up" +echo "Jetzt: docker compose up"