#!/bin/bash
# install.sh — Installerar och konfigurerar kiosken på Debian 13 (Wayland/Sway)
set -e

KIOSK_USER="${KIOSK_USER:-mrfox}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

echo "=== Kiosk — installation ==="
echo "Användare: $KIOSK_USER"
echo "Katalog:   $SCRIPT_DIR"
echo ""

# ── 1. Systempaket ────────────────────────────────────────────────────────────
echo "[1/7] Installerar systempaket..."
apt-get update -q
apt-get install -y \
  sway chromium curl \
  iw wpasupplicant \
  python3 python3-flask python3-flask-socketio \
  python3-apscheduler python3-psutil python3-eventlet \
  pipewire pipewire-audio

# ── 2. Socket.IO-klientbibliotek ──────────────────────────────────────────────
echo "[2/7] Kontrollerar socket.io.min.js..."
SOCK_JS="$SCRIPT_DIR/kiosk/static/socket.io.min.js"
if [ ! -f "$SOCK_JS" ]; then
  echo "  Laddar ner socket.io v4.7.5..."
  curl -fsSL \
    "https://cdn.jsdelivr.net/npm/socket.io@4.7.5/client-dist/socket.io.min.js" \
    -o "$SOCK_JS"
  echo "  Sparad till $SOCK_JS"
else
  echo "  Redan nedladdad."
fi

# ── 3. Katalog och rättigheter ────────────────────────────────────────────────
echo "[3/7] Skapar kataloger och sätter rättigheter..."
mkdir -p "$SCRIPT_DIR/kiosk/uploads"
chmod +x \
  "$SCRIPT_DIR/kiosk/start.sh" \
  "$SCRIPT_DIR/kiosk/kiosk-launcher.sh" \
  "$SCRIPT_DIR/kiosk/sway-apps.sh" \
  "$SCRIPT_DIR/kiosk/hdmi-monitor.sh" \
  "$SCRIPT_DIR/kiosk/hdmi-wait.sh"

# ── 4. Wi-Fi sudoers ──────────────────────────────────────────────────────────
echo "[4/7] Konfigurerar sudoers för Wi-Fi (wpa_cli)..."
SUDOERS_FILE="/etc/sudoers.d/kiosk-wifi"
if [ ! -f "$SUDOERS_FILE" ]; then
  echo "$KIOSK_USER ALL=(ALL) NOPASSWD: /usr/sbin/wpa_cli" > "$SUDOERS_FILE"
  chmod 440 "$SUDOERS_FILE"
  echo "  Skapad: $SUDOERS_FILE"
else
  echo "  Redan konfigurerad."
fi

# ── 5. Autoinloggning på tty1 ─────────────────────────────────────────────────
echo "[5/7] Konfigurerar autoinloggning på tty1 för $KIOSK_USER..."
GETTY_OVERRIDE="/etc/systemd/system/getty@tty1.service.d/autologin.conf"
mkdir -p "$(dirname "$GETTY_OVERRIDE")"
if [ ! -f "$GETTY_OVERRIDE" ]; then
  cat > "$GETTY_OVERRIDE" <<EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin $KIOSK_USER --noclear %I \$TERM
EOF
  systemctl daemon-reload
  echo "  Autoinloggning aktiverad."
else
  echo "  Redan konfigurerad."
fi

# ── 6. .bash_profile — starta kiosken vid tty1-inloggning ────────────────────
echo "[6/7] Konfigurerar .bash_profile..."
BASHPROFILE="/home/$KIOSK_USER/.bash_profile"
LAUNCHER_LINE="[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec bash $SCRIPT_DIR/kiosk/kiosk-launcher.sh"
if ! grep -qF "kiosk-launcher.sh" "$BASHPROFILE" 2>/dev/null; then
  echo "" >> "$BASHPROFILE"
  echo "$LAUNCHER_LINE" >> "$BASHPROFILE"
  chown "$KIOSK_USER:$KIOSK_USER" "$BASHPROFILE"
  echo "  Lagt till i $BASHPROFILE"
else
  echo "  Redan konfigurerad."
fi

# ── 7. Klar ───────────────────────────────────────────────────────────────────
echo ""
echo "[7/7] Installation klar!"
echo ""
echo "Nästa steg:"
echo "  1. Redigera $SCRIPT_DIR/kiosk/start.sh och sätt KIOSK_USER / KIOSK_PASS"
echo "  2. Anslut HDMI-skärm"
echo "  3. Starta om datorn — kiosken startar automatiskt:"
echo "       sudo reboot"
echo ""
echo "Manuell start (utan omstart):"
echo "  bash $SCRIPT_DIR/kiosk/kiosk-launcher.sh"
echo ""
echo "Admin-panel:"
echo "  http://<IP>:5000/admin"
