53 lines
1.8 KiB
Bash
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
|
|
|