#!/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   (als User wecker, hebt auf root)   #
#  oder:    sudo ./setup_sudoers_www_data.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-www-data"

# 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

# Pfade zu reboot und shutdown ermitteln (je nach Distro leicht unterschiedlich)
REBOOT_BIN="$(command -v reboot 2>/dev/null || echo /sbin/reboot)"
SHUTDOWN_BIN="$(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 (temporäre Datei + visudo -c zur Validierung)
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
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 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