From e35fd60cc5c7d752114e7b9eb662226ef91df632 Mon Sep 17 00:00:00 2001 From: Amardeep Date: Thu, 14 May 2026 16:42:42 +0530 Subject: [PATCH] jitsi changed --- README.md | 85 + assets/public/politictalk/branding.json | 16 + assets/public/politictalk/pgLogo.svg | 2319 +++++++++++++++++ assets/public/politictalk/pg_bg.png | Bin 0 -> 261104 bytes config/politictalk.parallelglobe.io-config.js | 1937 ++++++++++++++ nginx/politictalk.parallelglobe.io.conf | 244 ++ scripts/deploy-vps.sh | 67 + templates/auth-roadmap.md | 33 + templates/deploy.env.example | 8 + 9 files changed, 4709 insertions(+) create mode 100644 README.md create mode 100644 assets/public/politictalk/branding.json create mode 100644 assets/public/politictalk/pgLogo.svg create mode 100644 assets/public/politictalk/pg_bg.png create mode 100644 config/politictalk.parallelglobe.io-config.js create mode 100644 nginx/politictalk.parallelglobe.io.conf create mode 100755 scripts/deploy-vps.sh create mode 100644 templates/auth-roadmap.md create mode 100644 templates/deploy.env.example diff --git a/README.md b/README.md new file mode 100644 index 0000000..a69694c --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# PoliticTalk Jitsi Setup + +This folder is the local source of truth for the PoliticTalk Jitsi setup used by: + +```text +https://politictalk.parallelglobe.io +``` + +The VPS still runs the actual Jitsi services. Changes should be made here first, committed to Git, pulled on the VPS, then deployed into the system Jitsi paths with the deploy script. + +## Structure + +```text +jitsi/ + config/ + politictalk.parallelglobe.io-config.js + assets/ + public/politictalk/ + branding.json + pgLogo.svg + nginx/ + politictalk.parallelglobe.io.conf + scripts/ + deploy-vps.sh + templates/ +``` + +## Current Meeting Policy + +- Meetings start in audio-only mode. +- Participants join with microphone muted. +- Participants join with camera off. +- Camera/prejoin camera controls are hidden. +- Toolbar is limited to microphone, chat, raise hand, fullscreen, noise suppression, participants pane, and hangup. +- Chat and polls are enabled. +- Invite/share controls are disabled. +- Room names are not stored in recent rooms. +- E2EE support is enabled in the Jitsi config. +- The logo and dynamic branding point to PoliticTalk public assets. + +## VPS Paths + +The deploy script copies local files into these VPS paths: + +```text +jitsi/config/politictalk.parallelglobe.io-config.js + -> /etc/jitsi/meet/politictalk.parallelglobe.io-config.js + +jitsi/assets/public/politictalk/* + -> /etc/jitsi/meet/public/politictalk/ + +jitsi/nginx/politictalk.parallelglobe.io.conf + -> /etc/nginx/sites-available/politictalk.parallelglobe.io.conf +``` + +By default, the deploy script does not replace nginx config unless `DEPLOY_NGINX=1` is set. + +## Deploy On VPS + +After pulling the latest repo changes on the VPS: + +```bash +cd /path/to/pg/jitsi +sudo ./scripts/deploy-vps.sh +``` + +To also deploy the nginx vhost: + +```bash +cd /path/to/pg/jitsi +sudo DEPLOY_NGINX=1 ./scripts/deploy-vps.sh +``` + +For current `config.js`, branding, and asset changes, an nginx reload is enough. Future JWT/auth changes may require restarting Prosody and Jicofo. + +## Future Auth Work + +The future authenticated flow should be: + +```text +PgPlatform -> PgApi verifies event/user -> PgApi creates short-lived Jitsi JWT +-> PgPlatform prejoin/iframe -> Jitsi validates JWT on VPS +``` + +Do not commit real secrets here. JWT secrets, Prosody passwords, and private keys should stay in VPS-only environment/config files. diff --git a/assets/public/politictalk/branding.json b/assets/public/politictalk/branding.json new file mode 100644 index 0000000..d864e43 --- /dev/null +++ b/assets/public/politictalk/branding.json @@ -0,0 +1,16 @@ +{ + "inviteDomain": "politictalk.parallelglobe.io", + "backgroundColor": "#101820", + "logoClickUrl": "https://parallelglobe.io/", + "logoImageUrl": "/_api/public/politictalk/pgLogo.svg", + "premeetingBackground": "url(/_api/public/politictalk/pg_bg.png)", + "customTheme": { + "palette": { + "ui01": "#101820", + "ui02": "#172432", + "surface02": "#1D2C3A", + "action01": "#2F80ED", + "action01Hover": "#1C6DD0" + } + } +} diff --git a/assets/public/politictalk/pgLogo.svg b/assets/public/politictalk/pgLogo.svg new file mode 100644 index 0000000..4cba5b5 --- /dev/null +++ b/assets/public/politictalk/pgLogo.svg @@ -0,0 +1,2319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/public/politictalk/pg_bg.png b/assets/public/politictalk/pg_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e3be479ef26e6074cf9436641fd5f10e13ad7010 GIT binary patch literal 261104 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

8?-J_fUCC)`cPI|SrEmwlY# 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 z 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⁣B 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 GT>L+iOZWKz literal 0 HcmV?d00001 diff --git a/config/politictalk.parallelglobe.io-config.js b/config/politictalk.parallelglobe.io-config.js new file mode 100644 index 0000000..01b0c6b --- /dev/null +++ b/config/politictalk.parallelglobe.io-config.js @@ -0,0 +1,1937 @@ +/* eslint-disable comma-dangle, no-unused-vars, no-var, prefer-template, vars-on-top */ + +/* + * NOTE: If you add a new option please remember to document it here: + * https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration + */ + +var subdir = ''; +var subdomain = ''; + +if (subdomain) { + subdomain = subdomain.substr(0, subdomain.length - 1).split('.') + .join('_') + .toLowerCase() + '.'; +} + +// In case of no ssi provided by the webserver, use empty strings +if (subdir.startsWith('/' + subdir + 'conference-request/v1', + + // Options related to the bridge (colibri) data channel + bridgeChannel: { + // If the backend advertises multiple colibri websockets, this options allows + // to filter some of them out based on the domain name. We use the first URL + // which does not match ignoreDomain, falling back to the first one that matches + // ignoreDomain. Has no effect if undefined. + // ignoreDomain: 'example.com', + + // Prefer SCTP (WebRTC data channels over the media path) over a colibri websocket. + // If SCTP is available in the backend it will be used instead of a WS. Defaults to + // false (SCTP is used only if available and no WS are available). + // preferSctp: false + }, + + // Testing / experimental features. + // + + testing: { + // Allows the setting of a custom bandwidth value from the UI. + // assumeBandwidth: true, + + // Enables use of getDisplayMedia in electron + // electronUseGetDisplayMedia: false, + + // Enables AV1 codec for FF. Note: By default it is disabled. + // enableAV1ForFF: false, + + // Enables the use of the codec selection API supported by the browsers . + // enableCodecSelectionAPI: false, + + // P2P test mode disables automatic switching to P2P when there are 2 + // participants in the conference. + // p2pTestMode: false, + + // Enables the test specific features consumed by jitsi-meet-torture + // testMode: false, + + // Disables the auto-play behavior of *all* newly created video element. + // This is useful when the client runs on a host with limited resources. + // noAutoPlayVideo: false, + + // Experiment: Whether to skip interim transcriptions. + // skipInterimTranscriptions: false, + + // Dump transcripts to a element for debugging. + // dumpTranscript: false, + + // Log the audio levels. + // debugAudioLevels: true, + + // Will replace ice candidates IPs with invalid ones in order to fail ice. + // failICE: true, + + // When running on Spot TV, this controls whether to show the recording consent dialog. + // If false (default), Spot instances will not show the recording consent dialog. + // If true, Spot instances will show the recording consent dialog like regular clients. + // showSpotConsentDialog: false, + }, + + // Disables moderator indicators. + // disableModeratorIndicator: false, + + // Disables the reactions feature. + // disableReactions: true, + + // Disables the reactions moderation feature. + // disableReactionsModeration: false, + + // Disables the reactions in chat feature. + // disableReactionsInChat: false, + + // Disables polls feature. + disablePolls: false, + + // Disables chat feature entirely including notifications, sounds, and private messages. + disableChat: false, + + // Disables demote button from self-view + // disableSelfDemote: false, + + // Disables self-view tile. (hides it from tile view and from filmstrip) + disableSelfView: true, + + // Disables self-view settings in UI + disableSelfViewSettings: true, + + // Shows/hides the moderator setting for chat permissions. + // showChatPermissionsModeratorSetting: false, + + // screenshotCapture : { + // Enables the screensharing capture feature. + // enabled: false, + // + // The mode for the screenshot capture feature. + // Can be either 'recording' - screensharing screenshots are taken + // only when the recording is also on, + // or 'always' - screensharing screenshots are always taken. + // mode: 'recording', + // } + + // Disables ICE/UDP by filtering out local and remote UDP candidates in + // signalling. + // webrtcIceUdpDisable: false, + + // Disables ICE/TCP by filtering out local and remote TCP candidates in + // signalling. + // webrtcIceTcpDisable: false, + + + // Media + // + + // Audio + + // Disable measuring of audio levels. + // disableAudioLevels: false, + + // audioLevelsInterval: 200, + + // Enabling this will run the lib-jitsi-meet no audio detection module which + // will notify the user if the current selected microphone has no audio + // input and will suggest another valid device if one is present. + enableNoAudioDetection: true, + + // Enabling this will show a "Save Logs" link in the GSM popover that can be + // used to collect debug information (XMPP IQs, SDP offer/answer cycles) + // about the call. + // enableSaveLogs: false, + + // Enabling this will hide the "Show More" link in the GSM popover that can be + // used to display more statistics about the connection (IP, Port, protocol, etc). + // disableShowMoreStats: true, + + // Enabling this will run the lib-jitsi-meet noise detection module which will + // notify the user if there is noise, other than voice, coming from the current + // selected microphone. The purpose it to let the user know that the input could + // be potentially unpleasant for other meeting participants. + enableNoisyMicDetection: true, + + // Start the conference in audio only mode (no video is being received nor + // sent). + startAudioOnly: true, + + // Every participant after the Nth will start audio muted. + startAudioMuted: 0, + + // Start calls with audio muted. Unlike the option above, this one is only + // applied locally. FIXME: having these 2 options is confusing. + startWithAudioMuted: true, + + // Enabling it (with #params) will disable local audio output of remote + // participants and to enable it back a reload is needed. + // startSilent: false, + + // Enables support for opus-red (redundancy for Opus). + // enableOpusRed: false, + + // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. + // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. + // Specify enableOpusDtx to enable support for opus-dtx where + // audio packets won’t be transmitted while participant is silent or muted. + // audioQuality: { + // stereo: false, + // opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range. + // enableOpusDtx: false, + // }, + + // Noise suppression configuration. By default rnnoise is used. Optionally Krisp + // can be used by enabling it below, but the Krisp JS SDK files must be supplied in your + // installation. Specifically, these files are needed: + // - https://meet.example.com/libs/krisp/krisp.mjs + // - https://meet.example.com/libs/krisp/models/model_8.kw + // - https://meet.example.com/libs/krisp/models/model_nc.kw + // - https://meet.example.com/libs/krisp/models/model_bvc.kw + // - https://meet.example.com/libs/krisp/assets/bvc-allowed.txt + // In case when you have known BVC supported devices and you want to extend allowed devices list + // - https://meet.example.com/libs/krisp/assets/bvc-allowed-ext.txt + // In case when you have known BVC supported devices and you want to extend allowed devices list + // - https://meet.example.com/libs/krisp/models/model_inbound_8.kw + // - https://meet.example.com/libs/krisp/models/model_inbound_16.kw + // In case when you want to use inbound noise suppression models + // NOTE: Krisp JS SDK v2.0.0 was tested. + // noiseSuppression: { + // krisp: { + // enabled: false, + // logProcessStats: false, + // debugLogs: false, + // useBVC: false, + // bufferOverflowMS: 1000, + // inboundModels: { + // modelInbound8: 'model_inbound_8.kef', + // modelInbound16: 'model_inbound_16.kef', + // }, + // preloadInboundModels: { + // modelInbound8: 'model_inbound_8.kef', + // modelInbound16: 'model_inbound_16.kef', + // }, + // preloadModels: { + // modelBVC: 'model_bvc.kef', + // model8: 'model_8.kef', + // modelNC: 'model_nc_mq.kef', + // }, + // models: { + // modelBVC: 'model_bvc.kef', + // model8: 'model_8.kef', + // modelNV: 'model_nc_mq.kef', + // }, + // bvc: { + // allowedDevices: 'bvc-allowed.txt', + // allowedDevicesExt: 'bvc-allowed-ext.txt', + // } + // }, + // }, + + // Video + + // Sets the default camera facing mode. + // cameraFacingMode: 'user', + + // Sets the preferred resolution (height) for local video. Defaults to 720. + // resolution: 720, + + // DEPRECATED. Please use raisedHands.disableRemoveRaisedHandOnFocus instead. + // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not + // disableRemoveRaisedHandOnFocus: false, + + // Specifies which raised hand related config should be set. + // raisedHands: { + // // Specifies whether the raised hand can be lowered by moderator. + // disableLowerHandByModerator: false, + + // // Specifies whether there is a notification before hiding the raised hand + // // when someone becomes the dominant speaker. + // disableLowerHandNotification: true, + + // // Specifies whether there is a notification when you are the next speaker in line. + // disableNextSpeakerNotification: false, + + // // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not. + // disableRemoveRaisedHandOnFocus: false, + // }, + + // speakerStats: { + // // Specifies whether the speaker stats is enable or not. + // disabled: false, + + // // Specifies whether there will be a search field in speaker stats or not. + // disableSearch: false, + + // // Specifies whether participants in speaker stats should be ordered or not, and with what priority. + // // 'role', <- Moderators on top. + // // 'name', <- Alphabetically by name. + // // 'hasLeft', <- The ones that have left in the bottom. + // order: [ + // 'role', + // 'name', + // 'hasLeft', + // ], + // }, + + // DEPRECATED. Please use speakerStats.disableSearch instead. + // Specifies whether there will be a search field in speaker stats or not + // disableSpeakerStatsSearch: false, + + // DEPRECATED. Please use speakerStats.order . + // Specifies whether participants in speaker stats should be ordered or not, and with what priority + // speakerStatsOrder: [ + // 'role', <- Moderators on top + // 'name', <- Alphabetically by name + // 'hasLeft', <- The ones that have left in the bottom + // ], <- the order of the array elements determines priority + + // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. + // Use -1 to disable. + // maxFullResolutionParticipants: 2, + + // w3c spec-compliant video constraints to use for video capture. Currently + // used by browsers that return true from lib-jitsi-meet's + // util#browser#usesNewGumFlow. The constraints are independent from + // this config's resolution value. Defaults to requesting an ideal + // resolution of 720p. + // constraints: { + // video: { + // height: { + // ideal: 720, + // max: 720, + // min: 240, + // }, + // }, + // }, + + // Enable / disable simulcast support. + // disableSimulcast: false, + + // Every participant after the Nth will start video muted. + startVideoMuted: 0, + + // Start calls with video muted. Unlike the option above, this one is only + // applied locally. FIXME: having these 2 options is confusing. + startWithVideoMuted: true, + + // Desktop sharing + + // Optional desktop sharing frame rate options. Default value: min:5, max:5. + // Setting higher min/max values will affect the resolution, it makes it worse. + // desktopSharingFrameRate: { + // min: 5, + // max: 5, + // }, + + // Optional screenshare settings that give more control over screen capture in the browser. + // screenShareSettings: { + // // Show users the current tab is the preferred capture source, default: false. + // desktopPreferCurrentTab: false, + // // Allow users to select system audio, default: include. + // desktopSystemAudio: 'include', + // // Allow users to seamlessly switch which tab they are sharing without having to select the tab again. + // desktopSurfaceSwitching: 'include', + // // Allow a user to be shown a preference for what screen is to be captured, default: unset. + // desktopDisplaySurface: undefined, + // // Allow users to select the current tab as a capture source, default: exclude. + // desktopSelfBrowserSurface: 'exclude' + // }, + + // Recording + + // Enable the dropbox integration. + // dropbox: { + // appKey: '', // Specify your app key here. + // // A URL to redirect the user to, after authenticating + // // by default uses: + // // 'https://politictalk.parallelglobe.io/static/oauth.html' + // redirectURI: + // 'https://politictalk.parallelglobe.io/subfolder/static/oauth.html', + // }, + + // configuration for all things recording related. Existing settings will be migrated here in the future. + // recordings: { + // // IF true (default) recording audio and video is selected by default in the recording dialog. + // // recordAudioAndVideo: true, + // // If true, shows a notification at the start of the meeting with a call to action button + // // to start recording (for users who can do so). + // // suggestRecording: true, + // // If true, shows a warning label in the prejoin screen to point out the possibility that + // // the call you're joining might be recorded. + // // showPrejoinWarning: true, + // // If true, the notification for recording start will display a link to download the cloud recording. + // // showRecordingLink: true, + // // If true, mutes audio and video when a recording begins and displays a dialog + // // explaining the effect of unmuting. + // // requireConsent: true, + // // If true consent will be skipped for users who are already in the meeting. + // // skipConsentInMeeting: true, + // // Link for the recording consent dialog's "Learn more" link. + // // consentLearnMoreLink: 'https://jitsi.org/meet/consent', + // }, + + // recordingService: { + // // When integrations like dropbox are enabled only that will be shown, + // // by enabling fileRecordingsServiceEnabled, we show both the integrations + // // and the generic recording service (its configuration and storage type + // // depends on jibri configuration) + // enabled: false, + + // // Whether to show the possibility to share file recording with other people + // // (e.g. meeting participants), based on the actual implementation + // // on the backend. + // sharingEnabled: false, + + // // Hide the warning that says we only store the recording for 24 hours. + // hideStorageWarning: false, + // }, + + // DEPRECATED. Use recordingService.enabled instead. + // fileRecordingsServiceEnabled: false, + + // DEPRECATED. Use recordingService.sharingEnabled instead. + // fileRecordingsServiceSharingEnabled: false, + + // Local recording configuration. + // localRecording: { + // // Whether to disable local recording or not. + // disable: false, + + // // Whether to notify all participants when a participant is recording locally. + // notifyAllParticipants: false, + + // // Whether to disable the self recording feature (only local participant streams). + // disableSelfRecording: false, + // }, + + // Customize the Live Streaming dialog. Can be modified for a non-YouTube provider. + // liveStreaming: { + // // Whether to enable live streaming or not. + // enabled: false, + // // Terms link + // termsLink: 'https://www.youtube.com/t/terms', + // // Data privacy link + // dataPrivacyLink: 'https://policies.google.com/privacy', + // // RegExp string that validates the stream key input field + // validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}', + // // Documentation reference for the live streaming feature. + // helpLink: 'https://jitsi.org/live' + // }, + + // DEPRECATED. Use liveStreaming.enabled instead. + // liveStreamingEnabled: false, + + // DEPRECATED. Use transcription.enabled instead. + // transcribingEnabled: false, + + // DEPRECATED. Use transcription.useAppLanguage instead. + // transcribeWithAppLanguage: true, + + // DEPRECATED. Use transcription.preferredLanguage instead. + // preferredTranscribeLanguage: 'en-US', + + // DEPRECATED. Use transcription.autoTranscribeOnRecord instead. + // autoCaptionOnRecord: false, + + // Transcription options. + // transcription: { + // // Whether the feature should be enabled or not. + // enabled: false, + + // // Translation languages. + // // Available languages can be found in + // // ./lang/translation-languages.json. + // translationLanguages: ['en', 'es', 'fr', 'ro'], + + // // Important languages to show on the top of the language list. + // translationLanguagesHead: ['en'], + + // // If true transcriber will use the application language. + // // The application language is either explicitly set by participants in their settings or automatically + // // detected based on the environment, e.g. if the app is opened in a chrome instance which + // // is using french as its default language then transcriptions for that participant will be in french. + // // Defaults to true. + // useAppLanguage: true, + + // // Transcriber language. This settings will only work if "useAppLanguage" + // // is explicitly set to false. + // // Available languages can be found in + // // ./src/react/features/transcribing/transcriber-langs.json. + // preferredLanguage: 'en-US', + + // Allows extending the list of supported transcription languages. + // Useful for custom transcription backends (e.g. Vosk). + // + // Example: + // customLanguages: { + // 'hsb-DE': 'Upper Sorbian (Germany)', + // 'dsb-DE': 'Lower Sorbian (Germany)' + // }, + + // // Enables automatic turning on transcribing when recording is started + // autoTranscribeOnRecord: false, + + // // Enables automatic request of subtitles when transcriber is present in the meeting, uses the default + // // language that is set + // autoCaptionOnTranscribe: false, + // + // // Disables everything related to closed captions - the tab in the chat area, the button in the menu, + // // subtitles on stage and the "Show subtitles on stage" checkbox in the settings. + // // Note: Starting transcriptions from the recording dialog will still work. + // disableClosedCaptions: false, + + // }, + + // Misc + + // Default value for the channel "last N" attribute. -1 for unlimited. + channelLastN: -1, + + // Connection indicators + // connectionIndicators: { + // autoHide: true, + // autoHideTimeout: 5000, + // disabled: false, + // disableDetails: false, + // inactiveDisabled: false + // }, + + // Provides a way for the lastN value to be controlled through the UI. + // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN + // value will be used when the quality level is selected using "Manage Video Quality" slider. + // startLastN: 1, + + // Specify the settings for video quality optimizations on the client. + // videoQuality: { + // + // // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264' ], + // + // // Provides a way to set the codec for screenshare. + // screenshareCodec: 'AV1', + // mobileScreenshareCodec: 'VP8', + // + // // Enables the adaptive mode in the client that will make runtime adjustments to selected codecs and received + // // videos for a better user experience. This mode will kick in only when CPU overuse is reported in the + // // WebRTC statistics for the outbound video streams. + // enableAdaptiveMode: false, + // + // // Codec specific settings for scalability modes and max bitrates. + // av1: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1000000, + // fullHd: 2000000, + // ultraHd: 4000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // }, + // h264: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true + // }, + // vp8: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: false + // }, + // vp9: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1200000, + // fullHd: 2500000, + // ultraHd: 5000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // }, + // + // // The options can be used to override default thresholds of video thumbnail heights corresponding to + // // the video quality levels used in the application. At the time of this writing the allowed levels are: + // // 'low' - for the low quality level (180p at the time of this writing) + // // 'standard' - for the medium quality level (360p) + // // 'high' - for the high quality level (720p) + // // The keys should be positive numbers which represent the minimal thumbnail height for the quality level. + // // + // // With the default config value below the application will use 'low' quality until the thumbnails are + // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to + // // the high quality. + // minHeightForQualityLvl: { + // 360: 'standard', + // 720: 'high', + // }, + // + // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint + // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264', 'AV1' ], + // }, + + // Notification timeouts + // notificationTimeouts: { + // short: 2500, + // medium: 5000, + // long: 10000, + // extraLong: 60000, + // sticky: 0, + // }, + + // Disables or enables RTX (RFC 4588) (defaults to false). + // disableRtx: false, + + // Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event. + // disableBeforeUnloadHandlers: true, + + // Disables or enables TCC support in this client (default: enabled). + // enableTcc: true, + + // Disables or enables REMB support in this client (default: enabled). + // enableRemb: true, + + // Enables forced reload of the client when the call is migrated as a result of + // the bridge going down. + // enableForcedReload: true, + + // Use TURN/UDP servers for the jitsi-videobridge connection (by default + // we filter out TURN/UDP because it is usually not needed since the + // bridge itself is reachable via UDP) + // useTurnUdp: false + + // Enable support for encoded transform in supported browsers. This allows + // E2EE to work in Safari if the corresponding flag is enabled in the browser. + // Experimental. + enableEncodedTransformSupport: true, + + // UI + // + + // Disables responsive tiles. + // disableResponsiveTiles: false, + + // DEPRECATED. Please use `securityUi?.hideLobbyButton` instead. + // Hides lobby button. + // hideLobbyButton: false, + + // DEPRECATED. Please use `lobby?.autoKnock` instead. + // If Lobby is enabled starts knocking automatically. + // autoKnockLobby: false, + + // DEPRECATED. Please use `lobby?.enableChat` instead. + // Enable lobby chat. + // enableLobbyChat: true, + + // DEPRECATED! Use `breakoutRooms.hideAddRoomButton` instead. + // Hides add breakout room button + // hideAddRoomButton: false, + + // Require users to always specify a display name. + // requireDisplayName: true, + + // Enables webhid functionality for Audio. + // enableWebHIDFeature: false, + + // DEPRECATED! Use 'welcomePage.disabled' instead. + // Whether to use a welcome page or not. In case it's false a random room + // will be joined when no room is specified. + // enableWelcomePage: true, + + // Configs for welcome page. + welcomePage: { + // Whether to disable welcome page. In case it's disabled a random room + // will be joined when no room is specified. + disabled: false, + // If set, landing page will redirect to this URL. + customUrl: 'https://parallelglobe.io/calendar' + }, + + // Configs for the lobby screen. + // lobby: { + // // If Lobby is enabled, it starts knocking automatically. Replaces `autoKnockLobby`. + // autoKnock: false, + // // Enables the lobby chat. Replaces `enableLobbyChat`. + // enableChat: true, + // // Shows the hangup button in the lobby screen. + // showHangUp: true, + // }, + + // Configs for the security related UI elements. + // securityUi: { + // // Hides the lobby button. Replaces `hideLobbyButton`. + // hideLobbyButton: false, + // // Hides the possibility to set and enter a lobby password. + // disableLobbyPassword: false, + // }, + + // Disable app shortcuts that are registered upon joining a conference + // disableShortcuts: false, + + // Disable initial browser getUserMedia requests. + // This is useful for scenarios where users might want to start a conference for screensharing only + // disableInitialGUM: false, + + // Enabling the close page will ignore the welcome page redirection when + // a call is hangup. + // enableClosePage: false, + + // Disable hiding of remote thumbnails when in a 1-on-1 conference call. + // Setting this to null, will also disable showing the remote videos + // when the toolbar is shown on mouse movements + // disable1On1Mode: null | false | true, + + // Default local name to be displayed + // defaultLocalDisplayName: 'me', + + // Default remote name to be displayed + // defaultRemoteDisplayName: 'Fellow Jitster', + + // Hides the display name from the participant thumbnail + // hideDisplayName: false, + + // Hides the dominant speaker name badge that hovers above the toolbox + // hideDominantSpeakerBadge: false, + + // Default language for the user interface. Cannot be overwritten. + // For iframe integrations, use the `lang` option directly instead. + // defaultLanguage: 'en', + + // Disables profile and the edit of all fields from the profile settings (display name and email) + // disableProfile: false, + + // Hides the email section under profile settings. + // hideEmailInSettings: false, + + // When enabled the password used for locking a room is restricted to up to the number of digits specified + // default: roomPasswordNumberOfDigits: false, + // roomPasswordNumberOfDigits: 10, + + // Message to show the users. Example: 'The service will be down for + // maintenance at 01:00 AM GMT, + // noticeMessage: '', + + // Enables calendar integration, depends on googleApiApplicationClientID + // and microsoftApiApplicationClientID + // enableCalendarIntegration: false, + + // Whether to notify when the conference is terminated because it was destroyed. + // notifyOnConferenceDestruction: true, + + // The client id for the google APIs used for the calendar integration, youtube livestreaming, etc. + // googleApiApplicationClientID: '', + + // Configs for prejoin page. + prejoinConfig: { + // When true, users see the PoliticTalk prejoin screen before entering the room. + enabled: true, + hideDisplayName: false, + hideExtraJoinButtons: ['no-audio', 'by-phone'], + preCallTestEnabled: false, + preCallTestICEUrl: '', + showHangUp: true + }, + + // When 'true', the user cannot edit the display name. + // (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.) + // readOnlyName: false, + + // If etherpad integration is enabled, setting this to true will + // automatically open the etherpad when a participant joins. This + // does not affect the mobile app since opening an etherpad + // obscures the conference controls -- it's better to let users + // choose to open the pad on their own in that case. + // openSharedDocumentOnJoin: false, + + // If true, shows the unsafe room name warning label when a room name is + // deemed unsafe (due to the simplicity in the name) and a password is not + // set or the lobby is not enabled. + // enableInsecureRoomNameWarning: false, + + // Array with avatar URL prefixes that need to use CORS. + // corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ], + + // Base URL for a Gravatar-compatible service. Defaults to Gravatar. + // DEPRECATED! Use `gravatar.baseUrl` instead. + // gravatarBaseURL: 'https://www.gravatar.com/avatar/', + + // Setup for Gravatar-compatible services. + // gravatar: { + // // Defaults to Gravatar. + // baseUrl: 'https://www.gravatar.com/avatar/', + // // True if Gravatar should be disabled. + // disabled: false, + // }, + + // App name to be displayed in the invitation email subject, as an alternative to + // interfaceConfig.APP_NAME. + // inviteAppName: null, + + // Moved from interfaceConfig(TOOLBAR_BUTTONS). + // The name of the toolbar buttons to display in the toolbar, including the + // "More actions" menu. If present, the button will display. Exceptions are + // "livestreaming" and "recording" which also require being a moderator and + // some other values in config.js to be enabled. Also, the "profile" button will + // not display for users with a JWT. + // Notes: + // - it's possible to reorder the buttons in the maintoolbar by changing the order of the mainToolbarButtons + // - 'desktop' controls the "Share your screen" button + // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI + // toolbarButtons: [ + // 'camera', + // 'chat', + // 'closedcaptions', + // 'desktop', + // 'download', + // 'embedmeeting', + // 'etherpad', + // 'feedback', + // 'filmstrip', + // 'fullscreen', + // 'hangup', + // 'help', + // 'highlight', + // 'invite', + // 'linktosalesforce', + // 'livestreaming', + // 'microphone', + // 'noisesuppression', + // 'participants-pane', + // 'profile', + // 'raisehand', + // 'recording', + // 'security', + // 'select-background', + // 'settings', + // 'shareaudio', + // 'sharedvideo', + // 'shortcuts', + // 'stats', + // 'tileview', + // 'toggle-camera', + // 'videoquality', + // 'whiteboard', + // ], + toolbarButtons: [ + 'microphone', + 'chat', + 'raisehand', + 'fullscreen', + 'noisesuppression', + 'participants-pane', + 'hangup' + ], + + // Holds values related to toolbar visibility control. + // toolbarConfig: { + // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT + // // The initial number of milliseconds for the toolbar buttons to be visible on screen. + // initialTimeout: 20000, + // // Moved from interfaceConfig.TOOLBAR_TIMEOUT + // // Number of milliseconds for the toolbar buttons to be visible on screen. + // timeout: 4000, + // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE + // // Whether toolbar should be always visible or should hide after x milliseconds. + // alwaysVisible: false, + // // Indicates whether the toolbar should still autohide when chat is open + // autoHideWhileChatIsOpen: false, + // // Default background color for the main toolbar. Accepts any valid CSS color. + // // backgroundColor: '#ffffff', + // }, + + // Overrides the buttons displayed in the main toolbar. Depending on the screen size the number of displayed + // buttons varies from 2 buttons to 8 buttons. Every array in the mainToolbarButtons array will replace the + // corresponding default buttons configuration matched by the number of buttons specified in the array. Arrays with + // more than 8 buttons or less then 2 buttons will be ignored. When there there isn't an override for a certain + // configuration (for example when 3 buttons are displayed) the default jitsi-meet configuration will be used. + // The order of the buttons in the array is preserved. + // mainToolbarButtons: [ + // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'reactions', 'participants-pane', 'tileview' ], + // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane', 'tileview' ], + // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane' ], + // [ 'microphone', 'camera', 'desktop', 'chat', 'participants-pane' ], + // [ 'microphone', 'camera', 'chat', 'participants-pane' ], + // [ 'microphone', 'camera', 'chat' ], + // [ 'microphone', 'camera' ] + // ], + + // Enable reduced UI on web. + // reducedUIEnabled: true, + + // Overrides the buttons displayed in the main toolbar for reduced UI. + // When there isn't an override for a certain configuration the default jitsi-meet configuration will be used. + // The order of the buttons in the array is preserved. + // reducedUImainToolbarButtons: [ 'microphone', 'camera' ], + + // Toolbar buttons which have their click/tap event exposed through the API on + // `toolbarButtonClicked`. Passing a string for the button key will + // prevent execution of the click/tap routine; passing an object with `key` and + // `preventExecution` flag on false will not prevent execution of the click/tap + // routine. Below array with mixed mode for passing the buttons. + // buttonsWithNotifyClick: [ + // 'camera', + // { + // key: 'chat', + // preventExecution: false + // }, + // { + // key: 'closedcaptions', + // preventExecution: true + // }, + // 'desktop', + // 'download', + // 'embedmeeting', + // 'end-meeting', + // 'etherpad', + // 'feedback', + // 'filmstrip', + // 'fullscreen', + // 'hangup', + // 'hangup-menu', + // 'help', + // { + // key: 'invite', + // preventExecution: false + // }, + // 'livestreaming', + // 'microphone', + // 'mute-everyone', + // 'mute-video-everyone', + // 'noisesuppression', + // 'participants-pane', + // 'profile', + // { + // key: 'raisehand', + // preventExecution: true + // }, + // 'recording', + // 'security', + // 'select-background', + // 'settings', + // 'shareaudio', + // 'sharedvideo', + // 'shortcuts', + // 'stats', + // 'tileview', + // 'toggle-camera', + // 'videoquality', + // // The add passcode button from the security dialog. + // { + // key: 'add-passcode', + // preventExecution: false + // }, + // 'whiteboard', + // ], + + // Participant context menu buttons which have their click/tap event exposed through the API on + // `participantMenuButtonClick`. Passing a string for the button key will + // prevent execution of the click/tap routine; passing an object with `key` and + // `preventExecution` flag on false will not prevent execution of the click/tap + // routine. Below array with mixed mode for passing the buttons. + // participantMenuButtonsWithNotifyClick: [ + // 'allow-video', + // { + // key: 'ask-unmute', + // preventExecution: false + // }, + // 'conn-status', + // 'flip-local-video', + // 'grant-moderator', + // { + // key: 'kick', + // preventExecution: true + // }, + // { + // key: 'hide-self-view', + // preventExecution: false + // }, + // 'mute', + // 'mute-others', + // 'mute-others-video', + // 'mute-video', + // 'pinToStage', + // 'privateMessage', + // { + // key: 'remote-control', + // preventExecution: false + // }, + // 'send-participant-to-room', + // 'verify', + // ], + + // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons: + // 'microphone', 'camera', 'select-background', 'invite', 'settings' + hiddenPremeetingButtons: [ + 'microphone', + 'camera', + 'select-background', + 'invite', + 'settings' + ], + + // An array with custom option buttons for the participant context menu + // type: Array<{ icon: string; id: string; text: string; }> + // customParticipantMenuButtons: [], + + // An array with custom option buttons for the toolbar + // type: Array<{ icon: string; id: string; text: string; backgroundColor?: string; }> + // customToolbarButtons: [], + + // Stats + // + + // Whether to enable stats collection or not in the TraceablePeerConnection. + // This can be useful for debugging purposes (post-processing/analysis of + // the webrtc stats) as it is done in the jitsi-meet-torture bandwidth + // estimation tests. + // gatherStats: false, + + // The interval at which PeerConnection.getStats() is called. Defaults to 10000 + // pcStatsInterval: 10000, + + // Enables sending participants' display names to stats + // enableDisplayNameInStats: false, + + // Enables sending participants' emails (if available) to stats and other analytics + // enableEmailInStats: false, + + // faceLandmarks: { + // // Enables sharing your face coordinates. Used for centering faces within a video. + // enableFaceCentering: false, + + // // Enables detecting face expressions and sharing data with other participants + // enableFaceExpressionsDetection: false, + + // // Enables displaying face expressions in speaker stats + // enableDisplayFaceExpressions: false, + + // // Enable rtc stats for face landmarks + // enableRTCStats: false, + + // // Minimum required face movement percentage threshold for sending new face centering coordinates data. + // faceCenteringThreshold: 10, + + // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. + // captureInterval: 1000, + // }, + + // Controls the percentage of automatic feedback shown to participants. + // The default value is 100%. If set to 0, no automatic feedback will be requested + // feedbackPercentage: 100, + + // Privacy + // + + // If third party requests are disabled, no other server will be contacted. + // This means avatars will be locally generated and external stats integration + // will not function. + // disableThirdPartyRequests: false, + + + // Peer-To-Peer mode: used (if enabled) when there are just 2 participants. + // + + p2p: { + // Enables peer to peer mode. When enabled the system will try to + // establish a direct connection when there are exactly 2 participants + // in the room. If that succeeds the conference will stop sending data + // through the JVB and use the peer to peer connection instead. When a + // 3rd participant joins the conference will be moved back to the JVB + // connection. + enabled: true, + + // Sets the ICE transport policy for the p2p connection. At the time + // of this writing the list of possible values are 'all' and 'relay', + // but that is subject to change in the future. The enum is defined in + // the WebRTC standard: + // https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum. + // If not set, the effective value is 'all'. + // iceTransportPolicy: 'all', + + // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based + // endpoints. + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9', 'AV1' ], + // + // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264 ], + + // Provides a way to set the codec for screenshare. + // screenshareCodec: 'AV1', + // mobileScreenshareCodec: 'VP8', + + // How long we're going to wait, before going back to P2P after the 3rd + // participant has left the conference (to filter out page reload). + // backToP2PDelay: 5, + + // The STUN servers that will be used in the peer to peer connections + stunServers: [ + + // { urls: 'stun:politictalk.parallelglobe.io:3478' }, + { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }, + ], + }, + + analytics: { + // True if the analytics should be disabled + // disabled: false, + + // Matomo configuration: + // matomoEndpoint: 'https://your-matomo-endpoint/', + // matomoSiteID: '42', + + // The Amplitude APP Key: + // amplitudeAPPKey: '', + + // Obfuscates room name sent to analytics (amplitude, rtcstats) + // Default value is false. + // obfuscateRoomName: false, + + // Configuration for the rtcstats server: + // By enabling rtcstats server every time a conference is joined the rtcstats + // module connects to the provided rtcstatsEndpoint and sends statistics regarding + // PeerConnection states along with getStats metrics polled at the specified + // interval. + // rtcstatsEnabled: false, + // rtcstatsStoreLogs: false, + + // In order to enable rtcstats one needs to provide a endpoint url. + // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, + + // The interval at which rtcstats will poll getStats, defaults to 10000ms. + // If the value is set to 0 getStats won't be polled and the rtcstats client + // will only send data related to RTCPeerConnection events. + // rtcstatsPollInterval: 10000, + + // This determines if rtcstats sends the SDP to the rtcstats server or replaces + // all SDPs with an empty string instead. + // rtcstatsSendSdp: false, + + // Array of script URLs to load as lib-jitsi-meet "analytics handlers". + // scriptURLs: [ + // "https://example.com/my-custom-analytics.js", + // ], + + // By enabling watchRTCEnabled option you would want to use watchRTC feature + // This would also require to configure watchRTCConfigParams. + // Please remember to keep rtcstatsEnabled disabled for watchRTC to work. + // watchRTCEnabled: false, + }, + + // Logs that should go be passed through the 'log' event if a handler is defined for it + // apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'], + + // Information about the jitsi-meet instance we are connecting to, including + // the user region as seen by the server. + // deploymentInfo: { + // shard: "shard1", + // region: "europe", + // userRegion: "asia", + // }, + + // Array of disabled sounds. + // Possible values: + // - 'ASKED_TO_UNMUTE_SOUND' + // - 'E2EE_OFF_SOUND' + // - 'E2EE_ON_SOUND' + // - 'INCOMING_MSG_SOUND' + // - 'KNOCKING_PARTICIPANT_SOUND' + // - 'LIVE_STREAMING_OFF_SOUND' + // - 'LIVE_STREAMING_ON_SOUND' + // - 'NO_AUDIO_SIGNAL_SOUND' + // - 'NOISY_AUDIO_INPUT_SOUND' + // - 'OUTGOING_CALL_EXPIRED_SOUND' + // - 'OUTGOING_CALL_REJECTED_SOUND' + // - 'OUTGOING_CALL_RINGING_SOUND' + // - 'OUTGOING_CALL_START_SOUND' + // - 'PARTICIPANT_JOINED_SOUND' + // - 'PARTICIPANT_LEFT_SOUND' + // - 'RAISE_HAND_SOUND' + // - 'REACTION_SOUND' + // - 'RECORDING_OFF_SOUND' + // - 'RECORDING_ON_SOUND' + // - 'TALK_WHILE_MUTED_SOUND' + // disabledSounds: [], + + // DEPRECATED! Use `disabledSounds` instead. + // Decides whether the start/stop recording audio notifications should play on record. + // disableRecordAudioNotification: false, + + // DEPRECATED! Use `disabledSounds` instead. + // Disables the sounds that play when other participants join or leave the + // conference (if set to true, these sounds will not be played). + // disableJoinLeaveSounds: false, + + // DEPRECATED! Use `disabledSounds` instead. + // Disables the sounds that play when a chat message is received. + // disableIncomingMessageSound: false, + + // Information for the chrome extension banner + // chromeExtensionBanner: { + // // The chrome extension to be installed address + // url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', + // edgeUrl: 'https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn', + + // // Extensions info which allows checking if they are installed or not + // chromeExtensionsInfo: [ + // { + // id: 'kglhbbefdnlheedjiejgomgmfplipfeb', + // path: 'jitsi-logo-48x48.png', + // }, + // // Edge extension info + // { + // id: 'eeecajlpbgjppibfledfihobcabccihn', + // path: 'jitsi-logo-48x48.png', + // }, + // ] + // }, + + e2ee: { + externallyManagedKey: false, + disabled: false, + labels: { + label: 'End-to-end encryption', + description: 'End-to-end encryption protects media between participants.', + tooltip: 'End-to-end encryption', + warning: 'Some features may be limited while encryption is enabled.' + } + }, + + // Options related to end-to-end (participant to participant) ping. + // e2eping: { + // // Whether ene-to-end pings should be enabled. + // enabled: false, + // + // // The number of responses to wait for. + // numRequests: 5, + // + // // The max conference size in which e2e pings will be sent. + // maxConferenceSize: 200, + // + // // The maximum number of e2e ping messages per second for the whole conference to aim for. + // // This is used to control the pacing of messages in order to reduce the load on the backend. + // maxMessagesPerSecond: 250, + // }, + + // If set, will attempt to use the provided video input device label when + // triggering a screenshare, instead of proceeding through the normal flow + // for obtaining a desktop stream. + // NOTE: This option is experimental and is currently intended for internal + // use only. + // _desktopSharingSourceDevice: 'sample-id-or-label', + + // DEPRECATED! Use deeplinking.disabled instead. + // If true, any checks to handoff to another application will be prevented + // and instead the app will continue to display in the current browser. + // disableDeepLinking: false, + + // The deeplinking config. + // deeplinking: { + // + // // The desktop deeplinking config, disabled by default. + // desktop: { + // appName: 'Jitsi Meet', + // appScheme: 'jitsi-meet, + // download: { + // linux: + // 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet-x86_64.AppImage', + // macos: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.dmg', + // windows: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.exe' + // }, + // enabled: false + // }, + // // If true, any checks to handoff to another application will be prevented + // // and instead the app will continue to display in the current browser. + // disabled: false, + + // // whether to hide the logo on the deep linking pages. + // hideLogo: false, + + // // The ios deeplinking config. + // ios: { + // appName: 'Jitsi Meet', + // // Specify mobile app scheme for opening the app from the mobile browser. + // appScheme: 'org.jitsi.meet', + // // Custom URL for downloading ios mobile app. + // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', + // }, + + // // The android deeplinking config. + // android: { + // appName: 'Jitsi Meet', + // // Specify mobile app scheme for opening the app from the mobile browser. + // appScheme: 'org.jitsi.meet', + // // Custom URL for downloading android mobile app. + // downloadLink: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', + // // Android app package name. + // appPackage: 'org.jitsi.meet', + // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', + // } + // }, + + // // The terms, privacy and help centre URL's. + // legalUrls: { + // helpCentre: 'https://web-cdn.jitsi.net/faq/meet-faq.html', + // privacy: 'https://jitsi.org/meet/privacy', + // terms: 'https://jitsi.org/meet/terms' + // }, + + // A property to disable the right click context menu for localVideo + // the menu has option to flip the locally seen video for local presentations + disableLocalVideoFlip: true, + + // A property used to unset the default flip state of the local video. + // When it is set to 'true', the local(self) video will not be mirrored anymore. + // doNotFlipLocalVideo: false, + + // Mainly privacy related settings + + // Disables all invite functions from the app (share, invite, dial out...etc) + disableInviteFunctions: true, + + // Disables storing the room name to the recents list. When in an iframe this is ignored and + // the room is never stored in the recents list. + doNotStoreRoom: true, + + // Deployment specific URLs. + // deploymentUrls: { + // // If specified a 'Help' button will be displayed in the overflow menu with a link to the specified URL for + // // user documentation. + // userDocumentationURL: 'https://docs.example.com/video-meetings.html', + // // If specified a 'Download our apps' button will be displayed in the overflow menu with a link + // // to the specified URL for an app download page. + // downloadAppsUrl: 'https://docs.example.com/our-apps.html', + // }, + + // Options related to the remote participant menu. + // remoteVideoMenu: { + // // Whether the remote video context menu to be rendered or not. + // disabled: true, + // // If set to true the 'Switch to visitor' button will be disabled. + // disableDemote: true, + // // If set to true the 'Kick out' button will be disabled. + // disableKick: true, + // // If set to true the 'Grant moderator' button will be disabled. + // disableGrantModerator: true, + // // If set to 'all' the 'Private chat' button will be disabled for all participants. + // // If set to 'allow-moderator-chat' the 'Private chat' button will be available for chats with moderators. + // // If set to 'disable-visitor-chat' the 'Private chat' button will be disabled for visitor-main participant + // // conversations. + // disablePrivateChat: 'all' | 'allow-moderator-chat' | 'disable-visitor-chat', + // }, + + + // If set to true all muting operations of remote participants will be disabled. + disableRemoteMute: false, + + /** + External API url used to receive branding specific information. + If there is no url set or there are missing fields, the defaults are applied. + The config file should be in JSON. + None of the fields are mandatory and the response must have the shape: + { + // Whether participant can only send group chat message if `send-groupchat` feature is enabled in jwt. + groupChatRequiresPermission: false, + // Whether participant can only create polls if `create-polls` feature is enabled in jwt. + pollCreationRequiresPermission: false, + // The domain url to apply (will replace the domain in the sharing conference link/embed section) + inviteDomain: 'example-company.org', + // The hex value for the colour used as background + backgroundColor: '#fff', + // The url for the image used as background + backgroundImageUrl: 'https://example.com/background-img.png', + // The anchor url used when clicking the logo image + logoClickUrl: 'https://example-company.org', + // The url used for the image used as logo + logoImageUrl: 'https://example.com/logo-img.png', + // Endpoint that enables support for salesforce integration with in-meeting resource linking + // This is required for: + // listing the most recent records - salesforceUrl/records/recents + // searching records - salesforceUrl/records?text=${text} + // retrieving record details - salesforceUrl/records/${id}?type=${type} + // and linking the meeting - salesforceUrl/sessions/${sessionId}/records/${id} + // salesforceUrl: 'https://api.example.com/', + // Overwrite for pool of background images for avatars + avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'], + // The lobby/prejoin screen background + premeetingBackground: 'url(https://example.com/premeeting-background.png)', + // A list of images that can be used as video backgrounds. + // When this field is present, the default images will be replaced with those provided. + virtualBackgrounds: ['https://example.com/img.jpg'], + // Object containing customized icons that should replace the default ones. + // The keys need to be the exact same icon names used in here: + // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/icons/svg/index.ts + // To avoid having the icons trimmed or displayed in an unexpected way, please provide svg + // files containing svg xml icons in the size that the default icons come in. + customIcons: { + IconArrowUp: 'https://example.com/arrow-up.svg', + IconDownload: 'https://example.com/download.svg', + IconRemoteControlStart: 'https://example.com/remote-start.svg', + }, + // Object containing a theme's properties. It also supports partial overwrites of the main theme. + // For a list of all possible theme tokens and their current defaults, please check: + // https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json + // For a short explanations on each of the tokens, please check: + // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.ts + // IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code + // or they are partially applied. + customTheme: { + palette: { + ui01: "orange !important", + ui02: "maroon", + surface02: 'darkgreen', + ui03: "violet", + ui04: "magenta", + ui05: "blueviolet", + action01: 'green', + action01Hover: 'lightgreen', + disabled01: 'beige', + success02: 'cadetblue', + action02Hover: 'aliceblue', + }, + typography: { + labelRegular: { + fontSize: 25, + lineHeight: 30, + fontWeight: 500, + } + } + } + } + */ + dynamicBrandingUrl: '/_api/public/politictalk/branding.json', + + // A list of allowed URL domains for shared video. + // + // NOTE: + // '*' is allowed value and it will allow any URL to be used for shared video. We do not recommend using '*', + // use it at your own risk! + // sharedVideoAllowedURLDomains: [ ], + + // Options related to the participants pane. + // participantsPane: { + // // Enables feature + // enabled: true, + // // Hides the moderator settings tab. + // hideModeratorSettingsTab: false, + // // Hides the more actions button. + // hideMoreActionsButton: false, + // // Hides the mute all button. + // hideMuteAllButton: false, + // }, + participantsPane: { + enabled: true, + hideModeratorSettingsTab: false, + hideMoreActionsButton: false, + hideMuteAllButton: false + }, + + // Options related to the breakout rooms feature. + // breakoutRooms: { + // // Hides the add breakout room button. This replaces `hideAddRoomButton`. + // hideAddRoomButton: false, + // // Hides the auto assign participants button. + // hideAutoAssignButton: false, + // // Hides the join breakout room button. + // hideJoinRoomButton: false, + // }, + + // When true, virtual background feature will be disabled. + // disableVirtualBackground: false, + + // When true the user cannot add more images to be used as virtual background. + // Only the default ones from will be available. + // disableAddingBackgroundImages: false, + + // Sets the background transparency level. '0' is fully transparent, '1' is opaque. + // backgroundAlpha: 1, + + // The URL of the moderated rooms microservice, if available. If it + // is present, a link to the service will be rendered on the welcome page, + // otherwise the app doesn't render it. + // moderatedRoomServiceUrl: 'https://moderated.politictalk.parallelglobe.io', + + // If true, tile view will not be enabled automatically when the participants count threshold is reached. + // disableTileView: true, + + // If true, the tiles will be displayed contained within the available space rather than enlarged to cover it, + // with a 16:9 aspect ratio (old behaviour). + // disableTileEnlargement: true, + + // Controls the visibility and behavior of the top header conference info labels. + // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header. + // conferenceInfo: { + // // those labels will not be hidden in tandem with the toolbox. + // alwaysVisible: ['recording', 'raised-hands-count'], + // // those labels will be auto-hidden in tandem with the toolbox buttons. + // autoHide: [ + // 'subject', + // 'conference-timer', + // 'participants-count', + // 'e2ee', + // 'video-quality', + // 'insecure-room', + // 'highlight-moment', + // 'top-panel-toggle', + // ] + // }, + + // Hides the conference subject + // hideConferenceSubject: false, + + // Hides the conference timer. + // hideConferenceTimer: false, + + // Hides the recording label + // hideRecordingLabel: false, + + // Hides the participants stats + // hideParticipantsStats: true, + + // Sets the conference subject + // subject: 'Conference Subject', + + // Sets the conference local subject + // localSubject: 'Conference Local Subject', + + // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true + // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser + // is not persisting the local storage inside the iframe. + // useHostPageLocalStorage: true, + + // Etherpad ("shared document") integration. + // + // If set, add a "Open shared document" link to the bottom right menu that + // will open an etherpad document. + // etherpad_base: 'https://your-etherpad-installati.on/p/', + + // To enable information about dial-in access to meetings you need to provide + // dialInNumbersUrl and dialInConfCodeUrl. + // dialInNumbersUrl returns a json array of numbers that can be used for dial-in. + // {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"} + // dialInConfCodeUrl is the conference mapper converting a meeting id to a PIN used for dial-in + // or the other way around (more info in resources/cloud-api.swagger) + + // You can use external service for authentication that will redirect back passing a jwt token + // You can use tokenAuthUrl config to point to a URL of such service. + // The URL for the service supports few params which will be filled in by the code. + // tokenAuthUrl: + // 'https://myservice.com/auth/{room}?code_challenge_method=S256&code_challenge={code_challenge}&state={state}' + // Supported parameters in tokenAuthUrl: + // {room} - will be replaced with the room name + // {code_challenge} - (A web only). A oauth 2.0 code challenge that will be sent to the service. See: + // https://datatracker.ietf.org/doc/html/rfc7636. The code verifier will be saved in the sessionStorage + // under key: 'code_verifier'. + // {state} - A json with the current state before redirecting. Keys that are included in the state: + // - room (The current room name as shown in the address bar) + // - roomSafe (the backend safe room name to use (lowercase), that is passed to the backend) + // - tenant (The tenant if any) + // - config.xxx (all config overrides) + // - interfaceConfig.xxx (all interfaceConfig overrides) + // - ios=true (in case ios mobile app is used) + // - android=true (in case android mobile app is used) + // - electron=true (when web is loaded in electron app) + // If there is a logout service you can specify its URL with: + // tokenLogoutUrl: 'https://myservice.com/logout' + // An option to respect the context.tenant jwt field compared to the current tenant from the url + // tokenRespectTenant: false, + // An option to get for user info (name, picture, email) in the token outside the user context. + // Can be used with Firebase tokens. + // tokenGetUserInfoOutOfContext: false, + // An option to pass the token in the iframe API directly instead of using the redirect flow. + // tokenAuthInline: false, + + // You can put an array of values to target different entity types in the invite dialog. + // Valid values are "phone", "room", "sip", "user", "videosipgw" and "email" + // peopleSearchQueryTypes: ["user", "email"], + // Directory endpoint which is called for invite dialog autocomplete + // peopleSearchUrl: "https://myservice.com/api/people", + // Endpoint which is called to send invitation requests + // inviteServiceUrl: "https://myservice.com/api/invite", + + // For external entities (e. g. email), the localStorage key holding the token value for directory authentication + // peopleSearchTokenLocation: "mytoken", + + + // Options related to visitors. + // visitors: { + // // Starts audio/video when the participant is promoted from visitor. + // enableMediaOnPromote: { + // audio: true, + // video: true + // }, + // // Hides the visitor count for visitors. + // // hideVisitorCountForVisitors: false, + // // Whether to show the join meeting dialog when joining as a visitor. + // // showJoinMeetingDialog: true, + // }, + // The default type of desktop sharing sources that will be used in the electron app. + // desktopSharingSources: ['screen', 'window'], + + // Disables the echo cancelation for local audio tracks. + // disableAEC: true, + + // Disables the auto gain control for local audio tracks. + // disableAGC: true, + + // Disables the audio processing (echo cancelation, auto gain control and noise suppression) for local audio tracks. + // disableAP: true, + + // Disables the anoise suppression for local audio tracks. + // disableNS: true, + + // Replaces the display name with the JID of the participants. + // displayJids: true, + + // Enables disables talk while muted detection. + // enableTalkWhileMuted: true, + + // Sets the peer connection ICE transport policy to "relay". + // forceTurnRelay: true, + + // List of undocumented settings used in jitsi-meet + /** + _immediateReloadThreshold + deploymentInfo + dialOutAuthUrl + dialOutCodesUrl + dialOutRegionUrl + disableRemoteControl + iAmRecorder + iAmSipGateway + microsoftApiApplicationClientID + */ + + /** + * This property can be used to alter the generated meeting invite links (in combination with a branding domain + * which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting + * can become https://brandedDomain/roomAlias) + */ + // brandingRoomAlias: null, + + // List of undocumented settings used in lib-jitsi-meet + /** + _peerConnStatusOutOfLastNTimeout + _peerConnStatusRtcMuteTimeout + avgRtpStatsN + desktopSharingSources + disableLocalStats + hiddenDomain + hiddenFromRecorderFeatureEnabled + ignoreStartMuted + websocketKeepAlive + websocketKeepAliveUrl + */ + + /** + * Default interval (milliseconds) for triggering mouseMoved iframe API event + */ + mouseMoveCallbackInterval: 1000, + + /** + Use this array to configure which notifications will be shown to the user + The items correspond to the title or description key of that notification + Some of these notifications also depend on some other internal logic to be displayed or not, + so adding them here will not ensure they will always be displayed + + A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false) + */ + // notifications: [ + // 'connection.CONNFAIL', // shown when the connection fails, + // 'dialog.cameraConstraintFailedError', // shown when the camera failed + // 'dialog.cameraNotSendingData', // shown when there's no feed from user's camera + // 'dialog.kickTitle', // shown when user has been kicked + // 'dialog.liveStreaming', // livestreaming notifications (pending, on, off, limits) + // 'dialog.lockTitle', // shown when setting conference password fails + // 'dialog.maxUsersLimitReached', // shown when maximmum users limit has been reached + // 'dialog.micNotSendingData', // shown when user's mic is not sending any audio + // 'dialog.passwordNotSupportedTitle', // shown when setting conference password fails due to password format + // 'dialog.recording', // recording notifications (pending, on, off, limits) + // 'dialog.remoteControlTitle', // remote control notifications (allowed, denied, start, stop, error) + // 'dialog.reservationError', + // 'dialog.screenSharingFailedTitle', // shown when the screen sharing failed + // 'dialog.serviceUnavailable', // shown when server is not reachable + // 'dialog.sessTerminated', // shown when there is a failed conference session + // 'dialog.sessionRestarted', // show when a client reload is initiated because of bridge migration + // 'dialog.tokenAuthFailed', // show when an invalid jwt is used + // 'dialog.tokenAuthFailedWithReasons', // show when an invalid jwt is used with the reason behind the error + // 'dialog.transcribing', // transcribing notifications (pending, off) + // 'dialOut.statusMessage', // shown when dial out status is updated. + // 'liveStreaming.busy', // shown when livestreaming service is busy + // 'liveStreaming.failedToStart', // shown when livestreaming fails to start + // 'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable + // 'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected + // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied + // 'notify.audioUnmuteBlockedTitle', // shown when mic unmute blocked + // 'notify.chatMessages', // shown when receiving chat messages while the chat window is closed + // 'notify.connectedOneMember', // show when a participant joined + // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously + // 'notify.connectedTwoMembers', // show when two participants joined simultaneously + // 'notify.dataChannelClosed', // shown when the bridge channel has been disconnected + // 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute + // 'notify.invitedOneMember', // shown when 1 participant has been invited + // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited + // 'notify.invitedTwoMembers', // shown when 2 participants have been invited + // 'notify.kickParticipant', // shown when a participant is kicked + // 'notify.leftOneMember', // show when a participant left + // 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously + // 'notify.leftTwoMembers', // show when two participants left simultaneously + // 'notify.linkToSalesforce', // shown when joining a meeting with salesforce integration + // 'notify.localRecordingStarted', // shown when the local recording has been started + // 'notify.localRecordingStopped', // shown when the local recording has been stopped + // 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation + // 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation + // 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation + // 'notify.moderator', // shown when user gets moderator privilege + // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party + // 'notify.mutedTitle', // shown when user has been muted upon joining, + // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device + // 'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera + // 'notify.noiseSuppressionFailedTitle', // shown when failed to start noise suppression + // 'notify.participantWantsToJoin', // shown when lobby is enabled and participant requests to join meeting + // 'notify.participantsWantToJoin', // shown when lobby is enabled and participants request to join meeting + // 'notify.passwordRemovedRemotely', // shown when a password has been removed remotely + // 'notify.passwordSetRemotely', // shown when a password has been set remotely + // 'notify.raisedHand', // shown when a participant used raise hand, + // 'notify.screenShareNoAudio', // shown when the audio could not be shared for the selected screen + // 'notify.screenSharingAudioOnlyTitle', // shown when the best performance has been affected by screen sharing + // 'notify.selfViewTitle', // show "You can always un-hide the self-view from settings" + // 'notify.startSilentTitle', // shown when user joined with no audio + // 'notify.suboptimalExperienceTitle', // show the browser warning + // 'notify.unmute', // shown to moderator when user raises hand during AV moderation + // 'notify.videoMutedRemotelyTitle', // shown when user's video is muted by a remote party, + // 'notify.videoUnmuteBlockedTitle', // shown when camera unmute and desktop sharing are blocked + // 'prejoin.errorDialOut', + // 'prejoin.errorDialOutDisconnected', + // 'prejoin.errorDialOutFailed', + // 'prejoin.errorDialOutStatus', + // 'prejoin.errorStatusCode', + // 'prejoin.errorValidation', + // 'recording.busy', // shown when recording service is busy + // 'recording.failedToStart', // shown when recording fails to start + // 'recording.unavailableTitle', // shown when recording service is not reachable + // 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected + // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone + // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted + // 'transcribing.failed', // shown when transcribing fails + // ], + + // List of notifications to be disabled. Works in tandem with the above setting. + // disabledNotifications: [], + + // Prevent the filmstrip from autohiding when screen width is under a certain threshold + // disableFilmstripAutohiding: false, + + // filmstrip: { + // // Disable the vertical/horizontal filmstrip. + // disabled: false, + // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip + // // (width, tiles aspect ratios) through the interfaceConfig options. + // disableResizable: false, + + // // Disables the stage filmstrip + // // (displaying multiple participants on stage besides the vertical filmstrip) + // disableStageFilmstrip: false, + + // // Default number of participants that can be displayed on stage. + // // The user can change this in settings. Number must be between 1 and 6. + // stageFilmstripParticipants: 1, + + // // Disables the top panel (only shown when a user is sharing their screen). + // disableTopPanel: false, + + // // The minimum number of participants that must be in the call for + // // the top panel layout to be used. + // minParticipantCountForTopPanel: 50, + + // // The width of the filmstrip on joining meeting. Can be resized afterwards. + // initialWidth: 400, + + // // Whether the draggable resize bar of the filmstrip is always visible. Setting this to true will make + // // the filmstrip always visible in case `disableResizable` is false. + // alwaysShowResizeBar: true, + // }, + + // Tile view related config options. + // tileView: { + // // Whether tileview should be disabled. + // disabled: false, + // // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may + // // not be possible to show the exact number of participants specified here. + // numberOfVisibleTiles: 25, + // }, + + // Specifies whether the chat emoticons are disabled or not + // disableChatSmileys: false, + + // Settings for the GIPHY integration. + // giphy: { + // // Whether the feature is enabled or not. + // enabled: false, + // // SDK API Key from Giphy. + // sdkKey: '', + // // Display mode can be one of: + // // - tile: show the GIF on the tile of the participant that sent it. + // // - chat: show the GIF as a message in chat + // // - all: all of the above. This is the default option + // displayMode: 'all', + // // How long the GIF should be displayed on the tile (in milliseconds). + // tileTime: 5000, + // // Limit results by rating: g, pg, pg-13, r. Default value: g. + // rating: 'pg', + // }, + + // Logging + // logging: { + // // Default log level for the app and lib-jitsi-meet. + // defaultLogLevel: 'trace', + // // Option to disable LogCollector. + // //disableLogCollector: true, + // // Individual loggers are customizable. + // loggers: { + // // The following are too verbose in their logging with the default level. + // 'modules/RTC/TraceablePeerConnection.js': 'info', + // 'modules/xmpp/strophe.util.js': 'log', + // }, + // }, + + // Application logo url + defaultLogoUrl: '/_api/public/politictalk/pgLogo.svg', + + // Settings for the Excalidraw whiteboard integration. + // whiteboard: { + // // Whether the feature is enabled or not. + // enabled: true, + // // The server used to support whiteboard collaboration. + // // https://github.com/jitsi/excalidraw-backend + // collabServerBaseUrl: 'https://excalidraw-backend.example.com', + // // The user access limit to the whiteboard, introduced as a means + // // to control the performance. + // userLimit: 25, + // // The url for more info about the whiteboard and its usage limitations. + // limitUrl: 'https://example.com/blog/whiteboard-limits', + // }, + + // The watchRTC initialize config params as described : + // https://testrtc.com/docs/installing-the-watchrtc-javascript-sdk/#h-set-up-the-sdk + // https://www.npmjs.com/package/@testrtc/watchrtc-sdk + // watchRTCConfigParams: { + // /** Watchrtc api key */ + // rtcApiKey: string; + // /** Identifier for the session */ + // rtcRoomId?: string; + // /** Identifier for the current peer */ + // rtcPeerId?: string; + // /** + // * ["tag1", "tag2", "tag3"] + // * @deprecated use 'keys' instead + // */ + // rtcTags?: string[]; + // /** { "key1": "value1", "key2": "value2"} */ + // keys?: any; + // /** Enables additional logging */ + // debug?: boolean; + // rtcToken?: string; + // /** + // * @deprecated No longer needed. Use "proxyUrl" instead. + // */ + // wsUrl?: string; + // proxyUrl?: string; + // console?: { + // level: string; + // override: boolean; + // }; + // allowBrowserLogCollection?: boolean; + // collectionInterval?: number; + // logGetStats?: boolean; + // }, + + // Hide login button on auth dialog, you may want to enable this if you are using JWT tokens to authenticate users + // hideLoginButton: true, + + // If true remove the tint foreground on focused user camera in filmstrip + // disableCameraTintForeground: false, + + // File sharign service. + // fileSharing: { + // // The URL of the file sharing service API. See resources/file-sharing.yaml for more details. + // apiUrl: 'https://example.com', + // // Whether the file sharing service is enabled or not. + // enabled: true, + // // Maximum file size limit (-1 value disables any file size limit check) + // maxFileSize: 50, + // }, +}; + +// Set the default values for JaaS customers +if (enableJaaS) { + config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids'; + config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access'; + config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment) +} diff --git a/nginx/politictalk.parallelglobe.io.conf b/nginx/politictalk.parallelglobe.io.conf new file mode 100644 index 0000000..3b3006b --- /dev/null +++ b/nginx/politictalk.parallelglobe.io.conf @@ -0,0 +1,244 @@ +server_names_hash_bucket_size 64; + +types { +# nginx's default mime.types doesn't include a mapping for wasm or wav. + application/wasm wasm; + audio/wav wav; +} +upstream prosody { + zone upstreams 64K; + server 127.0.0.1:5280; + keepalive 2; +} +upstream jvb1 { + zone upstreams 64K; + server 127.0.0.1:9090; + keepalive 2; +} +map $arg_vnode $prosody_node { + default prosody; + v1 v1; + v2 v2; + v3 v3; + v4 v4; + v5 v5; + v6 v6; + v7 v7; + v8 v8; +} +# Matches any URI or Referer with some matches and redacts the whole +# query string. log_format and map must be at the http context level. +map $request_uri $loggable_uri { + ~^(?P[^?]*)\?.*(?:jwt|token)= "${path}?[params_redacted]"; + default $request_uri; +} + +map $http_referer $loggable_referer { + ~^(?P[^?]*)\?.*(?:jwt|token)= "${url}?[params_redacted]"; + default $http_referer; +} + +log_format jitsi_log '$remote_addr - $remote_user [$time_local] ' + '"$request_method $loggable_uri $server_protocol" ' + '$status $body_bytes_sent "$loggable_referer" "$http_user_agent"'; + +server { + listen 80; + listen [::]:80; + server_name politictalk.parallelglobe.io; + + location ^~ /.well-known/acme-challenge/ { + default_type "text/plain"; + root /usr/share/jitsi-meet; + } + location = /.well-known/acme-challenge/ { + return 404; + } + location / { + return 301 https://$host$request_uri; + } +} +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name politictalk.parallelglobe.io; + + # Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; + ssl_prefer_server_ciphers off; + + ssl_session_timeout 1d; + ssl_session_cache shared:SSL:10m; # about 40000 sessions + ssl_session_tickets off; + + add_header Strict-Transport-Security "max-age=63072000" always; + set $prefix ""; + set $custom_index ""; + set $config_js_location /etc/jitsi/meet/politictalk.parallelglobe.io-config.js; + + ssl_certificate /etc/jitsi/meet/politictalk.parallelglobe.io.crt; + ssl_certificate_key /etc/jitsi/meet/politictalk.parallelglobe.io.key; + + root /usr/share/jitsi-meet; + + access_log /var/log/nginx/access.log jitsi_log; + + # ssi on with javascript for multidomain variables in config.js + ssi on; + ssi_types application/x-javascript application/javascript; + + index index.html index.htm; + error_page 404 /static/404.html; + + gzip on; + gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm; + gzip_vary on; + gzip_proxied no-cache no-store private expired auth; + gzip_min_length 512; + + include /etc/jitsi/meet/jaas/*.conf; + + location = /config.js { + alias $config_js_location; + } + + location = /external_api.js { + alias /usr/share/jitsi-meet/libs/external_api.min.js; + } + + location = /_api/room-info { + proxy_pass http://prosody/room-info?prefix=$prefix&$args; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + } + + location ~ ^/_api/public/(.*)$ { + autoindex off; + alias /etc/jitsi/meet/public/$1; + } + + # ensure all static content can always be found first + location ~ ^/(libs|css|static|images|fonts|lang|sounds|.well-known)/(.*)$ + { + add_header 'Access-Control-Allow-Origin' '*'; + alias /usr/share/jitsi-meet/$1/$2; + + # cache all versioned files + if ($arg_v) { + expires 1y; + } + } + + # BOSH + location = /http-bind { + proxy_pass http://$prosody_node/http-bind?prefix=$prefix&$args; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + proxy_set_header Connection ""; + } + + # xmpp websockets + location = /xmpp-websocket { + proxy_pass http://$prosody_node/xmpp-websocket?prefix=$prefix&$args; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + tcp_nodelay on; + } + + # colibri (JVB) websockets for jvb1 + location ~ ^/colibri-ws/default-id/(.*) { + proxy_pass http://jvb1/colibri-ws/default-id/$1$is_args$args; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + tcp_nodelay on; + } + + # load test minimal client, uncomment when used + #location ~ ^/_load-test/([^/?&:'"]+)$ { + # rewrite ^/_load-test/(.*)$ /load-test/index.html break; + #} + #location ~ ^/_load-test/libs/(.*)$ { + # add_header 'Access-Control-Allow-Origin' '*'; + # alias /usr/share/jitsi-meet/load-test/libs/$1; + #} + + location = /_unlock { + add_header 'Access-Control-Allow-Origin' '*'; + add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains'; + add_header "Cache-Control" "no-cache, no-store"; + } + + location ~ ^/conference-request/v1(\/.*)?$ { + proxy_pass http://127.0.0.1:8888/conference-request/v1$1; + add_header "Cache-Control" "no-cache, no-store"; + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Content-Type'; + } + location ~ ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ { + rewrite ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ /conference-request/v1$2; + } + + location ~ ^/([^/?&:'"]+)$ { + set $roomname "$1"; + try_files $uri @root_path; + } + + location @root_path { + rewrite ^/(.*)$ /$custom_index break; + } + + location ~ ^/([^/?&:'"]+)/config.js$ + { + set $subdomain "$1."; + set $subdir "$1/"; + + alias $config_js_location; + } + + # Matches /(TENANT)/pwa-worker.js or /(TENANT)/manifest.json to rewrite to / and look for file + location ~ ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ { + set $subdomain "$1."; + set $subdir "$1/"; + rewrite ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ /$2; + } + + # BOSH for subdomains + location ~ ^/([^/?&:'"]+)/http-bind { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /http-bind; + } + + # websockets for subdomains + location ~ ^/([^/?&:'"]+)/xmpp-websocket { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /xmpp-websocket; + } + + location ~ ^/([^/?&:'"]+)/_api/room-info { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /_api/room-info; + } + + # Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to / + location ~ ^/([^/?&:'"]+)/(.*)$ { + set $subdomain "$1."; + set $subdir "$1/"; + rewrite ^/([^/?&:'"]+)/(.*)$ /$2; + } +} \ No newline at end of file diff --git a/scripts/deploy-vps.sh b/scripts/deploy-vps.sh new file mode 100755 index 0000000..4e007d2 --- /dev/null +++ b/scripts/deploy-vps.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail + +DOMAIN="${DOMAIN:-politictalk.parallelglobe.io}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +JITSI_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +BACKUP_ROOT="${BACKUP_ROOT:-/root/jitsi-backups}" +STAMP="$(date +%Y%m%d-%H%M%S)" +BACKUP_DIR="$BACKUP_ROOT/$STAMP" + +CONFIG_SRC="$JITSI_DIR/config/$DOMAIN-config.js" +ASSETS_SRC="$JITSI_DIR/assets/public/politictalk" +NGINX_SRC="$JITSI_DIR/nginx/$DOMAIN.conf" + +CONFIG_DEST="/etc/jitsi/meet/$DOMAIN-config.js" +ASSETS_DEST="/etc/jitsi/meet/public/politictalk" +NGINX_DEST="/etc/nginx/sites-available/$DOMAIN.conf" + +if [[ "$(id -u)" -ne 0 ]]; then + echo "Run this script with sudo on the VPS." + exit 1 +fi + +if [[ ! -f "$CONFIG_SRC" ]]; then + echo "Missing config source: $CONFIG_SRC" + exit 1 +fi + +if [[ ! -d "$ASSETS_SRC" ]]; then + echo "Missing assets source: $ASSETS_SRC" + exit 1 +fi + +install -d -m 0755 "$BACKUP_DIR" + +if [[ -f "$CONFIG_DEST" ]]; then + cp -a "$CONFIG_DEST" "$BACKUP_DIR/" +fi + +if [[ -d "$ASSETS_DEST" ]]; then + install -d -m 0755 "$BACKUP_DIR/public" + cp -a "$ASSETS_DEST" "$BACKUP_DIR/public/" +fi + +if [[ "${DEPLOY_NGINX:-0}" == "1" && -f "$NGINX_DEST" ]]; then + cp -a "$NGINX_DEST" "$BACKUP_DIR/" +fi + +install -d -m 0755 "$ASSETS_DEST" +install -m 0644 "$CONFIG_SRC" "$CONFIG_DEST" +find "$ASSETS_SRC" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do + install -m 0644 "$file" "$ASSETS_DEST/" +done + +if [[ "${DEPLOY_NGINX:-0}" == "1" ]]; then + if [[ ! -f "$NGINX_SRC" ]]; then + echo "Missing nginx source: $NGINX_SRC" + exit 1 + fi + install -m 0644 "$NGINX_SRC" "$NGINX_DEST" + nginx -t +fi + +systemctl reload nginx + +echo "Deployed PoliticTalk Jitsi files." +echo "Backup: $BACKUP_DIR" diff --git a/templates/auth-roadmap.md b/templates/auth-roadmap.md new file mode 100644 index 0000000..62fae5b --- /dev/null +++ b/templates/auth-roadmap.md @@ -0,0 +1,33 @@ +# PoliticTalk Jitsi Auth Roadmap + +These notes are intentionally not deployed yet. They describe the local files and app changes we should add when we connect PgApi authentication to Jitsi. + +## Target Flow + +```text +PgPlatform calendar event + -> PgPlatform PoliticTalk prejoin page + -> PgApi verifies logged-in user, event ownership/invite/access, and event time window + -> PgApi returns a short-lived Jitsi JWT + -> PgPlatform embeds or opens Jitsi with that JWT + -> Jitsi VPS validates JWT through Prosody token auth +``` + +## Local Files To Add Later + +```text +jitsi/templates/prosody-token-auth.cfg.lua.example +jitsi/templates/jicofo-token-auth.conf.example +jitsi/templates/jitsi-token-auth.env.example +``` + +Only templates should be committed. Real JWT secrets must stay in VPS-only files. + +## Platform Changes To Add Later + +- PgApi endpoint to issue Jitsi JWTs for valid PoliticTalk event access. +- JWT claims for room, user display name, email/id, moderator flag, expiry, and feature permissions. +- PgPlatform prejoin route that shows event title and immutable platform user name. +- PgPlatform embedded Jitsi room using the IFrame API. +- Moderator-only controls for audio moderation and poll permissions. +- Event end-time enforcement through JWT expiry and/or iframe hangup. diff --git a/templates/deploy.env.example b/templates/deploy.env.example new file mode 100644 index 0000000..64bd015 --- /dev/null +++ b/templates/deploy.env.example @@ -0,0 +1,8 @@ +# Optional variables for jitsi/scripts/deploy-vps.sh. +# Copy this to a VPS-only location if needed. Do not commit real secrets. + +DOMAIN=politictalk.parallelglobe.io +BACKUP_ROOT=/root/jitsi-backups + +# Set to 1 only when intentionally replacing the nginx vhost config. +DEPLOY_NGINX=0