#!/bin/bash
# Autor: Claude Code · 06-11-2026
# iLab Desk · Linux (Debian/Ubuntu x86_64). Instala o actualiza RustDesk oficial según
# https://ilab.kurtuva.com/descargas/latest.json (sha256 comprobado), deja puestos servidor y clave
# y se programa a sí mismo (timer systemd diario + al arrancar) para actualizar sin preguntar.
# Uso (una vez): sudo bash ilab-desk-linux.sh
set -euo pipefail
BASE=https://ilab.kurtuva.com/descargas
CFG="host=ilab.kurtuva.com,key=Z0XRGx54FV6YVwKAii0ivHfRhicPVnSSzrrVuSZieI8="   # clave PÚBLICA del servidor
[ "$(id -u)" = 0 ] || { echo "Ejecútalo con sudo: sudo bash $0"; exit 1; }
j=$(curl -fsS "$BASE/latest.json")
campo() { python3 -c 'import json,sys;d=json.loads(sys.argv[1]);print(eval(sys.argv[2]))' "$j" "$1"; }
ver=$(campo 'd["version"]'); url=$(campo 'd["plataformas"]["linux-deb"]["url"]'); sha=$(campo 'd["plataformas"]["linux-deb"]["sha256"]')
tengo=$(dpkg-query -W -f='${Version}' rustdesk 2>/dev/null || true)
if [ "${tengo%%-*}" != "$ver" ]; then
  t=$(mktemp -d); curl -fsSLo "$t/rustdesk.deb" "$url"
  echo "$sha  $t/rustdesk.deb" | sha256sum -c --quiet -
  DEBIAN_FRONTEND=noninteractive apt-get install -y -qq "$t/rustdesk.deb"; rm -r "$t"
  logger -t ilab-desk "RustDesk ${tengo:-nada} -> $ver"
fi
# --config/--option solo funcionan con RustDesk instalado y como root (src/core_main.rs, 1.5.1)
rustdesk --config "$CFG"; rustdesk --option allow-auto-update N
# Programación: este mismo script, copiado a /usr/local/sbin
if [ "$(readlink -f "$0")" != /usr/local/sbin/ilab-desk-actualizar ]; then
  install -m 755 "$0" /usr/local/sbin/ilab-desk-actualizar
  printf '[Unit]\nDescription=iLab Desk: actualizar\nWants=network-online.target\nAfter=network-online.target\n[Service]\nType=oneshot\nExecStart=/usr/local/sbin/ilab-desk-actualizar\n' >/etc/systemd/system/ilab-desk-actualizar.service
  printf '[Unit]\nDescription=iLab Desk: actualizar a diario\n[Timer]\nOnBootSec=10min\nOnCalendar=daily\nRandomizedDelaySec=2h\nPersistent=true\n[Install]\nWantedBy=timers.target\n' >/etc/systemd/system/ilab-desk-actualizar.timer
  systemctl daemon-reload; systemctl enable --now ilab-desk-actualizar.timer
  systemctl restart rustdesk; echo "iLab Desk listo (servidor ilab.kurtuva.com, se actualiza solo)."
fi
