#!/bin/sh
# Установка клиента RustDesk с настройкой на сервер cdas.ru (Linux)
# Запуск: curl -fsSL https://cdas.ru/dl/linux-install.sh | bash
set -eu

SERVER="cdas.ru:555"
RELAY="cdas.ru:556"
KEY="CmBtM7H2U620o3mi7A2mSmCNtphH9A1FK5Cgwd4PKr0="
PORTAL="https://cdas.ru"

echo "=== Desktop — установка клиента (Linux) ==="

# На RHEL-совместимых системах (CentOS/RHEL/Alma/Rocky/Fedora) нет apt —
# передаём установку отдельному скрипту с RPM-пакетом.
if ! command -v dpkg >/dev/null 2>&1 && ! command -v apt-get >/dev/null 2>&1; then
  if command -v dnf >/dev/null 2>&1 || command -v yum >/dev/null 2>&1; then
    echo "Обнаружена RPM-система — запускаю установщик для CentOS/RHEL..."
    curl -fsSL "$PORTAL/dl/centos-install.sh" | bash
    exit $?
  fi
fi

ARCH=$(uname -m)
case "$ARCH" in
  x86_64) PKG="rustdesk-linux-x64.deb" ;;
  aarch64) PKG="rustdesk-linux-arm64.deb" ;;
  *) echo "Архитектура $ARCH не поддерживается (нужен x86_64 или aarch64)"; exit 1 ;;
esac

SUDO=""
[ "$(id -u)" -ne 0 ] && SUDO="sudo"

TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT

echo "[1/4] Скачиваю $PKG с портала..."
curl -fsSL -o "$TMP/client.deb" "$PORTAL/dl/$PKG"

echo "[2/4] Устанавливаю пакет..."
$SUDO apt-get install -y "$TMP/client.deb" 2>/dev/null \
  || $SUDO dpkg -i "$TMP/client.deb" || $SUDO apt-get install -f -y

echo "[3/4] Настраиваю сервер $SERVER..."

# $1 = каталог конфигов клиента (например /root/.config/rustdesk)
write_cfg() {
  $SUDO mkdir -p "$1" 2>/dev/null || return 0
  printf "[options]\ncustom-rendezvous-server = '%s'\nrelay-server = '%s'\nkey = '%s'\n" \
    "$SERVER" "$RELAY" "$KEY" | $SUDO tee "$1/RustDesk2.toml" > /dev/null
  # верхнеуровневое поле rendezvous_server в RustDesk.toml приоритетнее — удаляем
  if [ -f "$1/RustDesk.toml" ]; then
    $SUDO sed -i '/^rendezvous_server *=/d' "$1/RustDesk.toml" 2>/dev/null || true
  fi
}

# служба читает /root/.config/rustdesk, GUI-клиент — ~/.config/rustdesk
write_cfg "/root/.config/rustdesk"
for H in /home/*; do
  [ -d "$H" ] && write_cfg "$H/.config/rustdesk"
done
# запасное системное расположение
$SUDO mkdir -p /var/lib/rustdesk/RustDesk/config 2>/dev/null || true
write_cfg "/var/lib/rustdesk/RustDesk/config" || true

# перезапуск службы: работающий клиент перезаписал бы конфиг своим состоянием
$SUDO systemctl restart rustdesk 2>/dev/null || true

echo "[4/4] Готово."
echo "Клиент настроен на $SERVER (служба перезапущена)."
echo "Если был открыт GUI клиента — закройте и запустите заново, чтобы он перечитал конфиг."
echo "Постоянный пароль: Настройки -> Безопасность -> Постоянный пароль."
