#!/usr/bin/env bash
# ═══════════════════════════════════════════════════════════════
#  ARIA — Token + QR-Code Generator
#  Läuft auf der ARIA-VM. Erzeugt ein permanentes Pairing-Token.
#
#  Verwendung:
#    ./generate-token.sh              # neues Token generieren
#    ./generate-token.sh show         # bestehendes Token als QR zeigen
# ═══════════════════════════════════════════════════════════════
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ENV_FILE="$SCRIPT_DIR/.env"

# ── .env laden (falls vorhanden) ─────────────────────────────
if [[ -f "$ENV_FILE" ]]; then
  # shellcheck disable=SC1090
  source "$ENV_FILE"
fi

# ── Pflichtfelder prüfen ─────────────────────────────────────
if [[ -z "${RVS_HOST:-}" ]]; then
  echo "Fehler: RVS_HOST ist nicht gesetzt."
  echo "Trage RVS_HOST in .env ein, z.B.: RVS_HOST=rvs.hackersoft.de"
  exit 1
fi

HOST="$RVS_HOST"
PORT="${RVS_PORT:-443}"
TLS="${RVS_TLS:-true}"

# ── Modus: show (bestehendes Token) oder neu generieren ─────
if [[ "${1:-}" == "show" ]]; then
  if [[ -z "${RVS_TOKEN:-}" ]]; then
    echo "Fehler: Kein RVS_TOKEN in .env gefunden. Erst generieren:"
    echo "  ./generate-token.sh"
    exit 1
  fi
  TOKEN="$RVS_TOKEN"
  echo ""
  echo "═══════════════════════════════════════════════════"
  echo "  ARIA — Bestehendes Pairing-Token"
  echo "═══════════════════════════════════════════════════"
else
  # Neues Token generieren
  TOKEN=$(openssl rand -hex 32)

  echo ""
  echo "═══════════════════════════════════════════════════"
  echo "  ARIA — Neues Pairing-Token generiert"
  echo "═══════════════════════════════════════════════════"

  # Token in .env schreiben
  if grep -q "^RVS_TOKEN=" "$ENV_FILE" 2>/dev/null; then
    sed -i "s|^RVS_TOKEN=.*|RVS_TOKEN=$TOKEN|" "$ENV_FILE"
  else
    echo "RVS_TOKEN=$TOKEN" >> "$ENV_FILE"
  fi

  echo ""
  echo "  ✓ RVS_TOKEN in .env gespeichert"
  echo "  → Bridge neu starten: docker compose restart bridge"
fi

# ── QR-Payload bauen ─────────────────────────────────────────
PAYLOAD="{\"host\":\"$HOST\",\"port\":$PORT,\"token\":\"$TOKEN\",\"tls\":$TLS}"

echo ""
echo "  Host:   $HOST"
echo "  Port:   $PORT"
echo "  TLS:    $TLS"
echo "  Token:  ${TOKEN:0:16}..."
echo ""
echo "  QR-Code scannen mit der ARIA App:"
echo ""

# ── QR-Code anzeigen ─────────────────────────────────────────
if command -v qrencode &>/dev/null; then
  qrencode -t ANSIUTF8 "$PAYLOAD"
elif command -v npx &>/dev/null; then
  npx --yes qrcode-terminal@0.12.0 "$PAYLOAD" --small 2>/dev/null
else
  echo "  (Kein QR-Tool gefunden — installiere qrencode oder npx)"
fi

echo ""
echo "  Payload: $PAYLOAD"
echo ""
echo "  Token kopieren:"
echo "  $TOKEN"
echo ""
echo "═══════════════════════════════════════════════════"
echo ""
