#!/bin/bash

###############################################################################
#                                                                             #
#  Richtet sudo-Rechte für www-data ein, damit der Webserver                  #
#  (Apache/PHP) die Befehle reboot und shutdown ohne Passwort                 #
#  ausführen kann (benötigt für die Shutdown/Reboot-Funktion im               #
#  Info/Debug-Tab des Weckers).                                               #
#                                                                             #
#  Aufruf:  ./setup_sudoers_www_data.sh                                       #
#  (Holt sich sudo-Rechte automatisch an den nötigen Stellen)                 #
#                                                                             #
###############################################################################

SUDOERS_FILE="/etc/sudoers.d/wecker-www-data"

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

# Pfade zu reboot und shutdown ermitteln
# Wir nutzen sudo beim Suchen, da /sbin oft nicht im User-PATH liegt
REBOOT_BIN="$(sudo command -v reboot 2>/dev/null || echo /sbin/reboot)"
SHUTDOWN_BIN="$(sudo command -v shutdown 2>/dev/null || echo /sbin/shutdown)"

echo "Konfiguration:"
echo "  Sudoers-Datei:  $SUDOERS_FILE"
echo "  reboot-Pfad:    $REBOOT_BIN"
echo "  shutdown-Pfad:  $SHUTDOWN_BIN"
echo ""

# Sudoers-Eintrag schreiben (In temporäre Datei im User-Verzeichnis)
TMP_FILE="$(mktemp)"
cat > "$TMP_FILE" << EOF
# Wecker: www-data darf reboot und shutdown ohne Passwort ausfuehren
www-data ALL=(ALL) NOPASSWD: $REBOOT_BIN, $SHUTDOWN_BIN
EOF

# Syntax prüfen (Nutzt sudo für den Zugriff auf visudo-Logik)
if sudo visudo -c -f "$TMP_FILE" &> /dev/null; then
    # Die Datei mit sudo an den Zielort kopieren und Rechte setzen
    sudo cp "$TMP_FILE" "$SUDOERS_FILE"
    sudo chown root:root "$SUDOERS_FILE"
    sudo chmod 0440 "$SUDOERS_FILE"
    rm -f "$TMP_FILE"

    echo "Sudoers-Eintrag erfolgreich erstellt: $SUDOERS_FILE"
    echo ""
    echo "Inhalt:"
    sudo cat "$SUDOERS_FILE"
    echo ""
    echo "Fertig. www-data kann jetzt reboot und shutdown ohne Passwort ausführen."
else
    rm -f "$TMP_FILE"
    echo "Fehler: Sudoers-Syntax ungültig. Nichts wurde geändert."
    exit 1
fi