#!/bin/bash
# Quick-Check für Punycode-Domain DNS und Zertifikat

set -e

echo "🔍 Quick-Check für hördle.de (xn--hrdle-jua.de)"
echo ""

# Prüfe DNS
echo "1️⃣ DNS-Auflösung:"
echo ""
echo "   hoerdle.de:"
HOERDLE_IP=$(dig +short hoerdle.de @8.8.8.8 | head -1 || echo "")
if [ -z "$HOERDLE_IP" ]; then
    echo "      ❌ Konnte nicht aufgelöst werden"
else
    echo "      ✅ IP: $HOERDLE_IP"
fi

echo ""
echo "   xn--hrdle-jua.de:"
PUNYCODE_IP=$(dig +short xn--hrdle-jua.de @8.8.8.8 | head -1 || echo "")
if [ -z "$PUNYCODE_IP" ]; then
    echo "      ❌ Konnte nicht aufgelöst werden"
else
    echo "      ✅ IP: $PUNYCODE_IP"
fi

if [ -n "$HOERDLE_IP" ] && [ -n "$PUNYCODE_IP" ]; then
    if [ "$HOERDLE_IP" = "$PUNYCODE_IP" ]; then
        echo ""
        echo "   ✅ Beide Domains zeigen auf die gleiche IP ($HOERDLE_IP)"
    else
        echo ""
        echo "   ⚠️  WARNUNG: Domains zeigen auf unterschiedliche IPs!"
        echo "      hoerdle.de: $HOERDLE_IP"
        echo "      xn--hrdle-jua.de: $PUNYCODE_IP"
        echo "      → Beide sollten auf die gleiche IP zeigen!"
    fi
fi

echo ""
echo "2️⃣ HTTPS-Verbindungstest:"
echo ""

# Test hoerdle.de
echo "   hoerdle.de:"
if timeout 5 bash -c "echo > /dev/tcp/hoerdle.de/443" 2>/dev/null; then
    echo "      ✅ Port 443 ist erreichbar"
    if echo | timeout 5 openssl s_client -connect hoerdle.de:443 -servername hoerdle.de 2>/dev/null | grep -q "Verify return code: 0"; then
        CERT_VALID_UNTIL=$(echo | timeout 5 openssl s_client -connect hoerdle.de:443 -servername hoerdle.de 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2 || echo "")
        echo "      ✅ Zertifikat gültig bis: $CERT_VALID_UNTIL"
    else
        echo "      ❌ Zertifikat ungültig oder fehlt"
    fi
else
    echo "      ❌ Port 443 nicht erreichbar"
fi

echo ""
echo "   xn--hrdle-jua.de:"
if timeout 5 bash -c "echo > /dev/tcp/xn--hrdle-jua.de/443" 2>/dev/null; then
    echo "      ✅ Port 443 ist erreichbar"
    if echo | timeout 5 openssl s_client -connect xn--hrdle-jua.de:443 -servername xn--hrdle-jua.de 2>/dev/null | grep -q "Verify return code: 0"; then
        CERT_VALID_UNTIL=$(echo | timeout 5 openssl s_client -connect xn--hrdle-jua.de:443 -servername xn--hrdle-jua.de 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2 || echo "")
        echo "      ✅ Zertifikat gültig bis: $CERT_VALID_UNTIL"
    else
        echo "      ❌ Zertifikat ungültig oder fehlt (ERR_SSL_PROTOCOL_ERROR)"
        echo ""
        echo "      💡 Lösung: Führe aus: ./scripts/renew-caddy-certificates.sh"
    fi
else
    echo "      ❌ Port 443 nicht erreichbar"
fi

echo ""
echo "3️⃣ Caddy-Container Status:"
echo ""
if docker ps | grep -q hoerdle-caddy; then
    echo "   ✅ Caddy-Container läuft"
    echo ""
    echo "   📋 Letzte Caddy-Logs (Zertifikat-bezogen):"
    docker logs hoerdle-caddy 2>&1 | grep -i -E "(xn--hrdle|punycode|certificate|tls|acme|challenge)" | tail -5 || echo "      (Keine relevanten Einträge gefunden)"
else
    echo "   ❌ Caddy-Container läuft nicht"
    echo "      Starte mit: docker compose -f docker-compose.caddy.yml --profile production up -d"
fi

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "💡 Nächste Schritte:"
echo ""
if [ -n "$HOERDLE_IP" ] && [ -n "$PUNYCODE_IP" ] && [ "$HOERDLE_IP" != "$PUNYCODE_IP" ]; then
    echo "   1. ❗ DNS-Konfiguration prüfen!"
    echo "      Beide Domains müssen auf die gleiche IP zeigen."
    echo "      Prüfe in GoDaddy: https://dcc.godaddy.com/manage/hoerdle.de/dns"
    echo ""
fi

echo "   2. Wenn DNS korrekt ist, Zertifikat neu erstellen:"
echo "      ./scripts/renew-caddy-certificates.sh"
echo ""
echo "   3. Caddy-Logs überwachen:"
echo "      docker logs hoerdle-caddy -f"
echo ""
echo "   4. Detaillierte Diagnose:"
echo "      ./scripts/check-caddy-certificates.sh"
echo ""

