#!/usr/bin/env bash
# =============================================================================
# setup-tls.sh  –  AUF DEM SERVER ausführen (nicht lokal), OPTIONAL
#
# Aktiviert direktes TLS-Zertifikat via certbot/Let's Encrypt für diesen
# Server. NICHT nötig solange ein vorgeschalteter Proxy die Domain +
# Zertifikat übernimmt (aktueller Stand) – dann läuft nginx.conf bewusst
# reines HTTP hinter dem Proxy weiter, dieses Skript bleibt ungenutzt.
#
# Erst ausführen wenn:
#   - der Server direkt (ohne vorgeschalteten Proxy) erreichbar sein soll, UND
#   - eine echte Domain per DNS auf diesen Server zeigt (A-Record)
#
# Macht NICHTS automatisch am Server-Setup – muss manuell mit Domain
# aufgerufen werden:
#   ssh root@<host> "cd /opt/timemaster && ./setup-tls.sh timemaster.example.com"
#
# certbot --nginx erweitert /etc/nginx/sites-available/timemaster selbst um
# den 443-Block (SSL-Zertifikat, HSTS optional per --redirect-Flag) und
# richtet einen systemd-Timer für automatisches Renewal ein (certbot.timer).
# Das Repo-nginx.conf bleibt absichtlich HTTP-only – die von certbot
# vorgenommene Änderung landet direkt in /etc/nginx/, nicht im Git-Tree.
# =============================================================================
set -euo pipefail

DOMAIN="${1:-}"
if [[ -z "$DOMAIN" ]]; then
    echo "Usage: ./setup-tls.sh <domain>" >&2
    echo "Beispiel: ./setup-tls.sh timemaster.example.com" >&2
    exit 1
fi

if ! command -v certbot >/dev/null 2>&1; then
    echo "==> Installiere certbot + nginx-Plugin"
    apt-get update -qq
    apt-get install -y certbot python3-certbot-nginx
fi

echo "==> Prüfe DNS-Auflösung für $DOMAIN"
RESOLVED="$(getent hosts "$DOMAIN" | awk '{print $1}' | head -1 || true)"
if [[ -z "$RESOLVED" ]]; then
    echo "FEHLER: $DOMAIN löst nicht auf. A-Record setzen, dann erneut versuchen." >&2
    exit 1
fi
echo "    $DOMAIN -> $RESOLVED"

echo "==> Hole Zertifikat + richte 443-Redirect ein (certbot --nginx)"
certbot --nginx -d "$DOMAIN" --redirect --hsts --agree-tos --non-interactive \
    -m "${CERTBOT_EMAIL:-admin@${DOMAIN}}"

echo "==> Renewal-Timer prüfen"
systemctl status certbot.timer --no-pager | head -5

echo "==> Fertig. HTTPS aktiv unter https://$DOMAIN"
echo "    Falls vorher ein Proxy davor stand: DNS/Load-Balancer jetzt auf diesen Server direkt zeigen lassen."
