#!/bin/bash
# RustDesk Auto-Install - Ayuntamiento de Mazamitla
# Servidor privado InstaDesk

SERVER="77.37.63.60"
RELAY="77.37.63.60"
KEY="CDbG6pFjEoRlIGBjCRp1EuFU3mnUA2Ge80x3Zu0UXZQ="

echo ""
echo "=== Instalando RustDesk - Ayuntamiento Mazamitla ==="
echo ""

# Detectar arquitectura (Apple Silicon M1/M2/M3 o Intel)
ARCH=$(uname -m)
if [ "$ARCH" = "arm64" ]; then
    ARCH_LABEL="aarch64"
    echo "Detectado: Mac Apple Silicon (M1/M2/M3)"
else
    ARCH_LABEL="x86_64"
    echo "Detectado: Mac Intel"
fi

# Obtener URL del instalador mas reciente
echo "Buscando version mas reciente de RustDesk..."
RELEASE_JSON=$(curl -s https://api.github.com/repos/rustdesk/rustdesk/releases/latest)
VERSION=$(echo "$RELEASE_JSON" | python3 -c "import sys,json; r=json.load(sys.stdin); print(r['tag_name'])" 2>/dev/null)
DMG_URL=$(echo "$RELEASE_JSON" | python3 -c "
import sys, json
r = json.load(sys.stdin)
arch = '$ARCH_LABEL'
assets = [a['browser_download_url'] for a in r['assets'] if arch in a['name'] and a['name'].endswith('.dmg')]
print(assets[0] if assets else '')
" 2>/dev/null)

if [ -z "$DMG_URL" ]; then
    # Fallback a version conocida
    VERSION="1.3.8"
    DMG_URL="https://github.com/rustdesk/rustdesk/releases/download/${VERSION}/rustdesk-${VERSION}-${ARCH_LABEL}.dmg"
    echo "Usando version de respaldo: $VERSION"
else
    echo "Version encontrada: $VERSION"
fi

# Descargar DMG
DMG_FILE="/tmp/rustdesk-install.dmg"
echo "Descargando RustDesk..."
curl -L --progress-bar "$DMG_URL" -o "$DMG_FILE"

if [ ! -f "$DMG_FILE" ] || [ ! -s "$DMG_FILE" ]; then
    echo "ERROR: No se pudo descargar el instalador."
    echo "Presiona Enter para cerrar..."
    read
    exit 1
fi

# Montar el DMG
echo "Instalando..."
MOUNT_DIR=$(hdiutil attach "$DMG_FILE" -nobrowse -quiet | awk 'END{print $NF}')

if [ -z "$MOUNT_DIR" ]; then
    echo "ERROR: No se pudo montar el instalador."
    read
    exit 1
fi

# Copiar app a /Applications
APP_SRC=$(find "$MOUNT_DIR" -name "*.app" -maxdepth 2 | head -1)
if [ -n "$APP_SRC" ]; then
    # Remover version anterior si existe
    rm -rf /Applications/RustDesk.app 2>/dev/null
    cp -R "$APP_SRC" /Applications/
    echo "RustDesk copiado a /Applications"
fi

# Desmontar DMG
hdiutil detach "$MOUNT_DIR" -quiet
rm -f "$DMG_FILE"

# Escribir configuracion del servidor privado
echo "Configurando servidor privado..."

CONFIG_DIRS=(
    "$HOME/Library/Application Support/com.carriez.RustDesk"
    "/Library/Application Support/com.carriez.RustDesk"
)

CONFIG_TOML="[options]
custom-rendezvous-server = '$SERVER'
relay-server = '$RELAY'
key = '$KEY'
"

for DIR in "${CONFIG_DIRS[@]}"; do
    mkdir -p "$DIR" 2>/dev/null
    echo "$CONFIG_TOML" > "$DIR/RustDesk.toml" 2>/dev/null && \
        echo "  Config: $DIR" || true
done

# Quitar cuarentena de macOS (Gatekeeper)
xattr -cr /Applications/RustDesk.app 2>/dev/null || true

# Abrir RustDesk
if [ -d "/Applications/RustDesk.app" ]; then
    open /Applications/RustDesk.app
    echo ""
    echo "==================================================="
    echo " RustDesk instalado y configurado correctamente!"
    echo " Servidor: $SERVER"
    echo " Comparte el ID que aparece en RustDesk."
    echo "==================================================="
else
    echo "ERROR: No se encontro RustDesk.app en /Applications"
fi

echo ""
echo "Presiona Enter para cerrar esta ventana..."
read
