-- Component blocks fragment (all Components except conference.localhost). -- See prosody.cfg.lua for the fragment layout. Component "lobby.conference.localhost" "muc" storage = "memory" muc_room_cache_size = 1000 restrict_room_creation = true muc_room_locking = false muc_room_default_public_jids = true -- Breakout MUC component for mod_muc_breakout_rooms tests. -- Only Prosody admins (focus@auth.localhost) may create rooms here, matching -- real-life behaviour where Jicofo creates breakout rooms on behalf of the -- moderator. The on_breakout_room_pre_create hook then enforces that the UUID -- is registered in the main room before admitting non-admin occupants. Component "breakout.conference.localhost" "muc" storage = "memory" restrict_room_creation = true muc_room_locking = false muc_room_default_public_jids = true -- Internal MUC used by mod_muc_jigasi_invite: the module resolves the Jigasi -- brewery room from this component via process_host_module. Without this -- component main_muc_service would remain nil and requests that reach the -- invite_jigasi() path would crash instead of returning 404. Component "internal.auth.localhost" "muc" -- Minimal MUC component used to test mod_muc_filter_access in isolation. -- Only clients from whitelist.localhost are permitted to join rooms here. Component "conference-internal.localhost" "muc" modules_enabled = { "muc_filter_access"; } muc_filter_whitelist = { "whitelist.localhost" } -- Component for mod_end_conference tests. Clients send a message stanza with -- an child to this component; the module looks up the room -- from the sender's jitsi_web_query_room session field (set by mod_jitsi_session -- from the ?room= WebSocket URL param) and destroys it if the sender is a -- moderator occupant. Component "endconference.localhost" "end_conference" muc_component = "conference.localhost" muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" -- MUC component for mod_muc_rate_limit integration tests. -- Intentionally low join/leave rates (1/s) so that 5 simultaneous clients -- exercise the queuing and timer logic without long waits. Component "rate-limited.localhost" "muc" modules_enabled = { "muc_rate_limit" } muc_rate_joins = 1 muc_rate_leaves = 1 -- Metadata component for mod_room_metadata_component tests. Component "metadata.localhost" "room_metadata_component" muc_component = "conference.localhost" muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" -- Component for mod_filesharing_component tests. Clients send file-sharing -- messages here; the component looks up the room from jitsi_web_query_room -- (set by mod_jitsi_session) and broadcasts add/remove notifications. Component "filesharing.localhost" "filesharing_component" muc_component = "conference.localhost" muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" -- Component for mod_audio_translation_component tests. Receivers send -- messages here; the component aggregates per-receiver -- subscriptions and exposes the map to jicofo via room._data.audioTranslationRequests -- (forwarded by mod_room_metadata_component on the metadata.localhost component). Component "audiotranslation.localhost" "audio_translation_component" muc_component = "conference.localhost" muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" -- Short debounce so tests don't wait long for the aggregate broadcast. audio_translation_debounce_interval = 0.1 -- Low limit so the per-receiver cap is exercised without many subscriptions. audio_translation_max_subscriptions = 3 -- Component for mod_polls_component tests. The module hooks message/host for -- new-poll / answer-poll json-messages, keeps per-room poll state (installed on -- conference.localhost via process_host_module) and re-broadcasts poll updates -- to all occupants. The sender must be an occupant of the room, located from -- jitsi_web_query_room (set by mod_jitsi_session from the ?room= param). Component "polls.localhost" "polls_component" muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" -- Plain MUC for mod_presence_identity tests. No token verification and no -- muc_meeting_id lock so any client can join freely without focus. Component "conference-identity.localhost" "muc" -- Isolated MUC component for mod_muc_wait_for_host tests. -- No muc_meeting_id, so no jicofo lock — a JWT-authenticated client can join -- directly as host without focus unlocking the room first. -- muc_mapper_domain_base is set to "conference.localhost" so that: -- lobby_muc_component_config = "lobby." .. "conference.localhost" -- = "lobby.conference.localhost" (already configured above) -- This means the existing lobby component is reused for the lobby rooms created -- by this component, and no additional lobby MUC component is needed. Component "conference-waitforhost.localhost" "muc" storage = "memory" modules_enabled = { "muc_wait_for_host"; } muc_mapper_domain_base = "conference.localhost" muc_mapper_domain_prefix = "conference" -- Isolated MUC component for mod_muc_allowners tests. -- No muc_meeting_id (no jicofo lock) and no token_verification, so anonymous -- clients can join freely. In non-moderated rooms every occupant is promoted -- to owner on join and muc#admin set stanzas revoking affiliations are -- rejected. Room names listed in allowners_moderated_rooms are moderated: -- only JWT-authenticated users with a matching room claim are promoted and -- the revoke filtering is skipped. Component "conference-allowners.localhost" "muc" storage = "memory" modules_enabled = { "muc_allowners"; } muc_mapper_domain_base = "localhost" muc_mapper_domain_prefix = "conference" allowners_moderated_rooms = { "moderated-room-1"; "moderated-room-2" } -- MUC component paired with VirtualHost "noregex.test". Its parent host -- (derived from the component name by mod_token_verification) sets -- token_regex_enabled = false, so a join whose token carries a room-claim -- pattern is refused with . Component "conference.noregex.test" "muc" storage = "memory" modules_enabled = { "token_verification"; } muc_mapper_domain_base = "noregex.test" muc_mapper_domain_prefix = "conference"