ARIA-AGENT/generate-token.sh

94 lines
3.8 KiB
Bash
Executable File

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