#!/usr/bin/env bash
# ============================================================================
#  Hypen Suport - deploy stație (macOS)
#  Instalează RustDesk pe serverul Hypen, setează parolă unică permanentă +
#  acces nesupravegheat, și înscrie automat stația în address book.
#
#  Rulează cu sudo:  sudo bash deploy-statie-mac.sh "iMac Cabinet 3" [parola]
#
#  ⚠ macOS cere aprobare MANUALĂ o singură dată, din motive de securitate:
#     System Settings → Privacy & Security → Accessibility  → activează RustDesk
#     System Settings → Privacy & Security → Screen Recording → activează RustDesk
#     (fără ele, controlul de la distanță nu funcționează — e limitare Apple)
# ============================================================================
set -euo pipefail
ALIAS="${1:?Dă un alias: sudo bash deploy-statie-mac.sh \"Nume Stație\" [parola]}"
PASS="${2:-$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 16)}"
SERVER="rd.hypen.ro"
KEY="Giaghgzlj8NPCEEplK0jUT02IdSJocHQTYIQy1vvcS0="
CONSOLE="https://rd-admin.hypen.ro"
ADMIN_USER="admin"; COLLECTION_ID=1
ADMIN_PASS="${RD_ADMIN_PASS:?Setează parola consolei: sudo RD_ADMIN_PASS='...' bash deploy-statie-mac.sh \"Alias\"}"
VER="1.4.9"

echo "==> Descarc și instalez RustDesk..."
tmp=$(mktemp -d)
if [ "$(uname -m)" = "arm64" ]; then dmg="rustdesk-${VER}-aarch64.dmg"; else dmg="rustdesk-${VER}-x86_64.dmg"; fi
curl -fsSL -o "$tmp/rd.dmg" "https://suport.hypen.ro/files/$dmg"
mnt=$(hdiutil attach "$tmp/rd.dmg" -nobrowse | grep -o '/Volumes/.*' | head -1)
rm -rf "/Applications/RustDesk.app"
cp -R "$mnt/RustDesk.app" /Applications/
hdiutil detach "$mnt" >/dev/null 2>&1 || true
rd="/Applications/RustDesk.app/Contents/MacOS/rustdesk"

echo "==> Configurez server + parolă permanentă + acces nesupravegheat..."
"$rd" --config "host=$SERVER,key=$KEY" >/dev/null 2>&1 || true
sleep 2
"$rd" --password "$PASS" >/dev/null 2>&1
"$rd" --option approve-mode password >/dev/null 2>&1 || true
sleep 2
ID=$("$rd" --get-id | tr -d '[:space:]')
[ -n "$ID" ] || { echo "Nu am putut citi ID-ul"; exit 1; }

echo "==> Înscriu stația în address book..."
TOK=$(curl -fsSL -X POST "$CONSOLE/api/admin/login" -H "Content-Type: application/json" \
  -d "{\"username\":\"$ADMIN_USER\",\"password\":\"$ADMIN_PASS\"}" | python3 -c "import json,sys;print(json.load(sys.stdin)['data']['token'])")
curl -fsSL -X POST "$CONSOLE/api/admin/my/address_book/create" -H "api-token: $TOK" -H "Content-Type: application/json" \
  -d "{\"id\":\"$ID\",\"collection_id\":$COLLECTION_ID,\"hostname\":\"$(hostname)\",\"alias\":\"$ALIAS\",\"password\":\"$PASS\",\"forceAlwaysRelay\":true,\"tags\":[\"statie\"]}" >/dev/null
rm -rf "$tmp"

echo ""
echo "======================================================"
echo "  GATA. Stația e înscrisă și accesibilă."
echo "  Alias : $ALIAS"
echo "  ID    : $ID"
echo "  Parolă: $PASS   (salvată în address book)"
echo "  ⚠ Acordă permisiunile Accessibility + Screen Recording (vezi sus)."
echo "======================================================"
