[__jitsi_meet_domain] Updated version and fixed branding issues

commit 80599bb91a63cef61c00900c97ea89d7ab8cb799
Author: Evilham <cvs@evilham.com>
Date:   Thu Apr 29 20:36:11 2021 +0200

    [__jitsi_meet_video] Fix shellcheck

commit 6d25c36c01ba76a0465f2cc676b8205f09bf1160
Author: pedrolab <531310-pedrolab@users.noreply.gitlab.com>
Date:   Wed Apr 28 22:02:31 2021 +0200

    [__jitsi_meet_domain] config.js to 2.0.5765-1

    thanks @evilham

commit e60a46f8d2124859ce2ea4a6fbe8e7d37deef3d6
Author: pedrolab <531310-pedrolab@users.noreply.gitlab.com>
Date:   Wed Apr 28 22:00:13 2021 +0200

    [__jitsi_meet_domain] fixes #4 branding
This commit is contained in:
evilham 2021-04-29 20:43:22 +02:00
parent 5581cbabf9
commit c3dbbc9d0d
4 changed files with 381 additions and 103 deletions

View file

@ -18,14 +18,11 @@ var config = {
// Domain for authenticated users. Defaults to <domain>. // Domain for authenticated users. Defaults to <domain>.
// authdomain: '${JITSI_HOST}', // authdomain: '${JITSI_HOST}',
// Call control component (Jigasi).
// call_control: 'callcontrol.${JITSI_HOST}',
// Focus component domain. Defaults to focus.<domain>. // Focus component domain. Defaults to focus.<domain>.
// focus: 'focus.${JITSI_HOST}', // focus: 'focus.${JITSI_HOST}',
// XMPP MUC domain. FIXME: use XEP-0030 to discover it. // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
muc: 'conference.<!--# echo var="subdomain" default="" -->${JITSI_HOST}' muc: 'conference.${JITSI_HOST}'
}, },
// BOSH URL. FIXME: use XEP-0156 to discover it. // BOSH URL. FIXME: use XEP-0156 to discover it.
@ -98,6 +95,11 @@ var config = {
// input and will suggest another valid device if one is present. // input and will suggest another valid device if one is present.
enableNoAudioDetection: true, 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 run the lib-jitsi-meet noise detection module which will // 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 // 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 // selected microphone. The purpose it to let the user know that the input could
@ -124,8 +126,8 @@ var config = {
// Valid values are in the range 6000 to 510000 // Valid values are in the range 6000 to 510000
// opusMaxAverageBitrate: 20000, // opusMaxAverageBitrate: 20000,
// Enables redundancy for Opus // Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false // enableOpusRed: false,
// Video // Video
@ -243,6 +245,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// 90: 2 // 90: 2
// }, // },
// Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
// 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message
// that invokes the new bandwidth allocation algorithm in the bridge which is described here
// - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md.
// useNewBandwidthAllocationStrategy: false,
// Specify the settings for video quality optimizations on the client. // Specify the settings for video quality optimizations on the client.
// videoQuality: { // videoQuality: {
// // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified
@ -264,10 +272,17 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// // the available bandwidth calculated by the browser, but it will be capped by the values specified here. // // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
// // This is currently not implemented on app based clients on mobile. // // This is currently not implemented on app based clients on mobile.
// maxBitratesVideo: { // maxBitratesVideo: {
// VP8 : {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
// high: 1500000 // high: 1500000
// }, // },
// VP9: {
// low: 100000,
// standard: 300000,
// high: 1200000
// }
// },
// //
// // The options can be used to override default thresholds of video thumbnail heights corresponding to // // 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: // // the video quality levels used in the application. At the time of this writing the allowed levels are:
@ -280,9 +295,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to
// // the high quality. // // the high quality.
// minHeightForQualityLvl: { // minHeightForQualityLvl: {
// 360: 'standard, // 360: 'standard',
// 720: 'high' // 720: 'high'
// } // },
//
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
// // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false
// }, // },
// // Options for the recording limit notification. // // Options for the recording limit notification.
@ -303,18 +322,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Disables or enables RTX (RFC 4588) (defaults to false). // Disables or enables RTX (RFC 4588) (defaults to false).
// disableRtx: false, // disableRtx: false,
// Disables or enables TCC (the default is in Jicofo and set to true) // Disables or enables TCC support in this client (default: enabled).
// (draft-holmer-rmcat-transport-wide-cc-extensions-01). This setting
// affects congestion control, it practically enables send-side bandwidth
// estimations.
// enableTcc: true, // enableTcc: true,
// Disables or enables REMB (the default is in Jicofo and set to false) // Disables or enables REMB support in this client (default: enabled).
// (draft-alvestrand-rmcat-remb-03). This setting affects congestion // enableRemb: true,
// control, it practically enables recv-side bandwidth estimations. When
// both TCC and REMB are enabled, TCC takes precedence. When both are
// disabled, then bandwidth estimations are disabled.
// enableRemb: false,
// Enables ICE restart logic in LJM and displays the page reload overlay on // Enables ICE restart logic in LJM and displays the page reload overlay on
// ICE failure. Current disabled by default because it's causing issues with // ICE failure. Current disabled by default because it's causing issues with
@ -324,26 +336,22 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// TCC sequence numbers starting from 0. // TCC sequence numbers starting from 0.
// enableIceRestart: false, // enableIceRestart: false,
// Defines the minimum number of participants to start a call (the default // Enables forced reload of the client when the call is migrated as a result of
// is set in Jicofo and set to 2). // the bridge going down. Currently enabled by default as call migration through
// minParticipants: 2, // session-terminate is causing siganling issues when Octo is enabled.
// enableForcedReload: true,
// Use TURN/UDP servers for the jitsi-videobridge connection (by default // Use TURN/UDP servers for the jitsi-videobridge connection (by default
// we filter out TURN/UDP because it is usually not needed since the // we filter out TURN/UDP because it is usually not needed since the
// bridge itself is reachable via UDP) // bridge itself is reachable via UDP)
// useTurnUdp: false // useTurnUdp: false
// Enables / disables a data communication channel with the Videobridge.
// Values can be 'datachannel', 'websocket', true (treat it as
// 'datachannel'), undefined (treat it as 'datachannel') and false (don't
// open any channel).
// openBridgeChannel: true,
openBridgeChannel: 'websocket',
// UI // UI
// //
// Disables responsive tiles.
// disableResponsiveTiles: false,
// Hides lobby button // Hides lobby button
// hideLobbyButton: false, // hideLobbyButton: false,
@ -354,6 +362,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// will be joined when no room is specified. // will be joined when no room is specified.
enableWelcomePage: true, enableWelcomePage: true,
// 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 // Enabling the close page will ignore the welcome page redirection when
// a call is hangup. // a call is hangup.
// enableClosePage: false, // enableClosePage: false,
@ -364,17 +379,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Default language for the user interface. // Default language for the user interface.
defaultLanguage: '${DEFAULT_LANGUAGE}', defaultLanguage: '${DEFAULT_LANGUAGE}',
// If true all users without a token will be considered guests and all users // Disables profile and the edit of all fields from the profile settings (display name and email)
// with token will be considered non-guests. Only guests will be allowed to // disableProfile: false,
// edit their profile.
enableUserRolesBasedOnToken: false,
// Whether or not some features are checked based on token. // Whether or not some features are checked based on token.
// enableFeaturesBasedOnToken: false, // enableFeaturesBasedOnToken: false,
// Enable lock room for all moderators, even when userRolesBasedOnToken is enabled and participants are guests.
// lockRoomGuestEnabled: false,
// When enabled the password used for locking a room is restricted to up to the number of digits specified // When enabled the password used for locking a room is restricted to up to the number of digits specified
// roomPasswordNumberOfDigits: 10, // roomPasswordNumberOfDigits: 10,
// default: roomPasswordNumberOfDigits: false, // default: roomPasswordNumberOfDigits: false,
@ -390,6 +400,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// When 'true', it shows an intermediate page before joining, where the user can configure their devices. // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// prejoinPageEnabled: false, // prejoinPageEnabled: 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 // 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 // deemed unsafe (due to the simplicity in the name) and a password is not
// set or the lobby is not enabled. // set or the lobby is not enabled.
@ -399,6 +416,28 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Document should be focused for this option to work // Document should be focused for this option to work
// enableAutomaticUrlCopy: false, // enableAutomaticUrlCopy: false,
// Base URL for a Gravatar-compatible service. Defaults to libravatar.
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
// 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 impossible to choose which buttons go in the "More actions" menu
// - it's impossible to control the placement of buttons
// - 'desktop' controls the "Share your screen" button
// - if \`toolbarButtons\` is undefined, we fallback to enabling all buttons on the UI
// toolbarButtons: [
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
// 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand',
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security'
// ],
// Stats // Stats
// //
@ -422,6 +461,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Enables sending participants' emails (if available) to callstats and other analytics // Enables sending participants' emails (if available) to callstats and other analytics
// enableEmailInStats: false, // enableEmailInStats: false,
// Controls the percentage of automatic feedback shown to participants when callstats is enabled.
// The default value is 100%. If set to 0, no automatic feedback will be requested
// feedbackPercentage: 100,
// Privacy // Privacy
// //
@ -459,7 +502,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// If set to true, it will prefer to use H.264 for P2P calls (if H.264 // If set to true, it will prefer to use H.264 for P2P calls (if H.264
// is supported). This setting is deprecated, use preferredCodec instead. // is supported). This setting is deprecated, use preferredCodec instead.
// preferH264: true // preferH264: true,
// Provides a way to set the video codec preference on the p2p connection. Acceptable // Provides a way to set the video codec preference on the p2p connection. Acceptable
// codec values are 'VP8', 'VP9' and 'H264'. // codec values are 'VP8', 'VP9' and 'H264'.
@ -501,7 +544,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// The interval at which rtcstats will poll getStats, defaults to 1000ms. // The interval at which rtcstats will poll getStats, defaults to 1000ms.
// If the value is set to 0 getStats won't be polled and the rtcstats client // If the value is set to 0 getStats won't be polled and the rtcstats client
// will only send data related to RTCPeerConnection events. // will only send data related to RTCPeerConnection events.
// rtcstatsPolIInterval: 1000 // rtcstatsPolIInterval: 1000,
// Array of script URLs to load as lib-jitsi-meet "analytics handlers". // Array of script URLs to load as lib-jitsi-meet "analytics handlers".
// scriptURLs: [ // scriptURLs: [
@ -524,6 +567,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Decides whether the start/stop recording audio notifications should play on record. // Decides whether the start/stop recording audio notifications should play on record.
// disableRecordAudioNotification: false, // disableRecordAudioNotification: false,
// 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,
// Information for the chrome extension banner // Information for the chrome extension banner
// chromeExtensionBanner: { // chromeExtensionBanner: {
// // The chrome extension to be installed address // // The chrome extension to be installed address
@ -583,6 +630,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// the menu has option to flip the locally seen video for local presentations // the menu has option to flip the locally seen video for local presentations
// disableLocalVideoFlip: false, // disableLocalVideoFlip: false,
// 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 // Mainly privacy related settings
// Disables all invite functions from the app (share, invite, dial out...etc) // Disables all invite functions from the app (share, invite, dial out...etc)
@ -610,6 +661,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// If set to true all muting operations of remote participants will be disabled. // If set to true all muting operations of remote participants will be disabled.
// disableRemoteMute: true, // disableRemoteMute: true,
// Enables support for lip-sync for this client (if the browser supports it).
// enableLipSync: false
/** /**
External API url used to receive branding specific information. External API url used to receive branding specific information.
If there is no url set or there are missing fields, the defaults are applied. If there is no url set or there are missing fields, the defaults are applied.
@ -625,12 +679,35 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
logoImageUrl: 'https://example.com/logo-img.png' logoImageUrl: 'https://example.com/logo-img.png'
} }
*/ */
brandingDataUrl: "$(if [ -n "${BRANDING_JSON}" ]; then printf "/branding.json"; fi)", dynamicBrandingUrl: "${DYNAMIC_BRANDING_URL}",
// 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 // 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, // is present, a link to the service will be rendered on the welcome page,
// otherwise the app doesn't render it. // otherwise the app doesn't render it.
// moderatedRoomServiceUrl: 'https://moderated.${JITSI_HOST}', // moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.com',
// If true, tile view will not be enabled automatically when the participants count threshold is reached.
// disableTileView: true,
// Hides the conference subject
// hideConferenceSubject: true,
// Hides the conference timer.
// hideConferenceTimer: true,
// Hides the participants stats
// hideParticipantsStats: true,
// Sets the conference subject
// subject: 'Conference 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,
// List of undocumented settings used in jitsi-meet // List of undocumented settings used in jitsi-meet
/** /**
@ -678,15 +755,75 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
disableAP disableAP
disableHPF disableHPF
disableNS disableNS
enableLipSync
enableTalkWhileMuted enableTalkWhileMuted
forceJVB121Ratio forceJVB121Ratio
forceTurnRelay
hiddenDomain hiddenDomain
ignoreStartMuted ignoreStartMuted
nick websocketKeepAlive
startBitrate websocketKeepAliveUrl
*/ */
/**
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.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.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.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
// 'localRecording.localRecording', // shown when a local recording is started
// 'notify.disconnected', // shown when a participant has left
// 'notify.grantedTo', // shown when moderator rights were granted to a participant
// '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.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.passwordRemovedRemotely', // shown when a password has been removed remotely
// 'notify.passwordSetRemotely', // shown when a password has been set remotely
// 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio
// '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.failedToStart' // shown when transcribing fails to start
// ]
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.

View file

@ -6,29 +6,26 @@ var config = {
hosts: { hosts: {
// XMPP domain. // XMPP domain.
domain: 'jitsi-meet.example.org', domain: 'jitsi-meet.example.com',
// When using authentication, domain for guest users. // When using authentication, domain for guest users.
// anonymousdomain: 'guest.example.com', // anonymousdomain: 'guest.example.com',
// Domain for authenticated users. Defaults to <domain>. // Domain for authenticated users. Defaults to <domain>.
// authdomain: 'jitsi-meet.example.org', // authdomain: 'jitsi-meet.example.com',
// Call control component (Jigasi).
// call_control: 'callcontrol.jitsi-meet.example.org',
// Focus component domain. Defaults to focus.<domain>. // Focus component domain. Defaults to focus.<domain>.
// focus: 'focus.jitsi-meet.example.org', // focus: 'focus.jitsi-meet.example.com',
// XMPP MUC domain. FIXME: use XEP-0030 to discover it. // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
muc: 'conference.<!--# echo var="subdomain" default="" -->jitsi-meet.example.org' muc: 'conference.jitsi-meet.example.com'
}, },
// BOSH URL. FIXME: use XEP-0156 to discover it. // BOSH URL. FIXME: use XEP-0156 to discover it.
bosh: '//jitsi-meet.example.org/http-bind', bosh: '//jitsi-meet.example.com/http-bind',
// Websocket URL // Websocket URL
// websocket: 'wss://jitsi-meet.example.org/xmpp-websocket', // websocket: 'wss://jitsi-meet.example.com/xmpp-websocket',
// The name of client node advertised in XEP-0115 'c' stanza // The name of client node advertised in XEP-0115 'c' stanza
clientNode: 'http://jitsi.org/jitsimeet', clientNode: 'http://jitsi.org/jitsimeet',
@ -36,7 +33,7 @@ var config = {
// The real JID of focus participant - can be overridden here // The real JID of focus participant - can be overridden here
// Do not change username - FIXME: Make focus username configurable // Do not change username - FIXME: Make focus username configurable
// https://github.com/jitsi/jitsi-meet/issues/7376 // https://github.com/jitsi/jitsi-meet/issues/7376
// focusUserJid: 'focus@auth.jitsi-meet.example.org', // focusUserJid: 'focus@auth.jitsi-meet.example.com',
// Testing / experimental features. // Testing / experimental features.
@ -94,6 +91,11 @@ var config = {
// input and will suggest another valid device if one is present. // input and will suggest another valid device if one is present.
enableNoAudioDetection: true, 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 run the lib-jitsi-meet noise detection module which will // 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 // 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 // selected microphone. The purpose it to let the user know that the input could
@ -120,8 +122,8 @@ var config = {
// Valid values are in the range 6000 to 510000 // Valid values are in the range 6000 to 510000
// opusMaxAverageBitrate: 20000, // opusMaxAverageBitrate: 20000,
// Enables redundancy for Opus // Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false // enableOpusRed: false,
// Video // Video
@ -193,9 +195,9 @@ var config = {
// appKey: '<APP_KEY>' // Specify your app key here. // appKey: '<APP_KEY>' // Specify your app key here.
// // A URL to redirect the user to, after authenticating // // A URL to redirect the user to, after authenticating
// // by default uses: // // by default uses:
// // 'https://jitsi-meet.example.org/static/oauth.html' // // 'https://jitsi-meet.example.com/static/oauth.html'
// redirectURI: // redirectURI:
// 'https://jitsi-meet.example.org/subfolder/static/oauth.html' // 'https://jitsi-meet.example.com/subfolder/static/oauth.html'
// }, // },
// When integrations like dropbox are enabled only that will be shown, // When integrations like dropbox are enabled only that will be shown,
// by enabling fileRecordingsServiceEnabled, we show both the integrations // by enabling fileRecordingsServiceEnabled, we show both the integrations
@ -238,6 +240,12 @@ var config = {
// 90: 2 // 90: 2
// }, // },
// Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
// 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message
// that invokes the new bandwidth allocation algorithm in the bridge which is described here
// - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md.
// useNewBandwidthAllocationStrategy: false,
// Specify the settings for video quality optimizations on the client. // Specify the settings for video quality optimizations on the client.
// videoQuality: { // videoQuality: {
// // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified
@ -259,10 +267,17 @@ var config = {
// // the available bandwidth calculated by the browser, but it will be capped by the values specified here. // // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
// // This is currently not implemented on app based clients on mobile. // // This is currently not implemented on app based clients on mobile.
// maxBitratesVideo: { // maxBitratesVideo: {
// VP8 : {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
// high: 1500000 // high: 1500000
// }, // },
// VP9: {
// low: 100000,
// standard: 300000,
// high: 1200000
// }
// },
// //
// // The options can be used to override default thresholds of video thumbnail heights corresponding to // // 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: // // the video quality levels used in the application. At the time of this writing the allowed levels are:
@ -275,9 +290,13 @@ var config = {
// // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to
// // the high quality. // // the high quality.
// minHeightForQualityLvl: { // minHeightForQualityLvl: {
// 360: 'standard, // 360: 'standard',
// 720: 'high' // 720: 'high'
// } // },
//
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
// // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false
// }, // },
// // Options for the recording limit notification. // // Options for the recording limit notification.
@ -298,18 +317,11 @@ var config = {
// Disables or enables RTX (RFC 4588) (defaults to false). // Disables or enables RTX (RFC 4588) (defaults to false).
// disableRtx: false, // disableRtx: false,
// Disables or enables TCC (the default is in Jicofo and set to true) // Disables or enables TCC support in this client (default: enabled).
// (draft-holmer-rmcat-transport-wide-cc-extensions-01). This setting
// affects congestion control, it practically enables send-side bandwidth
// estimations.
// enableTcc: true, // enableTcc: true,
// Disables or enables REMB (the default is in Jicofo and set to false) // Disables or enables REMB support in this client (default: enabled).
// (draft-alvestrand-rmcat-remb-03). This setting affects congestion // enableRemb: true,
// control, it practically enables recv-side bandwidth estimations. When
// both TCC and REMB are enabled, TCC takes precedence. When both are
// disabled, then bandwidth estimations are disabled.
// enableRemb: false,
// Enables ICE restart logic in LJM and displays the page reload overlay on // Enables ICE restart logic in LJM and displays the page reload overlay on
// ICE failure. Current disabled by default because it's causing issues with // ICE failure. Current disabled by default because it's causing issues with
@ -319,26 +331,22 @@ var config = {
// TCC sequence numbers starting from 0. // TCC sequence numbers starting from 0.
// enableIceRestart: false, // enableIceRestart: false,
// Defines the minimum number of participants to start a call (the default // Enables forced reload of the client when the call is migrated as a result of
// is set in Jicofo and set to 2). // the bridge going down. Currently enabled by default as call migration through
// minParticipants: 2, // session-terminate is causing siganling issues when Octo is enabled.
// enableForcedReload: true,
// Use TURN/UDP servers for the jitsi-videobridge connection (by default // Use TURN/UDP servers for the jitsi-videobridge connection (by default
// we filter out TURN/UDP because it is usually not needed since the // we filter out TURN/UDP because it is usually not needed since the
// bridge itself is reachable via UDP) // bridge itself is reachable via UDP)
// useTurnUdp: false // useTurnUdp: false
// Enables / disables a data communication channel with the Videobridge.
// Values can be 'datachannel', 'websocket', true (treat it as
// 'datachannel'), undefined (treat it as 'datachannel') and false (don't
// open any channel).
// openBridgeChannel: true,
openBridgeChannel: 'websocket',
// UI // UI
// //
// Disables responsive tiles.
// disableResponsiveTiles: false,
// Hides lobby button // Hides lobby button
// hideLobbyButton: false, // hideLobbyButton: false,
@ -349,6 +357,13 @@ var config = {
// will be joined when no room is specified. // will be joined when no room is specified.
enableWelcomePage: true, enableWelcomePage: true,
// 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 // Enabling the close page will ignore the welcome page redirection when
// a call is hangup. // a call is hangup.
// enableClosePage: false, // enableClosePage: false,
@ -359,17 +374,12 @@ var config = {
// Default language for the user interface. // Default language for the user interface.
// defaultLanguage: 'en', // defaultLanguage: 'en',
// If true all users without a token will be considered guests and all users // Disables profile and the edit of all fields from the profile settings (display name and email)
// with token will be considered non-guests. Only guests will be allowed to // disableProfile: false,
// edit their profile.
enableUserRolesBasedOnToken: false,
// Whether or not some features are checked based on token. // Whether or not some features are checked based on token.
// enableFeaturesBasedOnToken: false, // enableFeaturesBasedOnToken: false,
// Enable lock room for all moderators, even when userRolesBasedOnToken is enabled and participants are guests.
// lockRoomGuestEnabled: false,
// When enabled the password used for locking a room is restricted to up to the number of digits specified // When enabled the password used for locking a room is restricted to up to the number of digits specified
// roomPasswordNumberOfDigits: 10, // roomPasswordNumberOfDigits: 10,
// default: roomPasswordNumberOfDigits: false, // default: roomPasswordNumberOfDigits: false,
@ -385,6 +395,13 @@ var config = {
// When 'true', it shows an intermediate page before joining, where the user can configure their devices. // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// prejoinPageEnabled: false, // prejoinPageEnabled: 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 // 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 // deemed unsafe (due to the simplicity in the name) and a password is not
// set or the lobby is not enabled. // set or the lobby is not enabled.
@ -394,6 +411,28 @@ var config = {
// Document should be focused for this option to work // Document should be focused for this option to work
// enableAutomaticUrlCopy: false, // enableAutomaticUrlCopy: false,
// Base URL for a Gravatar-compatible service. Defaults to libravatar.
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
// 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 impossible to choose which buttons go in the "More actions" menu
// - it's impossible to control the placement of buttons
// - 'desktop' controls the "Share your screen" button
// - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI
// toolbarButtons: [
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
// 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand',
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security'
// ],
// Stats // Stats
// //
@ -417,6 +456,10 @@ var config = {
// Enables sending participants' emails (if available) to callstats and other analytics // Enables sending participants' emails (if available) to callstats and other analytics
// enableEmailInStats: false, // enableEmailInStats: false,
// Controls the percentage of automatic feedback shown to participants when callstats is enabled.
// The default value is 100%. If set to 0, no automatic feedback will be requested
// feedbackPercentage: 100,
// Privacy // Privacy
// //
@ -441,7 +484,7 @@ var config = {
// The STUN servers that will be used in the peer to peer connections // The STUN servers that will be used in the peer to peer connections
stunServers: [ stunServers: [
// { urls: 'stun:jitsi-meet.example.org:3478' }, // { urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' } { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
] ]
@ -455,7 +498,7 @@ var config = {
// If set to true, it will prefer to use H.264 for P2P calls (if H.264 // If set to true, it will prefer to use H.264 for P2P calls (if H.264
// is supported). This setting is deprecated, use preferredCodec instead. // is supported). This setting is deprecated, use preferredCodec instead.
// preferH264: true // preferH264: true,
// Provides a way to set the video codec preference on the p2p connection. Acceptable // Provides a way to set the video codec preference on the p2p connection. Acceptable
// codec values are 'VP8', 'VP9' and 'H264'. // codec values are 'VP8', 'VP9' and 'H264'.
@ -497,7 +540,7 @@ var config = {
// The interval at which rtcstats will poll getStats, defaults to 1000ms. // The interval at which rtcstats will poll getStats, defaults to 1000ms.
// If the value is set to 0 getStats won't be polled and the rtcstats client // If the value is set to 0 getStats won't be polled and the rtcstats client
// will only send data related to RTCPeerConnection events. // will only send data related to RTCPeerConnection events.
// rtcstatsPolIInterval: 1000 // rtcstatsPolIInterval: 1000,
// Array of script URLs to load as lib-jitsi-meet "analytics handlers". // Array of script URLs to load as lib-jitsi-meet "analytics handlers".
// scriptURLs: [ // scriptURLs: [
@ -520,6 +563,10 @@ var config = {
// Decides whether the start/stop recording audio notifications should play on record. // Decides whether the start/stop recording audio notifications should play on record.
// disableRecordAudioNotification: false, // disableRecordAudioNotification: false,
// 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,
// Information for the chrome extension banner // Information for the chrome extension banner
// chromeExtensionBanner: { // chromeExtensionBanner: {
// // The chrome extension to be installed address // // The chrome extension to be installed address
@ -579,6 +626,10 @@ var config = {
// the menu has option to flip the locally seen video for local presentations // the menu has option to flip the locally seen video for local presentations
// disableLocalVideoFlip: false, // disableLocalVideoFlip: false,
// 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 // Mainly privacy related settings
// Disables all invite functions from the app (share, invite, dial out...etc) // Disables all invite functions from the app (share, invite, dial out...etc)
@ -606,6 +657,9 @@ var config = {
// If set to true all muting operations of remote participants will be disabled. // If set to true all muting operations of remote participants will be disabled.
// disableRemoteMute: true, // disableRemoteMute: true,
// Enables support for lip-sync for this client (if the browser supports it).
// enableLipSync: false
/** /**
External API url used to receive branding specific information. External API url used to receive branding specific information.
If there is no url set or there are missing fields, the defaults are applied. If there is no url set or there are missing fields, the defaults are applied.
@ -621,12 +675,35 @@ var config = {
logoImageUrl: 'https://example.com/logo-img.png' logoImageUrl: 'https://example.com/logo-img.png'
} }
*/ */
// brandingDataUrl: '', // dynamicBrandingUrl: '',
// 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 // 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, // is present, a link to the service will be rendered on the welcome page,
// otherwise the app doesn't render it. // otherwise the app doesn't render it.
// moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.org', // moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.com',
// If true, tile view will not be enabled automatically when the participants count threshold is reached.
// disableTileView: true,
// Hides the conference subject
// hideConferenceSubject: true,
// Hides the conference timer.
// hideConferenceTimer: true,
// Hides the participants stats
// hideParticipantsStats: true,
// Sets the conference subject
// subject: 'Conference 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,
// List of undocumented settings used in jitsi-meet // List of undocumented settings used in jitsi-meet
/** /**
@ -674,15 +751,75 @@ var config = {
disableAP disableAP
disableHPF disableHPF
disableNS disableNS
enableLipSync
enableTalkWhileMuted enableTalkWhileMuted
forceJVB121Ratio forceJVB121Ratio
forceTurnRelay
hiddenDomain hiddenDomain
ignoreStartMuted ignoreStartMuted
nick websocketKeepAlive
startBitrate websocketKeepAliveUrl
*/ */
/**
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.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.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.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
// 'localRecording.localRecording', // shown when a local recording is started
// 'notify.disconnected', // shown when a participant has left
// 'notify.grantedTo', // shown when moderator rights were granted to a participant
// '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.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.passwordRemovedRemotely', // shown when a password has been removed remotely
// 'notify.passwordSetRemotely', // shown when a password has been set remotely
// 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio
// '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.failedToStart' // shown when transcribing fails to start
// ]
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.

View file

@ -76,8 +76,8 @@ video-constraints
branding-json branding-json
Path to a JSON file that will be served as the `brandingDataUrl`. Path to a JSON file that will be served as the `dynamicBrandingUrl`.
For information on the format see `brandingDataUrl` in For information on the format see `dynamicBrandingUrl` in
`__jitsi_meet_domain/files/config.js.sh`. `__jitsi_meet_domain/files/config.js.sh`.
If not set, no branding will be set up. If not set, no branding will be set up.

View file

@ -36,6 +36,10 @@ if [ -z "${JITSI_HOST}" ]; then
JITSI_HOST="${__target_host}" JITSI_HOST="${__target_host}"
fi fi
if [ -n "${BRANDING_JSON}" ]; then
DYNAMIC_BRANDING_URL="/branding.json"
fi
# #
# Deal with certbot # Deal with certbot
# #