#!/usr/bin/env bash
set -euo pipefail
SERVER_HOST='corbinishelpingyou.online'
SERVER_KEY='bbkxr4kWldGrAN+H49nEU8nyhR6LapEbXiVU9szKp3Y='
TARGET_USER=${SUDO_USER:-$USER}
TARGET_HOME=$(getent passwd $TARGET_USER | cut -d: -f6)
WORKDIR=$(mktemp -d)
trap 'rm -rf $WORKDIR' EXIT

asset_url=$(python3 - <<'PY'
import json, re, urllib.request, platform, os
machine = platform.machine().lower()
if machine in ('x86_64', 'amd64'):
 patterns = [r'x86_64\.deb$', r'amd64\.deb$', r'x86_64\.rpm$', r'x86_64\.AppImage$']
elif machine in ('aarch64', 'arm64'):
 patterns = [r'aarch64\.deb$', r'arm64\.deb$', r'aarch64\.rpm$', r'aarch64\.AppImage$']
else:
 patterns = [r'\.deb$', r'\.AppImage$']
req = urllib.request.Request('https://api.github.com/repos/rustdesk/rustdesk/releases/latest', headers={'User-Agent': 'corbin-rustdesk-installer'})
data = json.load(urllib.request.urlopen(req))
for pat in patterns:
 for asset in data.get('assets', []):
 if re.search(pat, asset.get('name', '')):
 print(asset['browser_download_url'])
 raise SystemExit
PY
)
if [[ -z $asset_url ]]; then
  echo 'Could not find a Linux RustDesk package for this architecture.' >&2
  exit 1
fi

pkg=$WORKDIR/$(basename $asset_url)
curl -L $asset_url -o $pkg
if [[ $pkg == *.deb ]]; then
  sudo apt-get update
  sudo apt-get install -y $pkg
elif [[ $pkg == *.rpm ]]; then
  if command -v dnf >/dev/null 2>&1; then sudo dnf install -y $pkg; else sudo yum localinstall -y $pkg; fi
elif [[ $pkg == *.AppImage ]]; then
  sudo install -m 0755 $pkg /usr/local/bin/rustdesk.AppImage
else
  echo Unsupported package: $pkg >&2
  exit 1
fi

cat > $WORKDIR/RustDesk2.toml <<CFG
rendezvous_server = '$SERVER_HOST:21116'
nat_type = 1
serial = 0

[options]
custom-rendezvous-server = '$SERVER_HOST'
relay-server = '$SERVER_HOST'
key = '$SERVER_KEY'
CFG

sudo -u $TARGET_USER mkdir -p $TARGET_HOME/.config/rustdesk $TARGET_HOME/.config/RustDesk
sudo -u $TARGET_USER cp $WORKDIR/RustDesk2.toml $TARGET_HOME/.config/rustdesk/RustDesk2.toml
sudo -u $TARGET_USER cp $WORKDIR/RustDesk2.toml $TARGET_HOME/.config/RustDesk/RustDesk2.toml
if command -v rustdesk >/dev/null 2>&1; then
  sudo -u $TARGET_USER rustdesk --import-config $WORKDIR/RustDesk2.toml >/dev/null 2>&1 || true
  sudo systemctl restart rustdesk >/dev/null 2>&1 || true
fi

echo 'RustDesk is installed and configured for corbinishelpingyou.online.'
echo 'Open RustDesk and share the ID and one-time password with your helper.'
