mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-06 17:07:46 +00:00
0b53a26406
Currently users have no way to reliably test their connection before joining a room. We then want to create a connection test page to adress this issue. The testing will require a dedicated LiveKit token without going through the room API, which is tied to registered meetings, lobby rules, and longer-lived access tokens. We introduce a new API endpoint GET /api/v1.0/connection-test/ to issue a dedicated token for diagnostics, even for anonymous users. Each request creates a new room so users never share the same LiveKit room during tests. Tokens are short-lived (default 10 minutes) to limit reuse, and the endpoint is throttled to prevent abuse.
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""Tasks related to connection test rooms."""
|
|
|
|
import logging
|
|
|
|
from django.conf import settings
|
|
|
|
from core.services.room_management import (
|
|
RoomManagement,
|
|
RoomManagementException,
|
|
RoomNotFoundException,
|
|
)
|
|
from core.tasks._task import task
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@task
|
|
def delete_connection_test_room(room_name: str):
|
|
"""Force-delete an ephemeral connection-test room.
|
|
|
|
Used as a hard cap so a participant cannot keep an auto-refreshed
|
|
LiveKit session open indefinitely after requesting a test token.
|
|
"""
|
|
prefix = settings.CONNECTION_TEST_ROOM_PREFIX
|
|
if not room_name.startswith(prefix):
|
|
logger.error(
|
|
"Refusing to delete room '%s': expected prefix '%s'.",
|
|
room_name,
|
|
prefix,
|
|
)
|
|
return
|
|
|
|
try:
|
|
RoomManagement().delete_room(room_name)
|
|
except RoomNotFoundException:
|
|
# Room may already be gone after empty/departure timeout.
|
|
logger.info("Connection test room '%s' already gone.", room_name)
|
|
except RoomManagementException:
|
|
logger.exception("Failed to delete connection test room '%s'.", room_name)
|