#!/usr/bin/env bash
#
# Pasa el portal a HTTPS, ya con el certificado emitido.
#
#   sudo bash activar-https.sh reportes.incide.com.co
#
# certbot tiene que haber emitido el certificado antes. Este script copia la
# configuracion completa de nginx, comprueba que los archivos del certificado
# existan y reinicia. Si algo falla, deja el servidor como estaba.

set -euo pipefail

DOMINIO="${1:-reportes.incide.com.co}"
RAIZ="${2:-/var/www/incide}"

log()  { printf '\n\033[1;36m==> %s\033[0m\n' "$1"; }
ok()   { printf '    \033[32mOK\033[0m  %s\n' "$1"; }
aviso(){ printf '    \033[33m!!\033[0m  %s\n' "$1"; }

[[ $EUID -eq 0 ]] || { echo "Se corre como root: sudo bash activar-https.sh $DOMINIO"; exit 1; }

CERT="/etc/letsencrypt/live/$DOMINIO"

log "Comprobando el certificado"
if [[ ! -f "$CERT/fullchain.pem" || ! -f "$CERT/privkey.pem" ]]; then
    aviso "No hay certificado en $CERT"
    echo
    echo "Emitelo primero:"
    echo "  sudo certbot --nginx -d $DOMINIO --agree-tos -m TU@CORREO --redirect"
    echo "  (o: certbot certonly --webroot -w /var/www/html -d $DOMINIO -m TU@CORREO)"
    exit 1
fi
ok "certificado en $CERT"

log "Instalando la configuracion con HTTPS"
ORIGEN="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/nginx-incide.conf"

if [[ ! -f "$ORIGEN" ]]; then
    aviso "No se encontro nginx-incide.conf junto a este script"
    exit 1
fi

cp /etc/nginx/sites-available/incide.conf /etc/nginx/sites-available/incide.conf.bak 2>/dev/null || true

sed -e "s/reportes\.incide\.com\.co/$DOMINIO/g" "$ORIGEN" > /etc/nginx/sites-available/incide.conf

if nginx -t 2>/dev/null; then
    systemctl reload nginx
    ok "nginx ahora escucha en 80 y 443"
else
    aviso "La configuracion nueva no sirve. Se restaura la anterior."
    mv /etc/nginx/sites-available/incide.conf.bak /etc/nginx/sites-available/incide.conf
    nginx -t
    exit 1
fi

log "Renovacion automatica"
# Ubuntu ya deja un timer de certbot, pero se asegura.
systemctl list-timers 2>/dev/null | grep -q certbot && ok "certbot.timer activo" || {
    systemctl enable --now certbot.timer 2>/dev/null || true
    ok "certbot.timer habilitado"
}

printf '\n\033[1;32m  HTTPS activo en https://%s\033[0m\n\n' "$DOMINIO"