#!/bin/bash

# Konfiguration
NETZWERK="192.168.178.0/24"
PORTS_TCP=(139 445)
PORTS_UDP=(137 138)
BACKUP_DATEI="$HOME/.ufw_backup.rules"

HINZUFUEGEN() {
    echo "Sichere aktuelle UFW-Konfiguration..."
    # Sichert die genauen iptables/ufw Regeln in eine Datei
    sudo cp /etc/ufw/user.rules "$BACKUP_DATEI"

    echo "Füge UFW-Regeln für das Windows-Netzwerk ($NETZWERK) hinzu..."
    # Wir fügen die Regeln ganz oben ein (insert 1), damit sie deine DENY-Regel für Port 137 überschreiben!
    for port in "${PORTS_TCP[@]}"; do
        sudo ufw insert 1 allow from "$NETZWERK" to any port "$port" proto tcp
    done
    for port in "${PORTS_UDP[@]}"; do
        sudo ufw insert 1 allow from "$NETZWERK" to any port "$port" proto udp
    done
    echo "Regeln erfolgreich aktiviert."
}

ENTFERNEN() {
    if [ -f "$BACKUP_DATEI" ]; then
        echo "Stelle die originale UFW-Konfiguration aus dem Backup wieder her..."

        # Kopiert zurück, lädt UFW neu und löscht das Backup NUR bei Erfolg
        if sudo cp "$BACKUP_DATEI" /etc/ufw/user.rules; then
            sudo ufw reload
            rm -f "$BACKUP_DATEI"
            echo "Originalzustand erfolgreich wiederhergestellt."
        else
            echo "Fehler: Die Konfiguration konnte nicht zurückkopiert werden! Backup bleibt erhalten."
        fi
    else
        echo "Fehler: Kein Backup gefunden! Wurde das Skript vorher mit 'start' aufgerufen?"
    fi
}

STATUS() {
    echo "Aktueller Status der UFW-Firewall:"
    sudo ufw status numbered
}

# Parameter auswerten
case "$1" in
    start)
        HINZUFUEGEN
        ;;
    stop)
        ENTFERNEN
        ;;
    status)
        STATUS
        ;;
    *)
        echo "Fehler: Ungültiger Parameter."
        echo "Nutzung: $0 {start|stop|status}"
        exit 1
        ;;
esac
