98 lines
2.7 KiB
Bash
Executable File
98 lines
2.7 KiB
Bash
Executable File
#!/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"
|