94 lines
3.8 KiB
Bash
Executable File
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 ""
|