#!/bin/bash
# Autor: Claude Code · 06-11-2026
# iLab Desk · macOS (Apple Silicon e Intel). Instala o actualiza RustDesk oficial según
# https://ilab.kurtuva.com/descargas/latest.json (sha256 + firma de Apple comprobados), deja puestos
# servidor y clave y se programa (LaunchDaemon diario + al arrancar) para actualizar sin preguntar.
# Uso (una vez): sudo bash ilab-desk-macos.sh
set -euo pipefail
BASE=https://ilab.kurtuva.com/descargas
CFG="host=ilab.kurtuva.com,key=Z0XRGx54FV6YVwKAii0ivHfRhicPVnSSzrrVuSZieI8="   # clave PÚBLICA del servidor
APP=/Applications/RustDesk.app
[ "$(id -u)" = 0 ] || { echo "Ejecútalo con sudo: sudo bash $0"; exit 1; }
[ "$(uname -m)" = arm64 ] && P=macos-arm64 || P=macos-x86_64
j=$(curl -fsS "$BASE/latest.json")
campo() { /usr/bin/plutil -extract "$1" raw -o - - <<<"$j"; }
ver=$(campo version); url=$(campo "plataformas.$P.url"); sha=$(campo "plataformas.$P.sha256")
tengo=$(defaults read "$APP/Contents/Info" CFBundleShortVersionString 2>/dev/null || true)
if [ "$tengo" != "$ver" ]; then
  t=$(mktemp -d); curl -fsSLo "$t/r.dmg" "$url"
  echo "$sha  $t/r.dmg" | shasum -a 256 -c --quiet -
  m=$(hdiutil attach -nobrowse -readonly "$t/r.dmg" | awk -F'\t' '/\/Volumes\//{print $NF}')
  codesign --verify --deep --strict "$m/RustDesk.app"      # firma oficial intacta
  pkill -x RustDesk 2>/dev/null || true
  rm -rf "$APP"; ditto "$m/RustDesk.app" "$APP"; hdiutil detach -quiet "$m"; rm -r "$t"
  logger -t ilab-desk "RustDesk ${tengo:-nada} -> $ver"
fi
# --config/--option solo funcionan desde /Applications y como root (src/platform/macos.rs, 1.5.1)
"$APP/Contents/MacOS/RustDesk" --config "$CFG"; "$APP/Contents/MacOS/RustDesk" --option allow-auto-update N
if [ "$0" != /usr/local/sbin/ilab-desk-actualizar ]; then
  mkdir -p /usr/local/sbin; install -m 755 "$0" /usr/local/sbin/ilab-desk-actualizar
  cat >/Library/LaunchDaemons/com.kurtuva.ilab-desk-actualizar.plist <<'P'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.kurtuva.ilab-desk-actualizar</string>
<key>ProgramArguments</key><array><string>/bin/bash</string><string>/usr/local/sbin/ilab-desk-actualizar</string></array>
<key>RunAtLoad</key><true/><key>StartInterval</key><integer>86400</integer>
</dict></plist>
P
  launchctl load -w /Library/LaunchDaemons/com.kurtuva.ilab-desk-actualizar.plist
  echo "iLab Desk listo. Abre RustDesk y concede los permisos que pida macOS (solo la primera vez)."
fi
