#!/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 ""