Files
inferon/scripts/livekit_token.sh
T

20 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Proper-auth LiveKit token for the chaos-prime agent (MatrixRTC flow).
# Usage: livekit_token.sh [room_id] (defaults to the chaos-prime DM)
# Requires MATRIX_PASSWORD in env (see .matrix-env). Prints the JWT to stdout.
set -a
source /home/pierre/symbol-inferral/.matrix-env
set +a
HS=https://matrix.chaosmith.systems
ROOM="${1:-!vp_58NnFUUE4dmniRdrFIuNbMaaqLrQLOzcC3UUpAi8:chaosmith.systems}"
TOKEN=$(curl -s -m 10 -X POST "$HS/_matrix/client/v3/login" \
-d "{\"type\":\"m.login.password\",\"user\":\"chaos-prime\",\"password\":\"$MATRIX_PASSWORD\"}" | jq -r .access_token)
USER_ID=$(curl -s -m 10 "$HS/_matrix/client/v3/account/whoami?access_token=$TOKEN" | jq -r .user_id)
OID=$(curl -s -m 10 -X POST "$HS/_matrix/client/v3/user/$USER_ID/openid/request_token?access_token=$TOKEN" -d "{}")
BODY=$(jq -nc --argjson oid "$OID" --arg room "$ROOM" --arg uid "$USER_ID" \
'{room_id:$room, slot_id:"0", openid_token:$oid,
member:{id:"chaos-prime-agent", claimed_user_id:$uid, claimed_device_id:"CHAOSPRIMEAGENT"}}')
curl -s -m 20 -X POST "https://livekit.chaosmith.systems/get_token" \
-H "Content-Type: application/json" --data-binary "$BODY" | jq -r .jwt