#!/usr/bin/env bash
# Instalador de uma linha do ACS Remote em Linux (Debian/Ubuntu).
#
#   curl -fsSL https://acsremote.acstecnologia.tech/baixar/instalar.sh | bash
#
# Ele baixa, CONFERE O SHA-256 e instala. A conferência não é enfeite: um
# download interrompido produz um pacote que instala pela metade, e o sintoma
# aparece depois, longe daqui.
set -euo pipefail

BASE="${ACS_BASE:-https://acsremote.acstecnologia.tech/baixar}"
ARQ=acsremote_amd64.deb
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT

arquitetura="$(dpkg --print-architecture 2>/dev/null || uname -m)"
if [[ "$arquitetura" != "amd64" && "$arquitetura" != "x86_64" ]]; then
    echo "Por enquanto só há pacote para amd64 (esta máquina é $arquitetura)." >&2
    exit 1
fi
command -v apt >/dev/null || { echo "Este instalador é para Debian/Ubuntu (precisa do apt)." >&2; exit 1; }

echo "== Baixando"
curl -fsSL "$BASE/$ARQ" -o "$TMP/$ARQ"
curl -fsSL "$BASE/SHA256SUMS" -o "$TMP/SHA256SUMS"

echo "== Conferindo a integridade"
esperado="$(awk -v a="$ARQ" '$2 == a {print $1}' "$TMP/SHA256SUMS" | head -1)"
[[ -n "$esperado" ]] || { echo "SHA256SUMS não menciona $ARQ" >&2; exit 1; }
obtido="$(sha256sum "$TMP/$ARQ" | cut -d' ' -f1)"
[[ "$esperado" == "$obtido" ]] || { echo "ERRO: o arquivo baixado não confere. Não vou instalar." >&2; exit 1; }

echo "== Instalando (vai pedir sua senha de administrador)"
# `--allow-downgrades` porque quem testa builds de desenvolvimento pode ter na
# máquina uma versão que o apt considere maior que a publicada. Sem isto, o apt
# recusa e a máquina fica com o binário antigo — silenciosamente, do ponto de
# vista de quem só queria instalar.
sudo apt install -y --allow-downgrades "$TMP/$ARQ"

echo
echo "Instalado. O que fazer agora:"
echo
echo "  acsremote --diagnostico     # o que ESTA máquina consegue fazer"
echo "  acsremote                   # abre a janela"
echo
echo "Para a máquina ficar acessível sozinha (sem ninguém abrir o programa):"
echo "  acsremote --definir-senha-fixa '<uma senha de 12+ caracteres>'"
echo "  acsremote --instalar-servico"
