#!/bin/bash
# IDQ Monitor - collega questo PC al monitor (avvia l'agente all'accensione). Uso: idq-monitor-agente-installa [LINK] [NOME]
set -e
LINK="$1"; NOME="$2"
# ---- permesso di amministratore (sudo): una regola limitata per il riavvio dal monitor e per la lettura dei consumi
permessi_amministratore() {
  echo
  echo "Per riavviare il PC dal monitor e leggere i consumi in watt serve il permesso di amministratore (sudo)."
  echo "Verra' creata soltanto una regola limitata in /etc/sudoers.d/idq-monitor (riavvio e lettura del contatore di energia del processore): niente altro."
  echo "Se non vuoi, rifiuta: il monitor funziona lo stesso, senza riavvio da remoto e senza i watt del processore."
  T="$(mktemp)"
  printf '%s ALL=(root) NOPASSWD: /usr/bin/systemctl reboot, /usr/bin/cat /sys/class/powercap/intel-rapl\\:0/energy_uj\n' "$USER" > "$T"
  [ -x /usr/bin/ipmitool ] && printf '%s ALL=(root) NOPASSWD: /usr/bin/ipmitool dcmi power reading\n' "$USER" >> "$T"
  if sudo sh -c "visudo -cf '$T' >/dev/null && install -m 440 -o root -g root '$T' /etc/sudoers.d/idq-monitor"; then
    echo "Permesso di amministratore configurato."
  else
    echo "Permesso di amministratore non concesso: si continua senza."
  fi
  rm -f "$T"
}
[ -n "$LINK" ] || read -r -p "Link del monitor (https://.../monitor?k=...): " LINK
[ -n "$NOME" ] || { read -r -p "Nome di questo PC [$(hostname)]: " NOME; NOME="${NOME:-$(hostname)}"; }
NOME="$(echo "$NOME" | tr -cd 'A-Za-z0-9_-' | cut -c1-24)"
case "$LINK" in https://*monitor*k=*) ;; *) echo "Il link non sembra corretto."; exit 1;; esac
mkdir -p "$HOME/.config/systemd/user"
printf '{"link": "%s", "nome": "%s"}\n' "$LINK" "$NOME" > "$HOME/.config/idq-monitor-agente.json"
chmod 600 "$HOME/.config/idq-monitor-agente.json"
cat > "$HOME/.config/systemd/user/idq-monitor-agente.service" <<'EOT'
[Unit]
Description=IDQ Monitor - agente di questo PC
After=network-online.target

[Service]
ExecStart=/opt/idq-monitor-user/IDQ-Monitor-Agente
Restart=always
RestartSec=10

[Install]
WantedBy=default.target
EOT
systemctl --user daemon-reload
systemctl --user enable --now idq-monitor-agente
loginctl enable-linger "$USER" 2>/dev/null || true
permessi_amministratore
echo "Fatto: questo PC compare in IDQ Monitor come '$NOME' entro pochi secondi."
echo "Per scegliere i servizi da controllare modifica ~/.config/idq-monitor-agente.json (vedi la guida) e riavvia con: systemctl --user restart idq-monitor-agente"
