#!/bin/bash

# Fix-Skript für Webserver-Probleme
# Auf dem Webserver ausführen: sudo bash fix_webserver_issues.sh

PROJECT_DIR="/var/www/html/fleet_monitoring"
WEB_USER="www-data"

echo "=== Fix für Webserver-Probleme ==="
echo "Projekt-Verzeichnis: $PROJECT_DIR"
echo ""

cd "$PROJECT_DIR" || exit 1

# 1. Prüfe .env.local
echo "1. Prüfe .env.local..."
if [ ! -f ".env.local" ]; then
    echo "   ⚠️  .env.local existiert nicht!"
    echo "   Erstelle .env.local aus .env..."
    
    if [ -f ".env" ]; then
        cp .env .env.local
        echo "   ✓ .env.local erstellt"
    else
        echo "   ✗ FEHLER: .env existiert auch nicht!"
        echo "   Bitte erstelle .env.local manuell mit folgenden Inhalten:"
        echo ""
        echo "   APP_ENV=prod"
        echo "   APP_DEBUG=0"
        echo "   APP_SECRET=your-secret-key-here"
        echo "   DATABASE_URL=\"mysql://admin:hyc6auz4@192.168.1.4:3306/fleet_monitoring\""
        echo "   INFLUXDB_URL=\"http://192.168.1.4:8086\""
        echo "   INFLUXDB_DATABASE=h2m"
        echo "   INFLUXDB_USERNAME=fleet_control"
        echo "   INFLUXDB_PASSWORD=h2M@fleet_control"
        exit 1
    fi
else
    echo "   ✓ .env.local existiert"
fi

# 2. Prüfe wichtige Variablen in .env.local
echo "2. Prüfe wichtige Variablen..."
if grep -q "APP_ENV=" .env.local; then
    echo "   ✓ APP_ENV gesetzt"
else
    echo "   ⚠️  APP_ENV fehlt, füge hinzu..."
    echo "APP_ENV=prod" >> .env.local
fi

if grep -q "DATABASE_URL=" .env.local; then
    echo "   ✓ DATABASE_URL gesetzt"
else
    echo "   ⚠️  DATABASE_URL fehlt!"
fi

if grep -q "INFLUXDB_URL=" .env.local; then
    echo "   ✓ INFLUXDB_URL gesetzt"
else
    echo "   ⚠️  INFLUXDB_URL fehlt!"
fi

# 3. Prüfe Netzwerk-Verbindung
echo "3. Prüfe Netzwerk-Verbindung..."
echo "   Teste 192.168.55.101 (Datalogger 2)..."
if ping -c 1 -W 2 192.168.55.101 > /dev/null 2>&1; then
    echo "   ✓ Ping OK"
    
    # Teste Port 5000
    if timeout 2 bash -c "echo > /dev/tcp/192.168.55.101/5000" 2>/dev/null; then
        echo "   ✓ Port 5000 erreichbar"
    else
        echo "   ✗ Port 5000 NICHT erreichbar!"
        echo "   ⚠️  Mögliche Ursachen:"
        echo "      - Firewall blockiert Port 5000"
        echo "      - Datalogger läuft nicht"
        echo "      - Netzwerk-Routing-Problem"
    fi
else
    echo "   ✗ Ping FEHLER - Datalogger nicht erreichbar!"
    echo "   ⚠️  Mögliche Ursachen:"
    echo "      - Datalogger ist ausgeschaltet"
    echo "      - Netzwerk-Routing-Problem"
    echo "      - VPN-Verbindung unterbrochen"
fi

echo "   Teste 192.168.55.102 (Datalogger 3)..."
if ping -c 1 -W 2 192.168.55.102 > /dev/null 2>&1; then
    echo "   ✓ Ping OK"
    
    # Teste Port 5000
    if timeout 2 bash -c "echo > /dev/tcp/192.168.55.102/5000" 2>/dev/null; then
        echo "   ✓ Port 5000 erreichbar"
    else
        echo "   ✗ Port 5000 NICHT erreichbar!"
    fi
else
    echo "   ✗ Ping FEHLER - Datalogger nicht erreichbar!"
fi

# 4. Cache leeren
echo "4. Leere Cache..."
rm -rf var/cache/prod/*
sudo -u $WEB_USER php bin/console cache:clear --env=prod --no-warmup 2>/dev/null || true
echo "   ✓ Cache geleert"

# 5. Berechtigungen setzen
echo "5. Setze Berechtigungen..."
chown -R $WEB_USER:$WEB_USER var
chown -R $WEB_USER:$WEB_USER .env.local
chmod 640 .env.local
chmod -R 775 var
echo "   ✓ Berechtigungen gesetzt"

# 6. PHP-FPM neu starten
echo "6. Starte PHP-FPM neu..."
if systemctl is-active --quiet php8.2-fpm; then
    systemctl restart php8.2-fpm
    echo "   ✓ PHP-FPM neu gestartet"
elif systemctl is-active --quiet php8.1-fpm; then
    systemctl restart php8.1-fpm
    echo "   ✓ PHP-FPM neu gestartet"
else
    echo "   ⚠️  PHP-FPM nicht gefunden"
fi

echo ""
echo "=== Fertig! ==="
echo ""
echo "Nächste Schritte:"
echo "1. Prüfe ob .env.local alle benötigten Variablen enthält"
echo "2. Prüfe die Netzwerk-Verbindung zu den Dataloggern"
echo "3. Teste die Datalogger-API im Browser"
echo ""
echo "Falls die Datalogger weiterhin nicht erreichbar sind:"
echo "- Prüfe die Firewall-Regeln: sudo ufw status"
echo "- Prüfe die Routing-Tabelle: ip route show"
echo "- Prüfe ob die Datalogger laufen: curl http://192.168.55.101:5000/api/health"
