#!/usr/bin/env bash
set -euo pipefail

rustdesk_cfg='9JSP0glZNFzarUkeTZGcmFzSORme0VFb2l0NxATN3RjZrs2duFTUltyMiJjVYJiOikXZrJCLiIiOikGchJCLiUncuIXYtR2bnJXZi9mL0J3bwBXdzJiOikXYsVmciwiI1JnLyFWbk92ZyVmYv5Cdy9GcwV3ciojI0N3boJye'
rustdesk_aarch64_dmg_url='https://support.obergodmar.ru/clients/rustdesk-1.4.6-aarch64.dmg'
rustdesk_x86_64_dmg_url='https://support.obergodmar.ru/clients/rustdesk-1.4.6-x86_64.dmg'
rustdesk_pw="$(openssl rand -hex 6)"
rustdesk_bin="/Applications/RustDesk.app/Contents/MacOS/RustDesk"

if [[ "$rustdesk_cfg" == REPLACE_* || "$rustdesk_aarch64_dmg_url" == REPLACE_* || "$rustdesk_x86_64_dmg_url" == REPLACE_* || "$rustdesk_cfg" == @* || "$rustdesk_aarch64_dmg_url" == @* || "$rustdesk_x86_64_dmg_url" == @* ]]; then
  echo "Скрипт поддержки еще содержит незаполненные значения. Сообщите об этом специалисту." >&2
  exit 1
fi

if [[ "$(id -u)" -ne 0 ]]; then
  exec sudo bash "$0" "$@"
fi

work_dir="$(mktemp -d)"
mount_point="$(mktemp -d)"
trap 'hdiutil detach "$mount_point" >/dev/null 2>&1 || true; rm -rf "$work_dir" "$mount_point"' EXIT

dmg_file="$work_dir/rustdesk.dmg"
case "$(uname -m)" in
arm64) rustdesk_dmg_url="$rustdesk_aarch64_dmg_url" ;;
x86_64) rustdesk_dmg_url="$rustdesk_x86_64_dmg_url" ;;
*)
  echo "Неподдерживаемая архитектура macOS: $(uname -m)" >&2
  exit 1
  ;;
esac

echo "Скачиваем RustDesk..."
curl -fL "$rustdesk_dmg_url" -o "$dmg_file"

echo "Устанавливаем RustDesk..."
hdiutil attach "$dmg_file" -mountpoint "$mount_point" -nobrowse >/dev/null
rm -rf /Applications/RustDesk.app
cp -R "$mount_point/RustDesk.app" /Applications/
hdiutil detach "$mount_point" >/dev/null

if [[ ! -x "$rustdesk_bin" ]]; then
  echo "После установки не удалось найти исполняемый файл RustDesk." >&2
  exit 1
fi

echo "Применяем настройки удаленной поддержки..."
"$rustdesk_bin" --server >/dev/null 2>&1 &
sleep 3
"$rustdesk_bin" --config "$rustdesk_cfg"
"$rustdesk_bin" --password "$rustdesk_pw" >/dev/null 2>&1 || true
rustdesk_id="$("$rustdesk_bin" --get-id 2>/dev/null | head -n 1 || true)"
pkill -f 'RustDesk' >/dev/null 2>&1 || true

echo "..............................................."
echo "RustDesk ID: ${rustdesk_id:-failed to read}"
echo "Временный пароль: $rustdesk_pw"
echo "..............................................."
echo "Отправьте специалисту RustDesk ID и временный пароль."
open -n /Applications/RustDesk.app
