#!/bin/bash

###############################################################################
#                                                                             #
#  Richtet sudo-Rechte für www-data ein, damit der Webserver                  #
#  (Apache/PHP) nmcli-Befehle ohne Passwort ausführen kann.                  #
#  Benötigt für die WLAN-Einstellungs-Funktion des Weckers.                  #
#                                                                             #
#  Aufruf:  ./setup_sudoers_wlan.sh   (als User wecker, hebt auf root)       #
#  oder:    sudo ./setup_sudoers_wlan.sh                                      #
#                                                                             #
###############################################################################

if [ "$(id -u)" -ne 0 ]; then
    echo "Skript wird mit root-Rechten ausgeführt (sudo)..."
    exec sudo "$0" "$@"
fi

SUDOERS_FILE="/etc/sudoers.d/wecker-wlan"

# Prüfen ob visudo/sudoers verfügbar ist
if ! command -v visudo &> /dev/null; then
    echo "Fehler: visudo nicht gefunden. Ist sudo installiert?"
    exit 1
fi

# nmcli-Pfad ermitteln
NMCLI_BIN="$(command -v nmcli 2>/dev/null || echo /usr/bin/nmcli)"

if [ ! -f "$NMCLI_BIN" ]; then
    echo "Warnung: nmcli nicht gefunden unter $NMCLI_BIN"
    echo "  Bitte NetworkManager installieren: sudo apt install network-manager"
    echo "  Der Sudoers-Eintrag wird trotzdem mit diesem Pfad geschrieben."
fi

echo "Konfiguration:"
echo "  Sudoers-Datei:  $SUDOERS_FILE"
echo "  nmcli-Pfad:     $NMCLI_BIN"
echo ""

# Sudoers-Eintrag schreiben (temporäre Datei + visudo -c zur Validierung)
TMP_FILE="$(mktemp)"
cat > "$TMP_FILE" << EOF
# Wecker: www-data darf nmcli ohne Passwort ausfuehren (fuer WLAN-Einstellungen)
www-data ALL=(ALL) NOPASSWD: $NMCLI_BIN
EOF

# Syntax prüfen
if visudo -c -f "$TMP_FILE" &> /dev/null; then
    cp "$TMP_FILE" "$SUDOERS_FILE"
    chmod 0440 "$SUDOERS_FILE"
    rm -f "$TMP_FILE"
    echo "Sudoers-Eintrag erfolgreich erstellt: $SUDOERS_FILE"
    echo ""
    echo "Inhalt:"
    cat "$SUDOERS_FILE"
    echo ""
    echo "Fertig. www-data kann jetzt nmcli ohne Passwort ausführen."
    echo ""
    echo "Hinweis: NetworkManager muss aktiv sein:"
    echo "  sudo systemctl enable --now NetworkManager"
    echo ""
    echo "Falls der Pi bisher wpa_supplicant nutzt, auf NetworkManager umstellen:"
    echo "  sudo raspi-config  →  System Options → Network Interface Names"
else
    rm -f "$TMP_FILE"
    echo "Fehler: Sudoers-Syntax ungültig. Nichts wurde geändert."
    exit 1
fi
