#!/bin/bash
# Support Elyone — installation de RustDesk 1.5.1 configuré sur le serveur Elyone (macOS)
# Usage : curl -fsSL https://support.elyone.com/mac.sh | bash
# Variables de test : ELYONE_APP_DIR, ELYONE_CONF_DIR, ELYONE_NO_LAUNCH=1
set -euo pipefail

VERSION="1.5.1"
HOST="178.104.71.181"
RELAY="178.104.71.181"
KEY="ZXum24+yWvJ5zJ2EZHE6TPZ6JHFKQ64mdCJofEGSdeI="

case "$(uname -m)" in
  arm64)  ARCH="aarch64"; SHA="1b94182cba2375ea29a196f2c8183f7feaa00588474ecd76c92c2303ffd70d7b" ;;
  x86_64) ARCH="x86_64";  SHA="457e45a26d3f0919221e6db3dfb8c6a12ca65190307b53a907c3c51b762eb008" ;;
  *) echo "Processeur non reconnu : $(uname -m)"; exit 1 ;;
esac

APP_DIR="${ELYONE_APP_DIR:-/Applications}"
CONF_DIR="${ELYONE_CONF_DIR:-$HOME/Library/Preferences/com.carriez.RustDesk}"
TMP="$(mktemp -d)"
MNT="$TMP/mnt"
trap 'hdiutil detach "$MNT" -quiet 2>/dev/null || true; rm -rf "$TMP"' EXIT

echo "================================"
echo "  Support Elyone - Installation"
echo "================================"

echo "[1/4] Telechargement de RustDesk $VERSION ($ARCH)..."
curl -fsSL -o "$TMP/rustdesk.dmg" \
  "https://github.com/rustdesk/rustdesk/releases/download/$VERSION/rustdesk-$VERSION-$ARCH.dmg"
GOT="$(shasum -a 256 "$TMP/rustdesk.dmg" | awk '{print $1}')"
if [ "$GOT" != "$SHA" ]; then echo "Fichier telecharge invalide, abandon."; exit 1; fi

echo "[2/4] Installation..."
if [ -z "${ELYONE_APP_DIR:-}" ]; then
  osascript -e 'quit app "RustDesk"' >/dev/null 2>&1 || true
  sleep 1
fi
mkdir -p "$MNT"
hdiutil attach "$TMP/rustdesk.dmg" -readonly -nobrowse -quiet -mountpoint "$MNT"
if ! { rm -rf "$APP_DIR/RustDesk.app" 2>/dev/null && cp -R "$MNT/RustDesk.app" "$APP_DIR/"; }; then
  echo "    Droits administrateur necessaires pour $APP_DIR :"
  sudo rm -rf "$APP_DIR/RustDesk.app"
  sudo cp -R "$MNT/RustDesk.app" "$APP_DIR/"
fi

echo "[3/4] Configuration du serveur Elyone..."
mkdir -p "$CONF_DIR"
CONF="$CONF_DIR/RustDesk2.toml"
[ -f "$CONF" ] || : > "$CONF"
awk -v host="$HOST" -v relay="$RELAY" -v key="$KEY" '
  BEGIN { done = 0 }
  function opts() {
    print "custom-rendezvous-server = '\''" host "'\''"
    print "relay-server = '\''" relay "'\''"
    print "key = '\''" key "'\''"
    print "api-server = '\'''\''"
    done = 1
  }
  /^\[options\][[:space:]]*$/ { print; opts(); inopt = 1; next }
  /^\[/ { inopt = 0 }
  inopt && /^(custom-rendezvous-server|relay-server|key|api-server)[[:space:]]*=/ { next }
  /^rendezvous_server[[:space:]]*=/ { next }
  { print }
  END { if (!done) { print ""; print "[options]"; opts() } }
' "$CONF" > "$TMP/conf" && cat "$TMP/conf" > "$CONF"

echo "[4/4] Lancement..."
[ "${ELYONE_NO_LAUNCH:-0}" = "1" ] || open "$APP_DIR/RustDesk.app"

echo ""
echo "================================"
echo "  Installation terminee !"
echo "  Autorisez l'enregistrement d'ecran et l'accessibilite"
echo "  si macOS le demande, puis communiquez votre ID"
echo "  et mot de passe a votre technicien."
echo "================================"
