#!/usr/bin/env bash
# =============================================================================
# RT Medical VPN — instalador Linux de uma linha.
#
#   curl -fsSL https://pkg.rtmedical.ai/api/packages/apps/generic/rtmedical-vpn-clients/latest/install.sh | sudo bash
#
# Detecta apt (Debian/Ubuntu) ou dnf/yum (RHEL/Fedora), registra o repositorio
# da RT Medical no Gitea (pkg.rtmedical.ai) e instala/atualiza o pacote
# rtmedical-vpn. Se o registro de repo falhar, cai para download direto do
# generic registry.
# =============================================================================
set -euo pipefail

GITEA="${GITEA_BASE:-https://pkg.rtmedical.ai}"
OWNER="${GITEA_OWNER:-apps}"
PKG="rtmedical-vpn"
GENERIC_PKG="rtmedical-vpn-clients"
VER="${VERSION:-latest}"

[[ "$(id -u)" == "0" ]] || { echo "Rode como root (sudo)."; exit 1; }

have() { command -v "$1" >/dev/null 2>&1; }

install_apt() {
  echo ">> Debian/Ubuntu detectado"
  if curl -fsSL "$GITEA/api/packages/$OWNER/debian/stable/main" -o /dev/null 2>/dev/null; then
    echo "deb [trusted=yes] $GITEA/api/packages/$OWNER/debian stable main" \
      > /etc/apt/sources.list.d/rtmedical.list
    apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/rtmedical.list \
                   -o Dir::Etc::sourceparts=- -o APT::Get::List-Cleanup=0 || apt-get update || true
    if apt-get install -y "$PKG"; then return 0; fi
  fi
  echo ">> repo apt indisponivel — instalando .deb direto"
  local f; f="$(mktemp --suffix=.deb)"
  curl -fSL -o "$f" "$GITEA/api/packages/$OWNER/generic/$GENERIC_PKG/$VER/rtmedical-vpn_${VER#v}_amd64.deb" \
    || curl -fSL -o "$f" "$GITEA/api/packages/$OWNER/generic/$GENERIC_PKG/$VER/rtmedical-vpn_amd64.deb"
  apt-get install -y "$f" || dpkg -i "$f"
}

install_rpm() {
  echo ">> RHEL/Fedora detectado"
  local mgr; mgr="$(have dnf && echo dnf || echo yum)"
  cat >/etc/yum.repos.d/rtmedical.repo <<EOF
[rtmedical]
name=RT Medical
baseurl=$GITEA/api/packages/$OWNER/rpm
enabled=1
gpgcheck=0
EOF
  if "$mgr" install -y "$PKG"; then return 0; fi
  echo ">> repo rpm indisponivel — instalando .rpm direto"
  local f; f="$(mktemp --suffix=.rpm)"
  curl -fSL -o "$f" "$GITEA/api/packages/$OWNER/generic/$GENERIC_PKG/$VER/rtmedical-vpn-${VER#v}-1.x86_64.rpm" \
    || curl -fSL -o "$f" "$GITEA/api/packages/$OWNER/generic/$GENERIC_PKG/$VER/rtmedical-vpn.x86_64.rpm"
  "$mgr" install -y "$f" || rpm -i "$f"
}

if have apt-get; then install_apt
elif have dnf || have yum; then install_rpm
else echo "Gerenciador de pacotes nao suportado."; exit 1; fi

echo
echo "RT Medical VPN instalado. Conecte com:  rtmedical-vpn up"
