AvanzaCast/tools/request_session.sh

53 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# tools/request_session.sh
# Uso: ./tools/request_session.sh <room> [username]
# Hace POST a BACKEND_URL/api/session (usando env BACKEND_URL o VITE_BACKEND_TOKENS_URL)
# e imprime JSON prettified y un snippet para inyectar token en la consola del navegador.
set -euo pipefail
ROOM=${1:-d13oie2}
USERNAME=${2:-visual-runner}
BACKEND=${BACKEND_URL:-${VITE_BACKEND_TOKENS_URL:-https://avanzacast-servertokens.bfzqqk.easypanel.host}}
if [ -z "$BACKEND" ]; then
echo "ERROR: BACKEND_URL or VITE_BACKEND_TOKENS_URL must be set in env" >&2
exit 1
fi
echo "POSTing session to $BACKEND/api/session (room=$ROOM username=$USERNAME)"
RESP=$(curl -sS -X POST "$BACKEND/api/session" -H 'Content-Type: application/json' -d "{\"room\":\"$ROOM\",\"username\":\"$USERNAME\",\"ttl\":300}") || true
if [ -z "$RESP" ]; then
echo "No response from $BACKEND/api/session" >&2
exit 2
fi
# Pretty print JSON if jq available
if command -v jq >/dev/null 2>&1; then
echo "$RESP" | jq .
else
echo "$RESP"
fi
# Try to extract token and studioUrl
TOKEN=$(echo "$RESP" | grep -o '"token"[[:space:]]*:[[:space:]]*"[^"]*"' | sed -E 's/"token"\s*:\s*"([^"]*)"/\1/' || true)
STUDIOURL=$(echo "$RESP" | grep -o '"studioUrl"[[:space:]]*:[[:space:]]*"[^"]*"' | sed -E 's/"studioUrl"\s*:\s*"([^"]*)"/\1/' || true)
ID=$(echo "$RESP" | grep -o '"id"[[:space:]]*:[[:space:]]*"[^"]*"' | sed -E 's/"id"\s*:\s*"([^"]*)"/\1/' || true)
if [ -n "$TOKEN" ]; then
echo
echo "--- Copy-paste this into your browser console (on the broadcast panel page) to inject the token ---"
echo "window.postMessage({ type: 'LIVEKIT_TOKEN', token: '$TOKEN', room: '$ROOM' }, window.location.origin);"
echo "---"
fi
if [ -n "$STUDIOURL" ]; then
echo "studioUrl: $STUDIOURL"
fi
if [ -n "$ID" ]; then
echo "session id: $ID"
fi
exit 0