#!/bin/sh
#
# B4K2.1 – Routing‑Bestandsaufnahme (anonymisiert)
# Nur lesend – keine Änderungen an Routing, Firewall oder Docker.
#

set -u

LOG_DIR="/path/to/vpn-platform/ha/logs"
STAMP="$(date +%Y%m%d_%H%M%S)"
LOG_FILE="${LOG_DIR}/B4K2-1_Routing_Bestandsaufnahme_${STAMP}.log"

mkdir -p "$LOG_DIR"

{
    echo "============================================================"
    echo "B4K2.1 – Routing‑Bestandsaufnahme"
    echo "Zeitpunkt: $(date)"
    echo "Host: $(hostname)"
    echo "Logdatei: $LOG_FILE"
    echo "============================================================"
    echo

    echo "### 1. System"
    uname -a
    echo

    echo "### 2. IPv4‑Netzwerkschnittstellen"
    ip -4 addr show
    echo

    echo "### 3. IPv4‑Weiterleitung"
    sysctl net.ipv4.ip_forward 2>&1
    echo

    echo "### 4. Policy‑Routing‑Regeln"
    ip rule show 2>&1
    echo

    echo "### 5. Routingtabelle main"
    ip route show table main 2>&1
    echo

    echo "### 6. Routingtabelle 199"
    ip route show table 199 2>&1
    echo

    echo "### 7. Routingtabelle 200"
    ip route show table 200 2>&1
    echo

    echo "### 8. Aktive Standardrouten"
    ip route show default 2>&1
    echo

    echo "### 9. Docker‑Container mit Bezug zu Gluetun/Keepalived"
    docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Networks}}' 2>&1 \
        | grep -E 'NAMES|gluetun|keepalived|vpn' || true
    echo

    IPT=""
    if command -v iptables-legacy >/dev/null 2>&1; then
        IPT="$(command -v iptables-legacy)"
    elif command -v iptables >/dev/null 2>&1; then
        IPT="$(command -v iptables)"
    fi

    echo "### 10. Verwendetes iptables‑Werkzeug"
    if [ -n "$IPT" ]; then
        echo "$IPT"
    else
        echo "FEHLER: Weder iptables-legacy noch iptables wurde gefunden."
    fi
    echo

    if [ -n "$IPT" ]; then
        echo "### 11. Filtertabelle – FORWARD"
        "$IPT" -S FORWARD 2>&1
        echo

        echo "### 12. NAT‑Tabelle – POSTROUTING"
        "$IPT" -t nat -S POSTROUTING 2>&1
        echo

        echo "### 13. Mangle‑Tabelle – PREROUTING"
        "$IPT" -t mangle -S PREROUTING 2>&1
        echo

        echo "### 14. Mangle‑Tabelle – OUTPUT"
        "$IPT" -t mangle -S OUTPUT 2>&1
        echo
    fi

    echo "============================================================"
    echo "Diagnose abgeschlossen."
    echo "Es wurden keine Routing‑ oder Firewallregeln verändert."
    echo "============================================================"
} 2>&1 | tee "$LOG_FILE"

echo
echo "LOGDATEI=$LOG_FILE"