Files
root 95bb7c50ee feat: point the fleet at wss LiveKit room uwh-telhai
Publish and subscribe over wss://livekit.uni-wh.de:7800 and refuse
cleartext ws://. Conference room is uwh-telhai. Includes the uncommitted
encoded H.264 publish path, Rally hairpin, and KMS wall overlay.
2026-10-11 00:48:50 +00:00

61 lines
1.8 KiB
Python

"""Generate LiveKit access tokens for the camera participants."""
from livekit.api import AccessToken, VideoGrants
def make_token(url: str, api_key: str, api_secret: str,
room: str, identity: str,
attributes: dict[str, str] | None = None) -> str:
token = (
AccessToken(api_key, api_secret)
.with_identity(identity)
.with_name(identity)
.with_grants(VideoGrants(
room_join=True,
room=room,
can_publish=True,
can_subscribe=False,
can_publish_data=True,
))
)
if attributes:
token = token.with_attributes(attributes)
return token.to_jwt()
def make_speaker_token(api_key: str, api_secret: str,
room: str, identity: str = "speaker",
name: str = "") -> str:
"""Publisher token so a speaker can join and share their screen."""
token = (
AccessToken(api_key, api_secret)
.with_identity(identity)
.with_name(name or identity)
.with_grants(VideoGrants(
room_join=True,
room=room,
can_publish=True,
can_subscribe=True,
can_publish_data=True,
))
)
return token.to_jwt()
def make_viewer_token(api_key: str, api_secret: str,
room: str, identity: str) -> str:
"""Subscribe-only token for headless display clients."""
token = (
AccessToken(api_key, api_secret)
.with_identity(identity)
.with_name(identity)
.with_grants(VideoGrants(
room_join=True,
room=room,
can_publish=False,
can_subscribe=True,
can_publish_data=False,
))
)
return token.to_jwt()