#!/bin/sh
# qrk-sitecheck - Kundensetup fuer die QRK-Kiosk-Kasse.
# Aufruf als root (sudo qrk-sitecheck).
#
# Wenn /etc/qrk-kiosk/config.sh existiert, werden ALLE dort eingetragenen
# Werte ohne Rueckfragen angewendet. Ansonsten interaktiv (nur SSID/Passwort,
# Drucker-IP, Zeitzone eingeben).
#
# Vorlage: /usr/share/qrk-kiosk/config.sh.example
set -u

CONF=/etc/qrk-kiosk/config.sh

if [ "$(id -u)" -ne 0 ]; then
    exec sudo -E sh "$0" "$@"
fi

USE_CONF=0
if [ -f "$CONF" ]; then
    # shellcheck disable=SC1090
    . "$CONF"
    USE_CONF=1
fi

ask()  { printf '%s ' "$1"; }
yesno() { printf '%s [j/N] ' "$1"; read _answer; case "${_answer:-N}" in j|J|y|Y) return 0;; *) return 1;; esac; }

# ---------- 1) WLAN systemweit ----------
if [ -n "${WIFI_SSID:-}" ]; then
    nmcli dev wifi connect "$WIFI_SSID" password "${WIFI_PASSWORD:-}" 2>&1 | tail -1
    nmcli con mod "$WIFI_SSID" connection.autoconnect yes connection.permissions "" 2>&1 | tail -1
    echo "-> WLAN '${WIFI_SSID}' systemweit + autoconnect."
elif [ "$USE_CONF" -eq 0 ] && yesno "Kunden-WLAN systemweit verbinden?"; then
    ask "WLAN-SSID:"; read WIFI_SSID
    ask "WLAN-Passwort (ohne Echo):"; stty -echo; read WIFI_PASSWORD; stty echo; echo
    [ -n "$WIFI_SSID" ] && {
        nmcli dev wifi connect "$WIFI_SSID" password "$WIFI_PASSWORD" 2>&1 | tail -1
        nmcli con mod "$WIFI_SSID" connection.autoconnect yes connection.permissions "" 2>&1 | tail -1
        echo "-> WLAN '${WIFI_SSID}' systemweit."
    }
fi

# ---------- 2) Drucker (Epson TM, AppSocket 9100) ----------
if [ -n "${PRINTER_IP:-}" ]; then
    PPD="$(find /usr/share/cups/model -iname '*.ppd' 2>/dev/null | grep -i tm | head -1)"
    PPD="${PPD:-$(find /usr/share/cups/model -iname '*.ppd' 2>/dev/null | head -1)}"
    if lpadmin -p "${PRINTER_NAME:-Epson_TM}" -E -v "socket://${PRINTER_IP}:9100" ${PPD:+-P "$PPD"} 2>&1; then
        echo "-> Drucker '${PRINTER_NAME:-Epson_TM}' (${PRINTER_IP}:9100) angelegt."
    else
        echo "-> Drucker konnte nicht angelegt werden; bitte in KDE anlegen."
    fi
elif [ "$USE_CONF" -eq 0 ] && yesno "Drucker per IP einrichten?"; then
    ask "Drucker-IP (leer = skipp):"; read DIP
    if [ -n "$DIP" ]; then
        PPD="$(find /usr/share/cups/model -iname '*.ppd' 2>/dev/null | grep -i tm | head -1)"
        PPD="${PPD:-$(find /usr/share/cups/model -iname '*.ppd' 2>/dev/null | head -1)}"
        lpadmin -p Epson_TM -E -v "socket://${DIP}:9100" ${PPD:+-P "$PPD"} 2>&1 && \
            echo "-> Drucker 'Epson_TM' angelegt; in QRK -> Einstellungen -> Drucker waehlen."
    fi
fi

# ---------- 3) Zeitzone + NTP ----------
TZ="${TIMEZONE:-Europe/Vienna}"
if timedatectl set-timezone "$TZ" 2>/dev/null; then
    timedatectl set-ntp true 2>/dev/null
    echo "-> Zeitzone ${TZ}, NTP aktiv."
fi

# ---------- 4) Hostname ----------
if [ -n "${DEVICE_HOSTNAME:-}" ]; then
    echo "$DEVICE_HOSTNAME" > /etc/hostname
    hostname "$DEVICE_HOSTNAME" 2>/dev/null || true
    echo "-> Hostname ${DEVICE_HOSTNAME}."
fi

# ---------- 5) AnyDesk-Passwort ----------
if [ -n "${ANYDESK_PASSWORD:-}" ]; then
    if printf '%s' "$ANYDESK_PASSWORD" | anydesk --set-password >/dev/null 2>&1; then
        echo "-> AnyDesk-Unattended-Passwort gesetzt."
    else
        echo "-> AnyDesk-Passwort konnte nicht gesetzt werden (stark genug?)."
    fi
fi

# ---------- 5b) Qt-Theme (light/dark) ----------
if [ -n "${QT_THEME:-}" ]; then
    case "$QT_THEME" in light|dark) ;;
        *) echo "-> QT_THEME=$QT_THEME ignoriert (nur light|dark)."; QT_THEME="" ;;
    esac
    if [ -n "$QT_THEME" ]; then
        command -v qrk-theme >/dev/null 2>&1 && qrk-theme "$QT_THEME" 2>&1 | tail -1 || \
            echo "-> Theme: $QT_THEME (bitte qrk-theme später ausfuehren)"
    fi
fi

# ---------- 6) DEP-Ziel (Hinweis) ----------
if [ -n "${DEP_BACKUP_TARGET:-}" ]; then
    echo "-> DEP-Ziel gesetzt: ${DEP_BACKUP_TARGET} (qrk-depbackup nutzt es)."
fi

# ---------- 7) Status ----------
echo
echo "== Status =="
echo "  IP/WLAN : $(ip -4 -brief addr show | awk '$2=="UP" && $3!=""{print $3; exit}')"
echo "  Uhrzeit : $(date)"
echo "  Drucker : $(lpstat -p 2>/dev/null | awk '/printer/{printf $2" "}')"
echo "  QRK     : $(dpkg -l qrk 2>/dev/null | awk '/^ii/{print $3}')"
echo "  DEP     : $(du -sh /home/kassa/.local/share/ckvsoft/QRK 2>/dev/null | awk '{print $1}')"
echo "  AnyDesk : $(anydesk --get-id 2>/dev/null)"
echo
echo "Vorlage fuer config.sh: /usr/share/qrk-kiosk/config.sh.example"
echo "Erinnerung: Testbon + FON + vierteljaehrliches DEP-Backup nicht vergessen."
exit 0