#!/bin/bash echo "=== Beeper Bridge Repair Tool v3 (Python Fix) ===" # 1. Python Script erstellen cat << 'PYTHON_SCRIPT' > fix_yaml.py import sys import os # Pip install on the fly if needed (wird im Container gemacht) try: from ruamel.yaml import YAML except ImportError: 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", "data/telegram/config.yaml", "data/signal/config.yaml", "data/googlechat/config.yaml" ] # Standard Logging Config für Docker (nur Stdout) logging_config = { "version": 1, "formatters": { "colored": { "format": "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s", "datefmt": "%b %d %H:%M:%S" } }, "handlers": { "console": { "class": "logging.StreamHandler", "formatter": "colored", "stream": "ext://sys.stdout" } }, "root": { "level": "INFO", "handlers": ["console"] } } for file_path in files: if not os.path.exists(file_path): print(f"Skipping missing file: {file_path}") continue print(f"Processing {file_path}...") try: with open(file_path, 'r') as f: data = yaml.load(f) # 1. Fix Database URI if 'appservice' in data and 'database' in data['appservice']: if isinstance(data['appservice']['database'], str): data['appservice']['database'] = "sqlite:////data/bridge.db" elif isinstance(data['appservice']['database'], dict): data['appservice']['database']['uri'] = "sqlite:////data/bridge.db" 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 with open(file_path, 'w') as f: yaml.dump(data, f) print(f" -> Success.") except Exception as e: print(f" -> Error processing {file_path}: {e}") PYTHON_SCRIPT # 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" # 3. Berechtigungen echo "[*] Setze Berechtigungen auf 777..." chmod -R 777 data/ # Cleanup rm fix_yaml.py echo "" echo "=== Fertig ===" echo "Jetzt: docker compose up"