From d97fb9a434fc278cfbccaddaed538c5134256b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Tue, 21 May 2024 15:12:54 +0200 Subject: [PATCH 01/17] [__opendkim] add debian support --- type/__opendkim/files/opendkim.conf.sh | 8 ++++++ type/__opendkim/man.rst | 7 ++++-- type/__opendkim/manifest | 34 +++++++++++++++++++++++++- type/__opendkim/parameter/optional | 1 + 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/type/__opendkim/files/opendkim.conf.sh b/type/__opendkim/files/opendkim.conf.sh index 468b262..7e7fab0 100755 --- a/type/__opendkim/files/opendkim.conf.sh +++ b/type/__opendkim/files/opendkim.conf.sh @@ -3,6 +3,9 @@ echo "# Managed remotely, manual changes will be lost." +# Used for OS-specific configuration. +os=$(cat "${__global:?}/explorer/os") + # Optional chdir(2) if [ "$BASEDIR" ]; then @@ -63,3 +66,8 @@ if [ "$USERID" ]; then printf "UserID %s\n" "$USERID" fi + +if [ "$PIDFILE" ]; +then + printf "PidFile %s\n" "$PIDFILE" +fi diff --git a/type/__opendkim/man.rst b/type/__opendkim/man.rst index 996f16d..765e7d3 100644 --- a/type/__opendkim/man.rst +++ b/type/__opendkim/man.rst @@ -14,8 +14,8 @@ installation and basic configuration of an instance of OpenDKIM. Note that this type does not generate or ensure that a key is present: use `cdist-type__opendkim-genkey(7)` for that. -Note that this type is currently only implemented for Alpine Linux and FreeBSD. -Please contribute an implementation if you can. +Note that this type is currently only implemented for Debian, Alpine Linux and +FreeBSD. Please contribute an implementation if you can. REQUIRED PARAMETERS @@ -45,6 +45,9 @@ custom-config The string following this parameter is appended as-is in the configuration, to enable more complex configurations. +pidfile + Specifies the path to a file that should be created at process start + containing the process ID. BOOLEAN PARAMETERS ------------------ diff --git a/type/__opendkim/manifest b/type/__opendkim/manifest index dbd9fc0..9565493 100755 --- a/type/__opendkim/manifest +++ b/type/__opendkim/manifest @@ -21,13 +21,20 @@ os=$(cat "${__global:?}/explorer/os") CFG_DIR="/etc/opendkim" +CFG_FILE="$CFG_DIR/opendkim.conf" service="opendkim" case "$os" in 'alpine') : ;; +'debian') + CFG_DIR="/etc/dkimkeys" + CFG_FILE="/etc/opendkim.conf" + ;; 'freebsd') CFG_DIR="/usr/local/etc/mail" + CFG_FILE="$CFG_DIR/opendkim.conf" + service="milter-opendkim" ;; *) @@ -70,12 +77,37 @@ if [ -f "${__object:?}/parameter/userid" ]; then export USERID fi +if [ -f "${__object:?}/parameter/pidfile" ]; then + PIDFILE="$(cat "${__object:?}/parameter/pidfile")" + export PIDFILE +fi + +# Debian: set configuration specific to debian packaging if no explicit value +# is requested. +if [ "$os" = "debian" ]; then + # In Debian, opendkim runs as user "opendkim". A umask of 007 is required when + # using a local socket with MTAs that access the socket as a non-privileged + # user (for example, Postfix). You may need to add user "postfix" to group + # "opendkim" in that case. + if [ -z "$USERID" ]; then + export USERID="opendkim" + fi + + if [ -z "$UMASK" ]; then + export UMASK="007" + fi + + if [ -z "$PIDFILE" ]; then + export PIDFILE="/run/opendkim/opendkim.pid" + fi +fi + # Boolean parameters [ -f "${__object:?}/parameter/syslog" ] && export SYSLOG=yes # Generate and deploy configuration file. source_file="${__object:?}/files/opendkim.conf" -target_file="${CFG_DIR}/opendkim.conf" +target_file="${CFG_FILE}" mkdir -p "${__object:?}/files" diff --git a/type/__opendkim/parameter/optional b/type/__opendkim/parameter/optional index af59609..3ad5a9b 100644 --- a/type/__opendkim/parameter/optional +++ b/type/__opendkim/parameter/optional @@ -4,3 +4,4 @@ subdomains umask userid custom-config +pidfile From 40d7b4354e19fc5d4c681942da77c548f5a63bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Tue, 21 May 2024 15:29:40 +0200 Subject: [PATCH 02/17] [__opendkim_genkey] add debian support --- type/__opendkim_genkey/explorer/key-state | 16 +++++++- type/__opendkim_genkey/man.rst | 2 +- type/__opendkim_genkey/manifest | 49 ++++++++++------------- 3 files changed, 37 insertions(+), 30 deletions(-) diff --git a/type/__opendkim_genkey/explorer/key-state b/type/__opendkim_genkey/explorer/key-state index 75998f9..5c6724d 100755 --- a/type/__opendkim_genkey/explorer/key-state +++ b/type/__opendkim_genkey/explorer/key-state @@ -1,12 +1,24 @@ #!/bin/sh -e -DIRECTORY="/var/db/dkim/" + +os=$( "${__explorer:?}/os" ) +case "$os" in +'debian') + DIRECTORY="/etc/dkimkeys/" +;; +'alpine'|'freebsd') + DIRECTORY="/var/db/dkim/" +;; +*) + DIRECTORY="/var/db/dkim/" +;; +esac + if [ -f "${__object:?}/parameter/directory" ]; then # Be forgiving about a lack of trailing slash DIRECTORY="$(sed -E 's!([^/])$!\1/!' < "${__object:?}/parameter/directory")" fi - KEY_ID="$(echo "${__object_id:?)}" | tr '/' '_')" DEFAULT_PATH="${DIRECTORY:?}${KEY_ID:?}.private" if [ -s "${DEFAULT_PATH}" ]; then diff --git a/type/__opendkim_genkey/man.rst b/type/__opendkim_genkey/man.rst index 0d52ca3..5a9305f 100644 --- a/type/__opendkim_genkey/man.rst +++ b/type/__opendkim_genkey/man.rst @@ -22,7 +22,7 @@ associating any given `sigkey` values to this key. Take into account that if you use this type without the `--domain` and `--selector` parameters, the `$__object_id` must be in form `$domain/$selector`. -Currently, this type is only implemented for Alpine Linux and FreeBSD. +Currently, this type is only implemented for Debian, Alpine Linux and FreeBSD. Please contribute an implementation if you can. NOTE: the name of the key file under `--directory` will default to diff --git a/type/__opendkim_genkey/manifest b/type/__opendkim_genkey/manifest index 58e9b06..ddf53f9 100755 --- a/type/__opendkim_genkey/manifest +++ b/type/__opendkim_genkey/manifest @@ -21,12 +21,20 @@ os=$(cat "${__global:?}/explorer/os") -CFG_DIR="/etc/opendkim" -user="opendkim" -group="opendkim" case "$os" in 'alpine') - : + CFG_DIR="/etc/opendkim" + user="opendkim" + group="opendkim" + + __package opendkim-utils +;; +'debian') + CFG_DIR="/etc/dkimkeys" + user="opendkim" + group="opendkim" + + __package opendkim-tools ;; 'freebsd') CFG_DIR="/usr/local/etc/mail" @@ -35,8 +43,8 @@ case "$os" in ;; *) cat <<- EOF >&2 - __opendkim_genkey currently only supports Alpine Linux and FreeBSD. - Please contribute an implementation for $os if you can. + __opendkim_genkey does not support $os (yet). + Please contribute an implementation if you can. EOF exit 1 ;; @@ -78,13 +86,6 @@ printf '%s' "${group:?}" > "${__object:?}/group" printf '%s' "${DOMAIN:?}" > "${__object:?}/domain" printf '%s' "${SELECTOR:?}" > "${__object:?}/selector" -DIRECTORY="/var/db/dkim/" -if [ -f "${__object:?}/parameter/directory" ]; -then - # Be forgiving about a lack of trailing slash - DIRECTORY="$(sed -E 's!([^/])$!\1/!' < "${__object:?}/parameter/directory")" -fi - SIGKEY="${DOMAIN:?}" if [ -f "${__object:?}/parameter/sigkey" ]; then @@ -96,24 +97,18 @@ then SIGDOMAIN="$(cat "${__object:?}/parameter/sigdomain")" fi -# Ensure the key-container directory exists with the proper permissions -__directory "${DIRECTORY}" \ - --mode 0750 \ - --owner "${user}" --group "${group}" - -# OS-specific code -case "$os" in -'alpine') - # This is needed for opendkim-genkey - __package opendkim-utils -;; -esac +KEY_STATE="$(cut -f 1 "${__object:?}/explorer/key-state")" +KEY_LOCATION="$(cut -f 2- "${__object:?}/explorer/key-state")" +keys_dir=$(dirname "${KEY_LOCATION:?}") key_table="${CFG_DIR}/KeyTable" signing_table="${CFG_DIR}/SigningTable" -KEY_STATE="$(cut -f 1 "${__object:?}/explorer/key-state")" -KEY_LOCATION="$(cut -f 2- "${__object:?}/explorer/key-state")" +# Ensure the key-container directory exists with the proper permissions +__directory "${keys_dir}" \ + --mode 0750 \ + --owner "${user}" \ + --group "${group}" __line "__opendkim_genkey/${__object_id:?}" \ --file "${key_table}" \ From 624bf996f69f86bdb342a05ef6e72bf1c81c2012 Mon Sep 17 00:00:00 2001 From: Evilham Date: Thu, 16 May 2024 11:55:41 +0200 Subject: [PATCH 03/17] [__jitsi_meet*] Update to 2.0.9457 Changelog: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-WEB.md#209457-2024-04-23 Sponsored by: camilion.eu, eXO.cat --- type/__jitsi_meet/manifest | 11 +- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 482 +++++++++++++----- .../files/config.js.sh.orig | 478 ++++++++++++----- .../files/interface_config.js.sh | 7 +- .../files/interface_config.js.sh.orig | 7 +- type/__jitsi_meet_domain/files/jitsi-version | 2 +- type/__jitsi_meet_domain/files/nginx.sh | 47 +- type/__jitsi_meet_domain/files/nginx.sh.orig | 38 +- .../files/prosody.cfg.lua.sh | 13 +- .../files/prosody.cfg.lua.sh.orig | 13 +- 11 files changed, 800 insertions(+), 300 deletions(-) diff --git a/type/__jitsi_meet/manifest b/type/__jitsi_meet/manifest index 5b5a11e..63c8a28 100755 --- a/type/__jitsi_meet/manifest +++ b/type/__jitsi_meet/manifest @@ -195,6 +195,15 @@ upstream jvb1 { keepalive 2; } EOF +require="__directory${NGINX_ETC}/conf.d" __file "${NGINX_ETC}/conf.d/jicofo.conf" \ + --mode 644 \ + --source - << EOF +upstream jicofo { + zone upstreams 64K; + server 127.0.0.1:8888; + keepalive 2; +} +EOF if [ -f "${__object}/parameter/secured-domains" ]; then SECURED_DOMAINS_STATE='present' @@ -264,7 +273,7 @@ if [ -f "${__object}/parameter/disable-prometheus-exporter" ]; then else EXPORTER_STATE="present" fi -__evilham_single_binary_service prometheus-jitsi-meet-exporter \ +__single_binary_service prometheus-jitsi-meet-exporter \ --state "${EXPORTER_STATE}" \ --do-not-manage-user \ --user "nobody" \ diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 334d843..f7511e8 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_8319" +BRANCH="jitsi-meet_9457" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 3c1cf1a..abcb0a9 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -53,25 +53,51 @@ var config = { // BOSH URL. FIXME: use XEP-0156 to discover it. // useful for multidomain scenario -> src https://community.jitsi.org/t/same-jitsi-meet-instance-with-multiple-domain-names/17391/2 - bosh: '///http-bind', + bosh: 'https:///http-bind', - // Websocket URL + // Websocket URL (XMPP) // websocket: 'wss://${DOMAIN}/xmpp-websocket', + // Whether BOSH should be preferred over WebSocket if both are configured. + // preferBosh: false, + // The real JID of focus participant - can be overridden here // Do not change username - FIXME: Make focus username configurable // https://github.com/jitsi/jitsi-meet/issues/7376 focusUserJid: 'focus@auth.${JITSI_HOST}', + // Option to send conference requests to jicofo over http (requires nginx rule for it) + // conferenceRequestUrl: + // 'https:///' + 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, + // Disables the End to End Encryption feature. Useful for debugging // issues related to insertable streams. // disableE2EE: false, + // Enables supports for AV1 codec. + // enableAv1Support: false, + // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users @@ -86,10 +112,11 @@ var config = { // This is useful when the client runs on a host with limited resources. // noAutoPlayVideo: false, - // Enable callstats only for a percentage of users. - // This takes a value between 0 and 100 which determines the probability for - // the callstats to be enabled. - // callStatsThreshold: 5, // enable callstats for 5% of the users. + // Experiment: Whether to skip interim transcriptions. + // skipInterimTranscriptions: false, + + // Dump transcripts to a element for debugging. + // dumpTranscript: false, }, // Disables moderator indicators. @@ -133,9 +160,6 @@ var config = { // Media // - // Enable unified plan implementation support on Chromium based browsers. - // enableUnifiedOnChrome: false, - // Audio // Disable measuring of audio levels. @@ -191,8 +215,27 @@ var config = { // 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_16.kw + // - https://meet.example.com/libs/krisp/models/model_32.kw + // NOTE: Krisp JS SDK v1.0.9 was tested. + // noiseSuppression: { + // krisp: { + // enabled: false, + // logProcessStats: false, + // debugLogs: false, + // }, + // }, + // Video + // Sets the default camera facing mode. + // cameraFacingMode: 'user', + // Sets the preferred resolution (height) for local video. Defaults to 720. // resolution: 720, @@ -252,12 +295,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Enable / disable simulcast support. // disableSimulcast: false, - // Enable / disable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended - // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen - // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent - // by the client. - // enableLayerSuspension: false, - // Every participant after the Nth will start video muted. startVideoMuted: ${START_VIDEO_MUTED}, @@ -273,12 +310,19 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // max: 5, // }, - // This option has been deprecated since it is no longer supported as per the w3c spec. - // https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not - // interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the browser. This - // has already been implemented in Firefox and Safari and will be implemented in Chrome soon. - // https://bugs.chromium.org/p/chromium/issues/detail?id=1198918 - // startScreenSharing: false, + // 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 @@ -295,6 +339,18 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 'https://${DOMAIN}/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, + // }, + // recordingService: { // // When integrations like dropbox are enabled only that will be shown, // // by enabling fileRecordingsServiceEnabled, we show both the integrations @@ -355,7 +411,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // DEPRECATED. Use transcription.preferredLanguage instead. // preferredTranscribeLanguage: 'en-US', - // DEPRECATED. Use transcription.autoCaptionOnRecord instead. + // DEPRECATED. Use transcription.autoTranscribeOnRecord instead. // autoCaptionOnRecord: false, // Transcription options. @@ -384,11 +440,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // ./src/react/features/transcribing/transcriber-langs.json. // preferredLanguage: 'en-US', - // // Disable start transcription for all participants. - // disableStartForAll: false, - - // // Enables automatic turning on captions when recording is started - // autoCaptionOnRecord: false, + // // Enables automatic turning on transcribing when recording is started + // autoTranscribeOnRecord: false, // }, // Misc @@ -410,44 +463,55 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // value will be used when the quality level is selected using "Manage Video Quality" slider. // startLastN: 1, - // Provides a way to use different "last N" values based on the number of participants in the conference. - // The keys in an Object represent number of participants and the values are "last N" to be used when number of - // participants gets to or above the number. - // - // For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than - // 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN' - // will be used as default until the first threshold is reached. - // - // lastNLimits: { - // 5: 20, - // 30: 15, - // 50: 10, - // 70: 5, - // 90: 2, - // }, - // Specify the settings for video quality optimizations on the client. // videoQuality: { - // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified - // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the - // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. - // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. - // disabledCodec: 'H264', // - // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, - // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only - // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the - // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this - // // to take effect. - // preferredCodec: 'VP8', + // // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], // - // // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints - // // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet. - // // This will result in Safari not being able to decode video from endpoints sending VP9 video. - // // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the - // // preferred codec and goes back to the preferred codec when that endpoint leaves. - // enforcePreferredCodec: false, + // // Codec specific settings for scalability modes and max bitrates. + // av1: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // }, + // h264: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true + // }, + // vp8: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: false + // }, + // vp9: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1200000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // } // + // DEPRECATED! Use \`codec specific settings\` instead. // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on @@ -486,6 +550,24 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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' ], + // + // // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. + // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified + // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the + // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. + // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. + // disabledCodec: 'H264', + // + // // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. + // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, + // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only + // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the + // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this + // // to take effect. + // preferredCodec: 'VP8', + // // }, // Notification timeouts @@ -569,6 +651,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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. @@ -579,12 +664,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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. + // // If set, landing page will redirect to this URL. // customUrl: '' // }, // Configs for the lobby screen. - // lobby { + // lobby: { // // If Lobby is enabled, it starts knocking automatically. Replaces \`autoKnockLobby\`. // autoKnock: false, // // Enables the lobby chat. Replaces \`enableLobbyChat\`. @@ -628,6 +713,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // hideDominantSpeakerBadge: false, // Default language for the user interface. Cannot be overwritten. + // DEPRECATED! Use the \`lang\` iframe option directly instead. defaultLanguage: '${DEFAULT_LANGUAGE}', // Disables profile and the edit of all fields from the profile settings (display name and email) @@ -651,7 +737,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Configs for prejoin page. // prejoinConfig: { // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. - // // This replaces \`prejoinPageEnabled\`. + // // This replaces \`prejoinPageEnabled\`. Defaults to true. // enabled: true, // // Hides the participant name editing field in the prejoin screen. // // If requireDisplayName is also set as true, a name should still be provided through @@ -822,6 +908,42 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // '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: [], @@ -831,7 +953,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // customParticipantMenuButtons: [], // An array with custom option buttons for the toolbar - // type: Array<{ icon: string; id: string; text: string; }> + // type: Array<{ icon: string; id: string; text: string; backgroundColor?: string; }> // customToolbarButtons: [], // Stats @@ -846,38 +968,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // The interval at which PeerConnection.getStats() is called. Defaults to 10000 // pcStatsInterval: 10000, - // To enable sending statistics to callstats.io you must provide the - // Application ID and Secret. - // callStatsID: '', - // callStatsSecret: '', - // callStatsApplicationLogsDisabled: false, - - // The callstats initialize config params as described in the API: - // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret - // callStatsConfigParams: { - // disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter. - // applicationVersion: "app_version", // Application version specified by the developer. - // disablePrecalltest: true, // disables the pre-call test, it is enabled by default. - // siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made. - // additionalIDs: { // additionalIDs object, contains application related IDs. - // customerID: "Customer Identifier. Example, walmart.", - // tenantID: "Tenant Identifier. Example, monster.", - // productName: "Product Name. Example, Jitsi.", - // meetingsName: "Meeting Name. Example, Jitsi loves callstats.", - // serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.", - // pbxID: "PBX Identifier. Example, walmart.", - // pbxExtensionID: "PBX Extension Identifier. Example, 5625.", - // fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.", - // sessionID: "Session Identifier. Example, session-12-34", - // }, - // collectLegacyStats: true, //enables the collection of legacy stats in chrome browser - // collectIP: true, //enables the collection localIP address - // }, - - // Enables sending participants' display names to callstats + // Enables sending participants' display names to stats // enableDisplayNameInStats: false, - // Enables sending participants' emails (if available) to callstats and other analytics + // Enables sending participants' emails (if available) to stats and other analytics // enableEmailInStats: false, // faceLandmarks: { @@ -900,7 +994,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // captureInterval: 1000, // }, - // Controls the percentage of automatic feedback shown to participants when callstats is enabled. + // 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, @@ -908,7 +1002,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // If third party requests are disabled, no other server will be contacted. - // This means avatars will be locally generated and callstats integration + // This means avatars will be locally generated and external stats integration // will not function. disableThirdPartyRequests: $(if [ -z "${ENABLE_THIRD_PARTY_REQUESTS}" ]; then printf "true"; else printf "false"; fi), @@ -925,9 +1019,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // connection. enabled: true, - // Enable unified plan implementation support on Chromium for p2p connection. - // enableUnifiedOnChrome: false, - // 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 @@ -936,12 +1027,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // If not set, the effective value is 'all'. // iceTransportPolicy: 'all', - // Provides a way to set the video codec preference on the p2p connection. Acceptable - // codec values are 'VP8', 'VP9' and 'H264'. - // preferredCodec: 'H264', - - // Provides a way to prevent a video codec from being negotiated on the p2p connection. - // disabledCodec: '', + // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based + // endpoints. + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], + // + // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], // 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). @@ -953,6 +1044,15 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // { urls: 'stun:jitsi-meet.example.com:3478' }, { urls: 'stun:${TURN_SERVER}:443' }, ], + + // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. + // Provides a way to set the video codec preference on the p2p connection. Acceptable + // codec values are 'VP8', 'VP9' and 'H264'. + // preferredCodec: 'H264', + + // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. + // Provides a way to prevent a video codec from being negotiated on the p2p connection. + // disabledCodec: '', }, analytics: { @@ -970,6 +1070,10 @@ ${ANALYTICS_SETTINGS} // The Amplitude APP Key: // amplitudeAPPKey: '', + // Enables Amplitude UTM tracking: + // Default value is false. + // amplitudeIncludeUTM: false, + // Obfuscates room name sent to analytics (amplitude, rtcstats) // Default value is false. // obfuscateRoomName: false, @@ -999,6 +1103,11 @@ ${ANALYTICS_SETTINGS} // "libs/analytics-ga.min.js", // google-analytics // "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 @@ -1070,7 +1179,12 @@ ${ANALYTICS_SETTINGS} // }, // e2ee: { - // labels, + // labels: { + // description: '', + // label: '', + // tooltip: '', + // warning: '', + // }, // externallyManagedKey: false, // }, @@ -1108,9 +1222,17 @@ ${ANALYTICS_SETTINGS} // https://firebase.google.com/docs/dynamic-links/create-manually // deeplinking: { // - // // The desktop deeplinking config. + // // The desktop deeplinking config, disabled by default. // desktop: { - // appName: 'Jitsi Meet' + // 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. @@ -1155,6 +1277,17 @@ ${ANALYTICS_SETTINGS} // } // }, + // // The terms, privacy and help centre URL's. + // // TODO: Check and set these up + legalUrls: { + helpCentre: '', + privacy: '', + terms: '' + // 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: false, @@ -1186,6 +1319,8 @@ ${ANALYTICS_SETTINGS} // 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. @@ -1206,9 +1341,6 @@ ${ANALYTICS_SETTINGS} // If set to true all muting operations of remote participants will be disabled. // 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. If there is no url set or there are missing fields, the defaults are applied. @@ -1232,6 +1364,16 @@ ${ANALYTICS_SETTINGS} // 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 @@ -1247,7 +1389,6 @@ ${ANALYTICS_SETTINGS} ui03: "violet", ui04: "magenta", ui05: "blueviolet", - field02Hover: 'red', action01: 'green', action01Hover: 'lightgreen', disabled01: 'beige', @@ -1268,6 +1409,8 @@ ${ANALYTICS_SETTINGS} // Options related to the participants pane. // participantsPane: { + // // Enables feature + // enabled: true, // // Hides the moderator settings tab. // hideModeratorSettingsTab: false, // // Hides the more actions button. @@ -1286,13 +1429,13 @@ ${ANALYTICS_SETTINGS} // 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, - // Disables using screensharing as virtual background. - // disableScreensharingVirtualBackground: false, - // Sets the background transparency level. '0' is fully transparent, '1' is opaque. // backgroundAlpha: 1, @@ -1319,7 +1462,6 @@ ${ANALYTICS_SETTINGS} // 'conference-timer', // 'participants-count', // 'e2ee', - // 'transcribing', // 'video-quality', // 'insecure-room', // 'highlight-moment', @@ -1363,6 +1505,31 @@ ${ANALYTICS_SETTINGS} // 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' + // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before + // and will automatically redirect to the token service to get the token for the meeting. + // tokenAuthUrlAutoRedirect: false + // List of undocumented settings used in jitsi-meet /** _immediateReloadThreshold @@ -1374,8 +1541,6 @@ ${ANALYTICS_SETTINGS} dialOutRegionUrl disableRemoteControl displayJids - externalConnectUrl - e2eeLabels firefox_fake_device googleApiApplicationClientID iAmRecorder @@ -1384,7 +1549,6 @@ ${ANALYTICS_SETTINGS} peopleSearchQueryTypes peopleSearchUrl requireDisplayName - tokenAuthUrl */ /** @@ -1398,18 +1562,15 @@ ${ANALYTICS_SETTINGS} /** _peerConnStatusOutOfLastNTimeout _peerConnStatusRtcMuteTimeout - abTesting avgRtpStatsN - callStatsConfIDNamespace - callStatsCustomScriptUrl desktopSharingSources disableAEC disableAGC disableAP disableHPF + disableLocalStats disableNS enableTalkWhileMuted - forceJVB121Ratio forceTurnRelay hiddenDomain hiddenFromRecorderFeatureEnabled @@ -1433,6 +1594,7 @@ ${ANALYTICS_SETTINGS} */ // 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) @@ -1443,10 +1605,12 @@ ${ANALYTICS_SETTINGS} // '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 @@ -1454,37 +1618,45 @@ ${ANALYTICS_SETTINGS} // '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.disconnected', // shown when a participant has left // 'notify.connectedOneMember', // show when a participant joined - // 'notify.connectedTwoMembers', // show when two participants joined simultaneously // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously - // 'notify.leftOneMember', // show when a participant left - // 'notify.leftTwoMembers', // show when two participants left simultaneously - // 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously - // 'notify.grantedTo', // shown when moderator rights were granted to a participant + // '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.moderationStartedTitle', // shown when AV moderation is activated - // 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated + // '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.moderationInEffectCSTitle', // shown when user attempts to share content 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 partcipant 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', @@ -1507,6 +1679,8 @@ ${ANALYTICS_SETTINGS} // disableFilmstripAutohiding: false, // filmstrip: { + // // Disable the vertical/horizonal filmstrip. + // disabled: false, // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip // // (width, tiles aspect ratios) through the interfaceConfig options. // disableResizable: false, @@ -1529,6 +1703,8 @@ ${ANALYTICS_SETTINGS} // 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, @@ -1560,13 +1736,12 @@ ${ANALYTICS_SETTINGS} // logging: { // // Default log level for the app and lib-jitsi-meet. // defaultLogLevel: 'trace', - // // Option to disable LogCollector (which stores the logs on CallStats). + // // 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/statistics/CallStats.js': 'info', // 'modules/xmpp/strophe.util.js': 'log', // }, @@ -1580,6 +1755,45 @@ ${ANALYTICS_SETTINGS} // // 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; // }, }; diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 422d2f1..6cc6723 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -46,25 +46,51 @@ var config = { }, // BOSH URL. FIXME: use XEP-0156 to discover it. - bosh: '//jitsi-meet.example.com/' + subdir + 'http-bind', + bosh: 'https://jitsi-meet.example.com/' + subdir + 'http-bind', - // Websocket URL + // Websocket URL (XMPP) // websocket: 'wss://jitsi-meet.example.com/' + subdir + 'xmpp-websocket', + // Whether BOSH should be preferred over WebSocket if both are configured. + // preferBosh: false, + // The real JID of focus participant - can be overridden here // Do not change username - FIXME: Make focus username configurable // https://github.com/jitsi/jitsi-meet/issues/7376 // focusUserJid: 'focus@auth.jitsi-meet.example.com', + // Option to send conference requests to jicofo over http (requires nginx rule for it) + // conferenceRequestUrl: + // 'https:///' + 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, + // Disables the End to End Encryption feature. Useful for debugging // issues related to insertable streams. // disableE2EE: false, + // Enables supports for AV1 codec. + // enableAv1Support: false, + // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users @@ -79,10 +105,11 @@ var config = { // This is useful when the client runs on a host with limited resources. // noAutoPlayVideo: false, - // Enable callstats only for a percentage of users. - // This takes a value between 0 and 100 which determines the probability for - // the callstats to be enabled. - // callStatsThreshold: 5, // enable callstats for 5% of the users. + // Experiment: Whether to skip interim transcriptions. + // skipInterimTranscriptions: false, + + // Dump transcripts to a element for debugging. + // dumpTranscript: false, }, // Disables moderator indicators. @@ -126,9 +153,6 @@ var config = { // Media // - // Enable unified plan implementation support on Chromium based browsers. - // enableUnifiedOnChrome: false, - // Audio // Disable measuring of audio levels. @@ -184,8 +208,27 @@ var config = { // 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_16.kw + // - https://meet.example.com/libs/krisp/models/model_32.kw + // NOTE: Krisp JS SDK v1.0.9 was tested. + // noiseSuppression: { + // krisp: { + // enabled: false, + // logProcessStats: false, + // debugLogs: false, + // }, + // }, + // Video + // Sets the default camera facing mode. + // cameraFacingMode: 'user', + // Sets the preferred resolution (height) for local video. Defaults to 720. // resolution: 720, @@ -244,12 +287,6 @@ var config = { // Enable / disable simulcast support. // disableSimulcast: false, - // Enable / disable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended - // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen - // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent - // by the client. - // enableLayerSuspension: false, - // Every participant after the Nth will start video muted. // startVideoMuted: 10, @@ -265,12 +302,19 @@ var config = { // max: 5, // }, - // This option has been deprecated since it is no longer supported as per the w3c spec. - // https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not - // interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the browser. This - // has already been implemented in Firefox and Safari and will be implemented in Chrome soon. - // https://bugs.chromium.org/p/chromium/issues/detail?id=1198918 - // startScreenSharing: false, + // 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 @@ -287,6 +331,18 @@ var config = { // 'https://jitsi-meet.example.com/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, + // }, + // recordingService: { // // When integrations like dropbox are enabled only that will be shown, // // by enabling fileRecordingsServiceEnabled, we show both the integrations @@ -347,7 +403,7 @@ var config = { // DEPRECATED. Use transcription.preferredLanguage instead. // preferredTranscribeLanguage: 'en-US', - // DEPRECATED. Use transcription.autoCaptionOnRecord instead. + // DEPRECATED. Use transcription.autoTranscribeOnRecord instead. // autoCaptionOnRecord: false, // Transcription options. @@ -376,11 +432,8 @@ var config = { // // ./src/react/features/transcribing/transcriber-langs.json. // preferredLanguage: 'en-US', - // // Disable start transcription for all participants. - // disableStartForAll: false, - - // // Enables automatic turning on captions when recording is started - // autoCaptionOnRecord: false, + // // Enables automatic turning on transcribing when recording is started + // autoTranscribeOnRecord: false, // }, // Misc @@ -402,44 +455,55 @@ var config = { // value will be used when the quality level is selected using "Manage Video Quality" slider. // startLastN: 1, - // Provides a way to use different "last N" values based on the number of participants in the conference. - // The keys in an Object represent number of participants and the values are "last N" to be used when number of - // participants gets to or above the number. - // - // For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than - // 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN' - // will be used as default until the first threshold is reached. - // - // lastNLimits: { - // 5: 20, - // 30: 15, - // 50: 10, - // 70: 5, - // 90: 2, - // }, - // Specify the settings for video quality optimizations on the client. // videoQuality: { - // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified - // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the - // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. - // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. - // disabledCodec: 'H264', // - // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, - // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only - // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the - // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this - // // to take effect. - // preferredCodec: 'VP8', + // // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], // - // // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints - // // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet. - // // This will result in Safari not being able to decode video from endpoints sending VP9 video. - // // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the - // // preferred codec and goes back to the preferred codec when that endpoint leaves. - // enforcePreferredCodec: false, + // // Codec specific settings for scalability modes and max bitrates. + // av1: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1000000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // }, + // h264: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true + // }, + // vp8: { + // maxBitratesVideo: { + // low: 200000, + // standard: 500000, + // high: 1500000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: false + // }, + // vp9: { + // maxBitratesVideo: { + // low: 100000, + // standard: 300000, + // high: 1200000, + // ssHigh: 2500000 + // }, + // scalabilityModeEnabled: true, + // useSimulcast: false, + // useKSVC: true + // } // + // DEPRECATED! Use `codec specific settings` instead. // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on @@ -478,6 +542,24 @@ var config = { // 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' ], + // + // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified + // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the + // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. + // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. + // disabledCodec: 'H264', + // + // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, + // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only + // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the + // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this + // // to take effect. + // preferredCodec: 'VP8', + // // }, // Notification timeouts @@ -561,6 +643,9 @@ var config = { // 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. @@ -571,12 +656,12 @@ var config = { // // 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. + // // If set, landing page will redirect to this URL. // customUrl: '' // }, // Configs for the lobby screen. - // lobby { + // lobby: { // // If Lobby is enabled, it starts knocking automatically. Replaces `autoKnockLobby`. // autoKnock: false, // // Enables the lobby chat. Replaces `enableLobbyChat`. @@ -620,6 +705,7 @@ var config = { // hideDominantSpeakerBadge: false, // Default language for the user interface. Cannot be overwritten. + // DEPRECATED! Use the `lang` iframe option directly instead. // defaultLanguage: 'en', // Disables profile and the edit of all fields from the profile settings (display name and email) @@ -643,7 +729,7 @@ var config = { // Configs for prejoin page. // prejoinConfig: { // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. - // // This replaces `prejoinPageEnabled`. + // // This replaces `prejoinPageEnabled`. Defaults to true. // enabled: true, // // Hides the participant name editing field in the prejoin screen. // // If requireDisplayName is also set as true, a name should still be provided through @@ -814,6 +900,42 @@ var config = { // '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: [], @@ -823,7 +945,7 @@ var config = { // customParticipantMenuButtons: [], // An array with custom option buttons for the toolbar - // type: Array<{ icon: string; id: string; text: string; }> + // type: Array<{ icon: string; id: string; text: string; backgroundColor?: string; }> // customToolbarButtons: [], // Stats @@ -838,38 +960,10 @@ var config = { // The interval at which PeerConnection.getStats() is called. Defaults to 10000 // pcStatsInterval: 10000, - // To enable sending statistics to callstats.io you must provide the - // Application ID and Secret. - // callStatsID: '', - // callStatsSecret: '', - // callStatsApplicationLogsDisabled: false, - - // The callstats initialize config params as described in the API: - // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret - // callStatsConfigParams: { - // disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter. - // applicationVersion: "app_version", // Application version specified by the developer. - // disablePrecalltest: true, // disables the pre-call test, it is enabled by default. - // siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made. - // additionalIDs: { // additionalIDs object, contains application related IDs. - // customerID: "Customer Identifier. Example, walmart.", - // tenantID: "Tenant Identifier. Example, monster.", - // productName: "Product Name. Example, Jitsi.", - // meetingsName: "Meeting Name. Example, Jitsi loves callstats.", - // serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.", - // pbxID: "PBX Identifier. Example, walmart.", - // pbxExtensionID: "PBX Extension Identifier. Example, 5625.", - // fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.", - // sessionID: "Session Identifier. Example, session-12-34", - // }, - // collectLegacyStats: true, //enables the collection of legacy stats in chrome browser - // collectIP: true, //enables the collection localIP address - // }, - - // Enables sending participants' display names to callstats + // Enables sending participants' display names to stats // enableDisplayNameInStats: false, - // Enables sending participants' emails (if available) to callstats and other analytics + // Enables sending participants' emails (if available) to stats and other analytics // enableEmailInStats: false, // faceLandmarks: { @@ -892,7 +986,7 @@ var config = { // captureInterval: 1000, // }, - // Controls the percentage of automatic feedback shown to participants when callstats is enabled. + // 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, @@ -900,7 +994,7 @@ var config = { // // If third party requests are disabled, no other server will be contacted. - // This means avatars will be locally generated and callstats integration + // This means avatars will be locally generated and external stats integration // will not function. // disableThirdPartyRequests: false, @@ -917,9 +1011,6 @@ var config = { // connection. enabled: true, - // Enable unified plan implementation support on Chromium for p2p connection. - // enableUnifiedOnChrome: false, - // 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 @@ -928,12 +1019,12 @@ var config = { // If not set, the effective value is 'all'. // iceTransportPolicy: 'all', - // Provides a way to set the video codec preference on the p2p connection. Acceptable - // codec values are 'VP8', 'VP9' and 'H264'. - // preferredCodec: 'H264', - - // Provides a way to prevent a video codec from being negotiated on the p2p connection. - // disabledCodec: '', + // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based + // endpoints. + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], + // + // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], // 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). @@ -945,6 +1036,15 @@ var config = { // { urls: 'stun:jitsi-meet.example.com:3478' }, { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }, ], + + // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // Provides a way to set the video codec preference on the p2p connection. Acceptable + // codec values are 'VP8', 'VP9' and 'H264'. + // preferredCodec: 'H264', + + // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // Provides a way to prevent a video codec from being negotiated on the p2p connection. + // disabledCodec: '', }, analytics: { @@ -961,6 +1061,10 @@ var config = { // The Amplitude APP Key: // amplitudeAPPKey: '', + // Enables Amplitude UTM tracking: + // Default value is false. + // amplitudeIncludeUTM: false, + // Obfuscates room name sent to analytics (amplitude, rtcstats) // Default value is false. // obfuscateRoomName: false, @@ -990,6 +1094,11 @@ var config = { // "libs/analytics-ga.min.js", // google-analytics // "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 @@ -1061,7 +1170,12 @@ var config = { // }, // e2ee: { - // labels, + // labels: { + // description: '', + // label: '', + // tooltip: '', + // warning: '', + // }, // externallyManagedKey: false, // }, @@ -1099,9 +1213,17 @@ var config = { // https://firebase.google.com/docs/dynamic-links/create-manually // deeplinking: { // - // // The desktop deeplinking config. + // // The desktop deeplinking config, disabled by default. // desktop: { - // appName: 'Jitsi Meet' + // 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. @@ -1146,6 +1268,13 @@ var config = { // } // }, + // // 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: false, @@ -1177,6 +1306,8 @@ var config = { // 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. @@ -1197,9 +1328,6 @@ var config = { // If set to true all muting operations of remote participants will be disabled. // 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. If there is no url set or there are missing fields, the defaults are applied. @@ -1223,6 +1351,16 @@ var config = { // 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 @@ -1238,7 +1376,6 @@ var config = { ui03: "violet", ui04: "magenta", ui05: "blueviolet", - field02Hover: 'red', action01: 'green', action01Hover: 'lightgreen', disabled01: 'beige', @@ -1259,6 +1396,8 @@ var config = { // Options related to the participants pane. // participantsPane: { + // // Enables feature + // enabled: true, // // Hides the moderator settings tab. // hideModeratorSettingsTab: false, // // Hides the more actions button. @@ -1277,13 +1416,13 @@ var config = { // 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, - // Disables using screensharing as virtual background. - // disableScreensharingVirtualBackground: false, - // Sets the background transparency level. '0' is fully transparent, '1' is opaque. // backgroundAlpha: 1, @@ -1310,7 +1449,6 @@ var config = { // 'conference-timer', // 'participants-count', // 'e2ee', - // 'transcribing', // 'video-quality', // 'insecure-room', // 'highlight-moment', @@ -1354,6 +1492,31 @@ var config = { // 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' + // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before + // and will automatically redirect to the token service to get the token for the meeting. + // tokenAuthUrlAutoRedirect: false + // List of undocumented settings used in jitsi-meet /** _immediateReloadThreshold @@ -1365,8 +1528,6 @@ var config = { dialOutRegionUrl disableRemoteControl displayJids - externalConnectUrl - e2eeLabels firefox_fake_device googleApiApplicationClientID iAmRecorder @@ -1375,7 +1536,6 @@ var config = { peopleSearchQueryTypes peopleSearchUrl requireDisplayName - tokenAuthUrl */ /** @@ -1389,18 +1549,15 @@ var config = { /** _peerConnStatusOutOfLastNTimeout _peerConnStatusRtcMuteTimeout - abTesting avgRtpStatsN - callStatsConfIDNamespace - callStatsCustomScriptUrl desktopSharingSources disableAEC disableAGC disableAP disableHPF + disableLocalStats disableNS enableTalkWhileMuted - forceJVB121Ratio forceTurnRelay hiddenDomain hiddenFromRecorderFeatureEnabled @@ -1424,6 +1581,7 @@ var config = { */ // 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) @@ -1434,10 +1592,12 @@ var config = { // '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 @@ -1445,37 +1605,45 @@ var config = { // '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.disconnected', // shown when a participant has left // 'notify.connectedOneMember', // show when a participant joined - // 'notify.connectedTwoMembers', // show when two participants joined simultaneously // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously - // 'notify.leftOneMember', // show when a participant left - // 'notify.leftTwoMembers', // show when two participants left simultaneously - // 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously - // 'notify.grantedTo', // shown when moderator rights were granted to a participant + // '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.moderationStartedTitle', // shown when AV moderation is activated - // 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated + // '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.moderationInEffectCSTitle', // shown when user attempts to share content 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 partcipant 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', @@ -1498,6 +1666,8 @@ var config = { // disableFilmstripAutohiding: false, // filmstrip: { + // // Disable the vertical/horizonal filmstrip. + // disabled: false, // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip // // (width, tiles aspect ratios) through the interfaceConfig options. // disableResizable: false, @@ -1520,6 +1690,8 @@ var config = { // 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, @@ -1551,13 +1723,12 @@ var config = { // logging: { // // Default log level for the app and lib-jitsi-meet. // defaultLogLevel: 'trace', - // // Option to disable LogCollector (which stores the logs on CallStats). + // // 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/statistics/CallStats.js': 'info', // 'modules/xmpp/strophe.util.js': 'log', // }, @@ -1571,6 +1742,45 @@ var config = { // // 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; // }, }; diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh b/type/__jitsi_meet_domain/files/interface_config.js.sh index 1aad856..e9d8a21 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh @@ -81,7 +81,8 @@ var interfaceConfig = { ENABLE_DIAL_OUT: true, - ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation. + // DEPRECATED. Animation no longer supported. + // ENABLE_FEEDBACK_ANIMATION: false, FILM_STRIP_MAX_HEIGHT: 120, @@ -117,8 +118,8 @@ var interfaceConfig = { // Names of browsers which should show a warning stating the current browser // has a suboptimal experience. Browsers which are not listed as optimal or // unsupported are considered suboptimal. Valid values are: - // chrome, chromium, edge, electron, firefox, nwjs, opera, safari - OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ], + // chrome, chromium, electron, firefox , safari, webkit + OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit' ], POLICY_LOGO: null, PROVIDER_NAME: 'Jitsi', diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig index 2f8591c..ae1ea30 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig @@ -70,7 +70,8 @@ var interfaceConfig = { ENABLE_DIAL_OUT: true, - ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation. + // DEPRECATED. Animation no longer supported. + // ENABLE_FEEDBACK_ANIMATION: false, FILM_STRIP_MAX_HEIGHT: 120, @@ -106,8 +107,8 @@ var interfaceConfig = { // Names of browsers which should show a warning stating the current browser // has a suboptimal experience. Browsers which are not listed as optimal or // unsupported are considered suboptimal. Valid values are: - // chrome, chromium, edge, electron, firefox, nwjs, opera, safari - OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ], + // chrome, chromium, electron, firefox , safari, webkit + OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit' ], POLICY_LOGO: null, PROVIDER_NAME: 'Jitsi', diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index d64455b..aa2ad3c 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.8319-1 \ No newline at end of file +2.0.9457-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/nginx.sh b/type/__jitsi_meet_domain/files/nginx.sh index 249aa93..241de9b 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh +++ b/type/__jitsi_meet_domain/files/nginx.sh @@ -12,6 +12,11 @@ JITSI_NGINX_CONFIG="$(cat < Date: Thu, 16 May 2024 11:59:34 +0200 Subject: [PATCH 04/17] __jitsi_meet: improve screensharing in certain situations We had been noticing issues when sharing screen that required refreshing (sometimes from presentors, sometimes from receivers), or else people would get a shared black screen or hanging screen after some time. This somewhat undocumented jitsi-videobridge setting appears to have fixed the issue on all instances tested: videobridge.cc.trust-bwe = false Announcement: https://agora.exo.cat/t/exofasia-3/276#meetexocatguifinet-4 Relevant links: - https://community.jitsi.org/t/jitsi-users-video-turned-off-to-save-bandwidth-on-meet-jit-si/12735/2 - https://github.com/jitsi/jitsi-videobridge/blob/master/CONFIG.md#migrating-from-old-config Sponsored by: camilion.eu, eXO.cat --- type/__jitsi_meet/manifest | 3 +++ 1 file changed, 3 insertions(+) diff --git a/type/__jitsi_meet/manifest b/type/__jitsi_meet/manifest index 63c8a28..0c210a3 100755 --- a/type/__jitsi_meet/manifest +++ b/type/__jitsi_meet/manifest @@ -254,6 +254,9 @@ videobridge { enabled = true } } + cc { + trust-bwe = false + } } EOFJVB From fe523fe9937dd05a0deb3cbbd79cf4311e46112d Mon Sep 17 00:00:00 2001 From: Evilham Date: Thu, 16 May 2024 12:36:40 +0200 Subject: [PATCH 05/17] __opendkim: fix start_on_boot on FreeBSD There was a bit of an oddity with this, it is implemented in a way that should not be an issue for other systems. Reviewed at: https://code.ungleich.ch/ungleich-public/cdist-contrib/pulls/31 --- type/__opendkim/manifest | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/type/__opendkim/manifest b/type/__opendkim/manifest index dbd9fc0..28dd808 100755 --- a/type/__opendkim/manifest +++ b/type/__opendkim/manifest @@ -29,6 +29,7 @@ case "$os" in 'freebsd') CFG_DIR="/usr/local/etc/mail" service="milter-opendkim" + start_service="milteropendkim" ;; *) printf "__opendkim does not yet support %s.\n" "$os" >&2 @@ -90,7 +91,11 @@ fi require="__package/opendkim" __file "$target_file" \ --source "$source_file" --mode 0644 -require="__package/opendkim" __start_on_boot "${service}" +# Due to the way rc.conf works on *BSD, we find ourselves in the awkward +# situation, where a service's name can contain a '-' symbol, but the +# rc.conf setting to enable a service at boot cannot. +# Unless start_service has been defined before, these two match. +require="__package/opendkim" __start_on_boot "${start_service:-${service}}" # Ensure Key and Signing tables exist and have proper permissions key_table="${CFG_DIR}/KeyTable" @@ -105,7 +110,7 @@ require="__package/opendkim" \ --mode 444 require="__file${target_file} __file${key_table} - __file${signing_table} __start_on_boot/${service}" \ + __file${signing_table} __start_on_boot/${start_service:-${service}}" \ __check_messages opendkim \ --pattern "^__file${target_file}" \ --execute "service ${service} restart" From d8afc76fdf8f10ef578347463dfaf578eabf16ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Wed, 29 May 2024 15:34:04 +0200 Subject: [PATCH 06/17] [__opendkim*] address cdist-contrib #32 review --- type/__opendkim/files/opendkim.conf.sh | 6 +++--- type/__opendkim/man.rst | 6 +----- type/__opendkim/manifest | 21 +++++++++------------ type/__opendkim/parameter/optional | 1 - type/__opendkim_genkey/explorer/key-state | 4 +--- type/__opendkim_genkey/man.rst | 2 +- 6 files changed, 15 insertions(+), 25 deletions(-) diff --git a/type/__opendkim/files/opendkim.conf.sh b/type/__opendkim/files/opendkim.conf.sh index 7e7fab0..237b515 100755 --- a/type/__opendkim/files/opendkim.conf.sh +++ b/type/__opendkim/files/opendkim.conf.sh @@ -3,9 +3,6 @@ echo "# Managed remotely, manual changes will be lost." -# Used for OS-specific configuration. -os=$(cat "${__global:?}/explorer/os") - # Optional chdir(2) if [ "$BASEDIR" ]; then @@ -71,3 +68,6 @@ if [ "$PIDFILE" ]; then printf "PidFile %s\n" "$PIDFILE" fi + +# Custom user configuration, if any (passed via --custom-config): +$CUSTOM_CONFIG diff --git a/type/__opendkim/man.rst b/type/__opendkim/man.rst index 765e7d3..4b37558 100644 --- a/type/__opendkim/man.rst +++ b/type/__opendkim/man.rst @@ -14,7 +14,7 @@ installation and basic configuration of an instance of OpenDKIM. Note that this type does not generate or ensure that a key is present: use `cdist-type__opendkim-genkey(7)` for that. -Note that this type is currently only implemented for Debian, Alpine Linux and +Note that this type is currently only implemented for Alpine Linux, Debian and FreeBSD. Please contribute an implementation if you can. @@ -45,10 +45,6 @@ custom-config The string following this parameter is appended as-is in the configuration, to enable more complex configurations. -pidfile - Specifies the path to a file that should be created at process start - containing the process ID. - BOOLEAN PARAMETERS ------------------ syslog diff --git a/type/__opendkim/manifest b/type/__opendkim/manifest index 9565493..445139d 100755 --- a/type/__opendkim/manifest +++ b/type/__opendkim/manifest @@ -77,9 +77,10 @@ if [ -f "${__object:?}/parameter/userid" ]; then export USERID fi -if [ -f "${__object:?}/parameter/pidfile" ]; then - PIDFILE="$(cat "${__object:?}/parameter/pidfile")" - export PIDFILE +# Custom configuration handling. +if [ -f "${__object:?}/parameter/custom-config" ]; then + CUSTOM_CONFIG="$(cat "${__object:?}/parameter/custom-config")" + export CUSTOM_CONFIG fi # Debian: set configuration specific to debian packaging if no explicit value @@ -89,15 +90,17 @@ if [ "$os" = "debian" ]; then # using a local socket with MTAs that access the socket as a non-privileged # user (for example, Postfix). You may need to add user "postfix" to group # "opendkim" in that case. - if [ -z "$USERID" ]; then + + # We only set UserID if it is not provided via custom configuration. + if [ -z "$USERID" ] && echo "$CUSTOM_CONFIG" | grep -Eq '^UserID\s+\w+$'; then export USERID="opendkim" fi - if [ -z "$UMASK" ]; then + if [ -z "$UMASK" ] && echo "$CUSTOM_CONFIG" | grep -Eq '^UMask\s+\w+$'; then export UMASK="007" fi - if [ -z "$PIDFILE" ]; then + if ! echo "$CUSTOM_CONFIG" | grep -Eq '^PidFile\s+\w+$'; then export PIDFILE="/run/opendkim/opendkim.pid" fi fi @@ -113,12 +116,6 @@ mkdir -p "${__object:?}/files" "${__type:?}/files/opendkim.conf.sh" >"$source_file" -# Add user custom config -if [ -f "${__object:?}/parameter/custom-config" ]; then - echo "# Custom user config" >>"$source_file" - cat "${__object:?}/parameter/custom-config" >>"$source_file" -fi - require="__package/opendkim" __file "$target_file" \ --source "$source_file" --mode 0644 diff --git a/type/__opendkim/parameter/optional b/type/__opendkim/parameter/optional index 3ad5a9b..af59609 100644 --- a/type/__opendkim/parameter/optional +++ b/type/__opendkim/parameter/optional @@ -4,4 +4,3 @@ subdomains umask userid custom-config -pidfile diff --git a/type/__opendkim_genkey/explorer/key-state b/type/__opendkim_genkey/explorer/key-state index 5c6724d..906abc0 100755 --- a/type/__opendkim_genkey/explorer/key-state +++ b/type/__opendkim_genkey/explorer/key-state @@ -1,13 +1,11 @@ #!/bin/sh -e os=$( "${__explorer:?}/os" ) + case "$os" in 'debian') DIRECTORY="/etc/dkimkeys/" ;; -'alpine'|'freebsd') - DIRECTORY="/var/db/dkim/" -;; *) DIRECTORY="/var/db/dkim/" ;; diff --git a/type/__opendkim_genkey/man.rst b/type/__opendkim_genkey/man.rst index 5a9305f..08a0f27 100644 --- a/type/__opendkim_genkey/man.rst +++ b/type/__opendkim_genkey/man.rst @@ -22,7 +22,7 @@ associating any given `sigkey` values to this key. Take into account that if you use this type without the `--domain` and `--selector` parameters, the `$__object_id` must be in form `$domain/$selector`. -Currently, this type is only implemented for Debian, Alpine Linux and FreeBSD. +Currently, this type is only implemented for Alpine Linux, Debian and FreeBSD. Please contribute an implementation if you can. NOTE: the name of the key file under `--directory` will default to From 0f6b03b7c16f9da14ed714baf425b25a823d269e Mon Sep 17 00:00:00 2001 From: Evilham Date: Fri, 11 Apr 2025 10:20:05 +0200 Subject: [PATCH 07/17] __jitsi_meet: upgrade to 2.0.10184 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 319 +++++++++++------- .../files/config.js.sh.orig | 319 +++++++++++------- .../files/interface_config.js.sh | 13 +- .../files/interface_config.js.sh.orig | 13 +- type/__jitsi_meet_domain/files/jitsi-version | 2 +- type/__jitsi_meet_domain/files/nginx.sh | 8 + type/__jitsi_meet_domain/files/nginx.sh.orig | 8 + .../files/prosody.cfg.lua.sh | 22 +- .../files/prosody.cfg.lua.sh.orig | 19 ++ 10 files changed, 465 insertions(+), 260 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index f7511e8..7fcc7cf 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_9457" +BRANCH="jitsi-meet_10184" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index abcb0a9..d703ddd 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -56,7 +56,9 @@ var config = { bosh: 'https:///http-bind', // Websocket URL (XMPP) - // websocket: 'wss://${DOMAIN}/xmpp-websocket', + websocket: 'wss://${DOMAIN}/' + subdir + 'xmpp-websocket', + + // websocketKeepAliveUrl: 'https://${DOMAIN}/' + subdir + '_unlock', // Whether BOSH should be preferred over WebSocket if both are configured. // preferBosh: false, @@ -91,15 +93,11 @@ var config = { // Allows the setting of a custom bandwidth value from the UI. // assumeBandwidth: true, - // Disables the End to End Encryption feature. Useful for debugging - // issues related to insertable streams. - // disableE2EE: false, + // Enables use of getDisplayMedia in electron + // electronUseGetDisplayMedia: false, - // Enables supports for AV1 codec. - // enableAv1Support: false, - - // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. - // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users + // 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. @@ -117,6 +115,12 @@ var config = { // 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, }, // Disables moderator indicators. @@ -131,6 +135,9 @@ var config = { // Disables polls feature. // disablePolls: false, + // Disables demote button from self-view + // disableSelfDemote: false, + // Disables self-view tile. (hides it from tile view and from filmstrip) // disableSelfView: false, @@ -220,14 +227,45 @@ var config = { // 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_16.kw - // - https://meet.example.com/libs/krisp/models/model_32.kw - // NOTE: Krisp JS SDK v1.0.9 was tested. + // - 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', + // } // }, // }, @@ -239,9 +277,26 @@ var config = { // 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, @@ -326,9 +381,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Recording - // DEPRECATED. Use recordingService.enabled instead. - // fileRecordingsEnabled: false, - // Enable the dropbox integration. // dropbox: { // appKey: '', // Specify your app key here. @@ -349,6 +401,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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, // }, // recordingService: { @@ -421,7 +478,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // Translation languages. // // Available languages can be found in - // // ./src/react/features/transcribing/translation-languages.json. + // // ./lang/translation-languages.json. // translationLanguages: ['en', 'es', 'fr', 'ro'], // // Important languages to show on the top of the language list. @@ -442,6 +499,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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, // }, // Misc @@ -467,7 +528,16 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // videoQuality: { // // // Provides a way to set the codec preference on desktop based endpoints. - // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], + // 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: { @@ -475,6 +545,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // low: 100000, // standard: 300000, // high: 1000000, + // fullHd: 2000000, + // ultraHd: 4000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true, @@ -486,6 +558,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // low: 200000, // standard: 500000, // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true @@ -495,6 +569,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // low: 200000, // standard: 500000, // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: false @@ -504,35 +580,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // low: 100000, // standard: 300000, // high: 1200000, + // fullHd: 2500000, + // ultraHd: 5000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true, // useSimulcast: false, // useKSVC: true - // } - // - // DEPRECATED! Use \`codec specific settings\` instead. - // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for - // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values - // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on - // // 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. - // maxBitratesVideo: { - // H264: { - // low: 200000, - // standard: 500000, - // high: 1500000, - // }, - // VP8 : { - // low: 200000, - // standard: 500000, - // high: 1500000, - // }, - // VP9: { - // low: 100000, - // standard: 300000, - // high: 1200000, - // }, // }, // // // The options can be used to override default thresholds of video thumbnail heights corresponding to @@ -551,23 +605,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // }, // // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint - // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264' ], - // - // // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. - // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified - // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the - // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. - // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. - // disabledCodec: 'H264', - // - // // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. - // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, - // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only - // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the - // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this - // // to take effect. - // preferredCodec: 'VP8', - // + // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264', 'AV1' ], // }, // Notification timeouts @@ -575,6 +613,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // short: 2500, // medium: 5000, // long: 10000, + // extraLong: 60000, // }, // // Options for the recording limit notification. @@ -604,14 +643,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Disables or enables REMB support in this client (default: enabled). // enableRemb: true, - // 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 - // signaling when Octo is enabled. Also when we do an "ICE restart"(which is - // not a real ICE restart), the client maintains the TCC sequence number - // counter, but the bridge resets it. The bridge sends media packets with - // TCC sequence numbers starting from 0. - // enableIceRestart: false, - // Enables forced reload of the client when the call is migrated as a result of // the bridge going down. // enableForcedReload: true, @@ -734,6 +765,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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', it shows an intermediate page before joining, where the user can configure their devices. @@ -745,6 +782,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // hideDisplayName: false, // // List of buttons to hide from the extra join options dropdown. // hideExtraJoinButtons: ['no-audio', 'by-phone'], + // // Configuration for pre-call test + // // By setting preCallTestEnabled, you enable the pre-call test in the prejoin page. + // // ICE server credentials need to be provided over the preCallTestICEUrl + // preCallTestEnabled: false, + // preCallTestICEUrl: '' // }, // When 'true', the user cannot edit the display name. @@ -763,10 +805,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // set or the lobby is not enabled. // enableInsecureRoomNameWarning: false, - // Whether to automatically copy invitation URL after creating a room. - // Document should be focused for this option to work - // enableAutomaticUrlCopy: false, - // Array with avatar URL prefixes that need to use CORS. // corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ], @@ -848,6 +886,22 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // autoHideWhileChatIsOpen: false, // }, + // 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' ] + // ], + // 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 @@ -1029,10 +1083,14 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based // endpoints. - // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9', 'AV1' ], // // Provides a way to set the codec preference on desktop based endpoints. - // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], + // 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). @@ -1044,15 +1102,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // { urls: 'stun:jitsi-meet.example.com:3478' }, { urls: 'stun:${TURN_SERVER}:443' }, ], - - // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. - // Provides a way to set the video codec preference on the p2p connection. Acceptable - // codec values are 'VP8', 'VP9' and 'H264'. - // preferredCodec: 'H264', - - // DEPRECATED! Use \`codecPreferenceOrder/mobileCodecPreferenceOrder\` instead. - // Provides a way to prevent a video codec from being negotiated on the p2p connection. - // disabledCodec: '', }, analytics: { @@ -1060,9 +1109,6 @@ ${ANALYTICS_SETTINGS} // True if the analytics should be disabled // disabled: false, - // The Google Analytics Tracking ID: - // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1', - // Matomo configuration: // matomoEndpoint: 'https://your-matomo-endpoint/', // matomoSiteID: '42', @@ -1100,7 +1146,6 @@ ${ANALYTICS_SETTINGS} // Array of script URLs to load as lib-jitsi-meet "analytics handlers". // scriptURLs: [ - // "libs/analytics-ga.min.js", // google-analytics // "https://example.com/my-custom-analytics.js", // ], @@ -1186,6 +1231,7 @@ ${ANALYTICS_SETTINGS} // warning: '', // }, // externallyManagedKey: false, + // disabled: false, // }, // Options related to end-to-end (participant to participant) ping. @@ -1347,8 +1393,12 @@ ${ANALYTICS_SETTINGS} 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, + inviteDomain: 'example-company.org', // The hex value for the colour used as background backgroundColor: '#fff', // The url for the image used as background @@ -1407,6 +1457,13 @@ ${ANALYTICS_SETTINGS} */ dynamicBrandingUrl: "${DYNAMIC_BRANDING_URL}", + // 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 @@ -1529,26 +1586,64 @@ ${ANALYTICS_SETTINGS} // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before // and will automatically redirect to the token service to get the token for the meeting. // tokenAuthUrlAutoRedirect: false + // An option to respect the context.tenant jwt field compared to the current tenant from the url + // tokenRespectTenant: 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 + // }, + // }, + // 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 - debug - debugAudioLevels deploymentInfo dialOutAuthUrl dialOutCodesUrl dialOutRegionUrl disableRemoteControl - displayJids - firefox_fake_device - googleApiApplicationClientID iAmRecorder iAmSipGateway microsoftApiApplicationClientID - peopleSearchQueryTypes - peopleSearchUrl - requireDisplayName */ /** @@ -1564,14 +1659,7 @@ ${ANALYTICS_SETTINGS} _peerConnStatusRtcMuteTimeout avgRtpStatsN desktopSharingSources - disableAEC - disableAGC - disableAP - disableHPF disableLocalStats - disableNS - enableTalkWhileMuted - forceTurnRelay hiddenDomain hiddenFromRecorderFeatureEnabled ignoreStartMuted @@ -1648,7 +1736,7 @@ ${ANALYTICS_SETTINGS} // '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 partcipant used raise hand, + // '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" @@ -1669,7 +1757,7 @@ ${ANALYTICS_SETTINGS} // '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 + // 'transcribing.failed', // shown when transcribing fails // ], // List of notifications to be disabled. Works in tandem with the above setting. @@ -1679,7 +1767,7 @@ ${ANALYTICS_SETTINGS} // disableFilmstripAutohiding: false, // filmstrip: { - // // Disable the vertical/horizonal 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. @@ -1728,8 +1816,6 @@ ${ANALYTICS_SETTINGS} // tileTime: 5000, // // Limit results by rating: g, pg, pg-13, r. Default value: g. // rating: 'pg', - // // The proxy server url for giphy requests in the web app. - // proxyUrl: 'https://giphy-proxy.example.com', // }, // Logging @@ -1740,9 +1826,10 @@ ${ANALYTICS_SETTINGS} // //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', + // // 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 @@ -1759,7 +1846,7 @@ ${ANALYTICS_SETTINGS} // // 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, + // limitUrl: 'https://example.com/blog/whiteboard-limits', // }, // The watchRTC initialize config params as described : @@ -1795,13 +1882,13 @@ ${ANALYTICS_SETTINGS} // collectionInterval?: number; // logGetStats?: boolean; // }, -}; -// Temporary backwards compatibility with old mobile clients. -config.flags = config.flags || {}; -config.flags.sourceNameSignaling = true; -config.flags.sendMultipleVideoStreams = true; -config.flags.receiveMultipleVideoStreams = true; + // 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, +}; // Set the default values for JaaS customers if (enableJaaS) { diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 6cc6723..5b62ced 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -49,7 +49,9 @@ var config = { bosh: 'https://jitsi-meet.example.com/' + subdir + 'http-bind', // Websocket URL (XMPP) - // websocket: 'wss://jitsi-meet.example.com/' + subdir + 'xmpp-websocket', + websocket: 'wss://jitsi-meet.example.com/' + subdir + 'xmpp-websocket', + + // websocketKeepAliveUrl: 'https://jitsi-meet.example.com/' + subdir + '_unlock', // Whether BOSH should be preferred over WebSocket if both are configured. // preferBosh: false, @@ -84,15 +86,11 @@ var config = { // Allows the setting of a custom bandwidth value from the UI. // assumeBandwidth: true, - // Disables the End to End Encryption feature. Useful for debugging - // issues related to insertable streams. - // disableE2EE: false, + // Enables use of getDisplayMedia in electron + // electronUseGetDisplayMedia: false, - // Enables supports for AV1 codec. - // enableAv1Support: false, - - // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. - // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users + // 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. @@ -110,6 +108,12 @@ var config = { // 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, }, // Disables moderator indicators. @@ -124,6 +128,9 @@ var config = { // Disables polls feature. // disablePolls: false, + // Disables demote button from self-view + // disableSelfDemote: false, + // Disables self-view tile. (hides it from tile view and from filmstrip) // disableSelfView: false, @@ -213,14 +220,45 @@ var config = { // 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_16.kw - // - https://meet.example.com/libs/krisp/models/model_32.kw - // NOTE: Krisp JS SDK v1.0.9 was tested. + // - 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', + // } // }, // }, @@ -232,9 +270,26 @@ var config = { // 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, @@ -318,9 +373,6 @@ var config = { // Recording - // DEPRECATED. Use recordingService.enabled instead. - // fileRecordingsEnabled: false, - // Enable the dropbox integration. // dropbox: { // appKey: '', // Specify your app key here. @@ -341,6 +393,11 @@ var config = { // // 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, // }, // recordingService: { @@ -413,7 +470,7 @@ var config = { // // Translation languages. // // Available languages can be found in - // // ./src/react/features/transcribing/translation-languages.json. + // // ./lang/translation-languages.json. // translationLanguages: ['en', 'es', 'fr', 'ro'], // // Important languages to show on the top of the language list. @@ -434,6 +491,10 @@ var config = { // // 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, // }, // Misc @@ -459,7 +520,16 @@ var config = { // videoQuality: { // // // Provides a way to set the codec preference on desktop based endpoints. - // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], + // 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: { @@ -467,6 +537,8 @@ var config = { // low: 100000, // standard: 300000, // high: 1000000, + // fullHd: 2000000, + // ultraHd: 4000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true, @@ -478,6 +550,8 @@ var config = { // low: 200000, // standard: 500000, // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true @@ -487,6 +561,8 @@ var config = { // low: 200000, // standard: 500000, // high: 1500000, + // fullHd: 3000000, + // ultraHd: 6000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: false @@ -496,35 +572,13 @@ var config = { // low: 100000, // standard: 300000, // high: 1200000, + // fullHd: 2500000, + // ultraHd: 5000000, // ssHigh: 2500000 // }, // scalabilityModeEnabled: true, // useSimulcast: false, // useKSVC: true - // } - // - // DEPRECATED! Use `codec specific settings` instead. - // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for - // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values - // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on - // // 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. - // maxBitratesVideo: { - // H264: { - // low: 200000, - // standard: 500000, - // high: 1500000, - // }, - // VP8 : { - // low: 200000, - // standard: 500000, - // high: 1500000, - // }, - // VP9: { - // low: 100000, - // standard: 300000, - // high: 1200000, - // }, // }, // // // The options can be used to override default thresholds of video thumbnail heights corresponding to @@ -543,23 +597,7 @@ var config = { // }, // // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint - // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264' ], - // - // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. - // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified - // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the - // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. - // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. - // disabledCodec: 'H264', - // - // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. - // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, - // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only - // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the - // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this - // // to take effect. - // preferredCodec: 'VP8', - // + // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264', 'AV1' ], // }, // Notification timeouts @@ -567,6 +605,7 @@ var config = { // short: 2500, // medium: 5000, // long: 10000, + // extraLong: 60000, // }, // // Options for the recording limit notification. @@ -596,14 +635,6 @@ var config = { // Disables or enables REMB support in this client (default: enabled). // enableRemb: true, - // 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 - // signaling when Octo is enabled. Also when we do an "ICE restart"(which is - // not a real ICE restart), the client maintains the TCC sequence number - // counter, but the bridge resets it. The bridge sends media packets with - // TCC sequence numbers starting from 0. - // enableIceRestart: false, - // Enables forced reload of the client when the call is migrated as a result of // the bridge going down. // enableForcedReload: true, @@ -726,6 +757,12 @@ var config = { // 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', it shows an intermediate page before joining, where the user can configure their devices. @@ -737,6 +774,11 @@ var config = { // hideDisplayName: false, // // List of buttons to hide from the extra join options dropdown. // hideExtraJoinButtons: ['no-audio', 'by-phone'], + // // Configuration for pre-call test + // // By setting preCallTestEnabled, you enable the pre-call test in the prejoin page. + // // ICE server credentials need to be provided over the preCallTestICEUrl + // preCallTestEnabled: false, + // preCallTestICEUrl: '' // }, // When 'true', the user cannot edit the display name. @@ -755,10 +797,6 @@ var config = { // set or the lobby is not enabled. // enableInsecureRoomNameWarning: false, - // Whether to automatically copy invitation URL after creating a room. - // Document should be focused for this option to work - // enableAutomaticUrlCopy: false, - // Array with avatar URL prefixes that need to use CORS. // corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ], @@ -840,6 +878,22 @@ var config = { // autoHideWhileChatIsOpen: false, // }, + // 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' ] + // ], + // 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 @@ -1021,10 +1075,14 @@ var config = { // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based // endpoints. - // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9', 'AV1' ], // // Provides a way to set the codec preference on desktop based endpoints. - // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], + // 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). @@ -1036,24 +1094,12 @@ var config = { // { urls: 'stun:jitsi-meet.example.com:3478' }, { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }, ], - - // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. - // Provides a way to set the video codec preference on the p2p connection. Acceptable - // codec values are 'VP8', 'VP9' and 'H264'. - // preferredCodec: 'H264', - - // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. - // Provides a way to prevent a video codec from being negotiated on the p2p connection. - // disabledCodec: '', }, analytics: { // True if the analytics should be disabled // disabled: false, - // The Google Analytics Tracking ID: - // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1', - // Matomo configuration: // matomoEndpoint: 'https://your-matomo-endpoint/', // matomoSiteID: '42', @@ -1091,7 +1137,6 @@ var config = { // Array of script URLs to load as lib-jitsi-meet "analytics handlers". // scriptURLs: [ - // "libs/analytics-ga.min.js", // google-analytics // "https://example.com/my-custom-analytics.js", // ], @@ -1177,6 +1222,7 @@ var config = { // warning: '', // }, // externallyManagedKey: false, + // disabled: false, // }, // Options related to end-to-end (participant to participant) ping. @@ -1334,8 +1380,12 @@ var config = { 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, + inviteDomain: 'example-company.org', // The hex value for the colour used as background backgroundColor: '#fff', // The url for the image used as background @@ -1394,6 +1444,13 @@ var config = { */ // dynamicBrandingUrl: '', + // 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 @@ -1516,26 +1573,64 @@ var config = { // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before // and will automatically redirect to the token service to get the token for the meeting. // tokenAuthUrlAutoRedirect: false + // An option to respect the context.tenant jwt field compared to the current tenant from the url + // tokenRespectTenant: 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 + // }, + // }, + // 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 - debug - debugAudioLevels deploymentInfo dialOutAuthUrl dialOutCodesUrl dialOutRegionUrl disableRemoteControl - displayJids - firefox_fake_device - googleApiApplicationClientID iAmRecorder iAmSipGateway microsoftApiApplicationClientID - peopleSearchQueryTypes - peopleSearchUrl - requireDisplayName */ /** @@ -1551,14 +1646,7 @@ var config = { _peerConnStatusRtcMuteTimeout avgRtpStatsN desktopSharingSources - disableAEC - disableAGC - disableAP - disableHPF disableLocalStats - disableNS - enableTalkWhileMuted - forceTurnRelay hiddenDomain hiddenFromRecorderFeatureEnabled ignoreStartMuted @@ -1635,7 +1723,7 @@ var config = { // '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 partcipant used raise hand, + // '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" @@ -1656,7 +1744,7 @@ var config = { // '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 + // 'transcribing.failed', // shown when transcribing fails // ], // List of notifications to be disabled. Works in tandem with the above setting. @@ -1666,7 +1754,7 @@ var config = { // disableFilmstripAutohiding: false, // filmstrip: { - // // Disable the vertical/horizonal 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. @@ -1715,8 +1803,6 @@ var config = { // tileTime: 5000, // // Limit results by rating: g, pg, pg-13, r. Default value: g. // rating: 'pg', - // // The proxy server url for giphy requests in the web app. - // proxyUrl: 'https://giphy-proxy.example.com', // }, // Logging @@ -1727,9 +1813,10 @@ var config = { // //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', + // // 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 @@ -1746,7 +1833,7 @@ var config = { // // 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, + // limitUrl: 'https://example.com/blog/whiteboard-limits', // }, // The watchRTC initialize config params as described : @@ -1782,13 +1869,13 @@ var config = { // collectionInterval?: number; // logGetStats?: boolean; // }, -}; -// Temporary backwards compatibility with old mobile clients. -config.flags = config.flags || {}; -config.flags.sourceNameSignaling = true; -config.flags.sendMultipleVideoStreams = true; -config.flags.receiveMultipleVideoStreams = true; + // 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, +}; // Set the default values for JaaS customers if (enableJaaS) { diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh b/type/__jitsi_meet_domain/files/interface_config.js.sh index e9d8a21..6142281 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh @@ -52,14 +52,6 @@ var interfaceConfig = { */ DISABLE_PRESENCE_STATUS: false, - /** - * Whether the ringing sound in the call/ring overlay is disabled. If - * {@code undefined}, defaults to {@code false}. - * - * @type {boolean} - */ - DISABLE_RINGING: false, - /** * Whether the speech to text transcription subtitles panel is disabled. * If {@code undefined}, defaults to {@code false}. @@ -81,9 +73,6 @@ var interfaceConfig = { ENABLE_DIAL_OUT: true, - // DEPRECATED. Animation no longer supported. - // ENABLE_FEEDBACK_ANIMATION: false, - FILM_STRIP_MAX_HEIGHT: 120, GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, @@ -238,7 +227,7 @@ var interfaceConfig = { /** * Specify custom URL for downloading f droid app. */ - // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/', + // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/packages/org.jitsi.meet/', // Connection indicators ( // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig index ae1ea30..07fa56d 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig @@ -41,14 +41,6 @@ var interfaceConfig = { */ DISABLE_PRESENCE_STATUS: false, - /** - * Whether the ringing sound in the call/ring overlay is disabled. If - * {@code undefined}, defaults to {@code false}. - * - * @type {boolean} - */ - DISABLE_RINGING: false, - /** * Whether the speech to text transcription subtitles panel is disabled. * If {@code undefined}, defaults to {@code false}. @@ -70,9 +62,6 @@ var interfaceConfig = { ENABLE_DIAL_OUT: true, - // DEPRECATED. Animation no longer supported. - // ENABLE_FEEDBACK_ANIMATION: false, - FILM_STRIP_MAX_HEIGHT: 120, GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, @@ -227,7 +216,7 @@ var interfaceConfig = { /** * Specify custom URL for downloading f droid app. */ - // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/', + // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/packages/org.jitsi.meet/', // Connection indicators ( // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index aa2ad3c..ce2e564 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.9457-1 \ No newline at end of file +2.0.10184-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/nginx.sh b/type/__jitsi_meet_domain/files/nginx.sh index 241de9b..853aaf6 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh +++ b/type/__jitsi_meet_domain/files/nginx.sh @@ -194,10 +194,18 @@ server { # 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://jicofo/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; diff --git a/type/__jitsi_meet_domain/files/nginx.sh.orig b/type/__jitsi_meet_domain/files/nginx.sh.orig index 5b96ec9..0ea213d 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh.orig +++ b/type/__jitsi_meet_domain/files/nginx.sh.orig @@ -150,10 +150,18 @@ server { # 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; diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh index d696709..ee60fdd 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh @@ -30,6 +30,10 @@ PROSODY_CONFIG="$(cat < Date: Sat, 26 Apr 2025 18:49:54 +0200 Subject: [PATCH 08/17] __single_binary_service: add more features - the type can now deploy single-binary services that are not downloaded (--url), but held in the cdist-controller instead (--local-source) - We can also specify the destination of the service's configuration file (--config-file-destination) - And the permissions of the service's working directory (--working-directory-permissions) --- type/__single_binary_service/man.rst | 28 +++-- type/__single_binary_service/manifest | 105 +++++++++++++----- .../parameter/default/checksum | 0 .../parameter/default/local-source | 0 .../parameter/default/url | 0 .../default/working-directory-permissions | 1 + .../parameter/optional | 5 + .../parameter/required | 2 - 8 files changed, 103 insertions(+), 38 deletions(-) create mode 100644 type/__single_binary_service/parameter/default/checksum create mode 100644 type/__single_binary_service/parameter/default/local-source create mode 100644 type/__single_binary_service/parameter/default/url create mode 100644 type/__single_binary_service/parameter/default/working-directory-permissions diff --git a/type/__single_binary_service/man.rst b/type/__single_binary_service/man.rst index 464785f..47bcdbd 100644 --- a/type/__single_binary_service/man.rst +++ b/type/__single_binary_service/man.rst @@ -29,13 +29,6 @@ the init system being used. REQUIRED PARAMETERS ------------------- -checksum - This will be passed verbatim to `__download(7)`. - Use something like `sha256:...`. - -url - This will be passed verbatim to `__download(7)`. - version This type will use a thumbstone file with a "version" number to track whether or not a service must be updated. @@ -59,12 +52,29 @@ do-not-manage-user OPTIONAL PARAMETERS ------------------- +checksum + This will be passed verbatim to `__download(7)`. + Use something like `sha256:...`. + Required if using `--url`. + +config-file-destination + The remote path in which to locate the service's configuration. + Defaults to `ETC_DIR/${__object_id}.conf`. + config-file-source If present, this file's contents will be placed under `/etc/${__object_id}.conf` with permissions `0440` and ownership assigned to `--user` and `--group`. If `-` is passed, this type's `stdin` will be used. +local-source + A file on the cdist controller that will be used instead of downloading + the binary. + +url + This will be passed verbatim to `__download(7)`. + When used, you must specify `--checksum` as well. + user The user under which the service will run. Defaults to `root`. If this user is not `root` and `--do-not-manage-user` is not present, @@ -130,6 +140,10 @@ unpack-extension working-directory If set, the working directory with which the service will be started. +working-directory-permissions + The permissions that will be set for the working directory. + Defaults to `0750`. + OPTIONAL MULTIPLE PARAMETERS ---------------------------- diff --git a/type/__single_binary_service/manifest b/type/__single_binary_service/manifest index e9d1691..8277603 100755 --- a/type/__single_binary_service/manifest +++ b/type/__single_binary_service/manifest @@ -1,4 +1,4 @@ -#!/bin/sh -e +#!/bin/sh -eu SERVICE_NAME="${__object_id}" OS="$(cat "${__global}/explorer/os")" @@ -32,7 +32,7 @@ case "${INIT}" in service_command="sv %s ${SERVICE_NAME}" ;; *) - echo "Init system ${INIT}' is currently not supported." >&2 + echo "Init system '${INIT}' is currently not supported." >&2 exit 1 ;; esac @@ -44,7 +44,7 @@ BIN_DIR="/usr/local/bin" __directory "${BIN_DIR}" \ --state "exists" \ --mode 0755 -export require="${require} __directory${BIN_DIR}" +export require="${require:-} __directory${BIN_DIR}" STATE="$(cat "${__object}/parameter/state")" USER="$(cat "${__object}/parameter/user")" @@ -86,18 +86,30 @@ fi SERVICE_DEFINITION="$(cat "${__object}/parameter/service-definition" 2>/dev/null || true)" -WORKING_DIRECTORY_PATH="$(cat "${__object}/parameter/working-directory" 2>/dev/null || true)" -if [ -n "${WORKING_DIRECTORY_PATH}" ]; then - WORKING_DIRECTORY_SYSTEMD="WorkingDirectory=${WORKING_DIRECTORY_PATH}" - WORKING_DIRECTORY_RUNIT="cd '${WORKING_DIRECTORY_PATH}'" -fi - -DOWNLOAD_URL="$(cat "${__object}/parameter/url")" CHECKSUM="$(cat "${__object}/parameter/checksum")" SHOULD_VERSION="$(cat "${__object}/parameter/version")" +DOWNLOAD_URL="$(cat "${__object}/parameter/url")" +LOCAL_SOURCE="$(cat "${__object}/parameter/local-source")" +if [ -z "${DOWNLOAD_URL}${LOCAL_SOURCE}" ]; then + cat >&1 <<-EOM + Exactly one of --url or --local-source must be specified. + EOM + exit 1 +fi +if [ -n "${DOWNLOAD_URL}" ] && [ -z "${CHECKSUM}" ]; then + cat >&1 <<-EOM + You must specify --checksum when using --url. + EOM + exit 1 +fi +if [ "${LOCAL_SOURCE}" = "-" ]; then + LOCAL_SOURCE="${__object}/stdin" +fi # Create a user for the service if it is not root USER_HOME_DIR="/root" +require_user_created="" +service_require="" if [ "${USER}" != "root" ] && \ [ ! -f "${__object}/parameter/do-not-manage-user" ]; then if [ "${STATE}" = "absent" ]; then @@ -108,24 +120,45 @@ if [ "${USER}" != "root" ] && \ if [ "${USER_HOME_DIR}" != "/nonexistent" ]; then USER_CREATE_HOME="--create-home" fi - require="${require} ${user_require}" __user "${USER}" \ + require="${require} ${user_require:-}" __user "${USER}" \ --system \ --state "${STATE}" \ --home "${USER_HOME_DIR}" \ --comment "cdist-managed service user" \ ${USER_CREATE_HOME} + require_user_created="__user/${USER}" # Track dependencies - service_require="${service_require} __user/${USER}" + service_require="${service_require} ${require_user_created}" +fi + +# Adapt directory permissions when necessary +WORKING_DIRECTORY_PERMISSIONS="$(cat "${__object}/parameter/working-directory-permissions")" +WORKING_DIRECTORY_PATH="$(cat "${__object}/parameter/working-directory" 2>/dev/null || true)" +if [ -n "${WORKING_DIRECTORY_PATH}" ]; then + WORKING_DIRECTORY_SYSTEMD="WorkingDirectory=${WORKING_DIRECTORY_PATH}" + WORKING_DIRECTORY_RUNIT="cd '${WORKING_DIRECTORY_PATH}'" + require="${require_user_created}" __directory \ + "${WORKING_DIRECTORY_PATH}" --state present \ + --mode "${WORKING_DIRECTORY_PERMISSIONS}" \ + --owner "${USER}" --group "${GROUP}" fi # Place config file if necessary -CONFIG_FILE_DEST="${ETC_DIR}/${SERVICE_NAME}.conf" +CONFIG_FILE_DEST="$(cat "${__object}/parameter/config-file-destination" 2>/dev/null || true)" +if [ -z "${CONFIG_FILE_DEST}" ]; then + CONFIG_FILE_DEST="${ETC_DIR}/${SERVICE_NAME}.conf" +else + require="${require_user_created}" __directory \ + "$(dirname "${WORKING_DIRECTORY_PATH}")" --state present \ + --mode "${WORKING_DIRECTORY_PERMISSIONS}" \ + --owner "${USER}" --group "${GROUP}" +fi CONFIG_FILE_SOURCE="$(cat "${__object}/parameter/config-file-source" 2>/dev/null || true)" if [ "${CONFIG_FILE_SOURCE}" = "-" ]; then CONFIG_FILE_SOURCE="${__object}/stdin" fi if [ -n "${CONFIG_FILE_SOURCE}" ] && [ "${STATE}" = "present" ]; then - require="${require} __user/${USER}" __file \ + require="${require} ${require_user_created}" __file \ "${CONFIG_FILE_DEST}" \ --owner "${USER}" \ --group "${GROUP}" \ @@ -164,7 +197,7 @@ Group=${GROUP} ExecStart=${SERVICE_EXEC} Restart=always EnvironmentFile=${SYSTEMD_ENV_FILE} -${WORKING_DIRECTORY_SYSTEMD} +${WORKING_DIRECTORY_SYSTEMD:-} [Install] WantedBy=multi-user.target @@ -261,15 +294,23 @@ EOF UNPACK_EXTENSION="$(cat "${__object}/parameter/unpack-extension")" UNPACK_ARGS="$(cat "${__object}/parameter/unpack-args" \ 2>/dev/null || true)" - # Download packed file - __download "${TMP_PATH}${UNPACK_EXTENSION}" \ - --url "${DOWNLOAD_URL}" \ - --download remote \ - --sum "${CHECKSUM}" + # Place packed file + if [ -n "${DOWNLOAD_URL}" ]; then + __download "${TMP_PATH}${UNPACK_EXTENSION}" \ + --url "${DOWNLOAD_URL}" \ + --download remote \ + --sum "${CHECKSUM}" + require_place_file="__download${TMP_PATH}${UNPACK_EXTENSION}" + else + # TODO: this doesn't use CHECKSUM + __file "${TMP_PATH}${UNPACK_EXTENSION}" \ + --source "${LOCAL_SOURCE}" + require_place_file="__file${TMP_PATH}${UNPACK_EXTENSION}" + fi # Unpack file and also perform service upgrade # shellcheck disable=SC2086 - require="__download${TMP_PATH}${UNPACK_EXTENSION}" \ + require="${require_place_file}" \ __unpack "${TMP_PATH}${UNPACK_EXTENSION}" \ ${UNPACK_ARGS} \ --destination "${TMP_PATH}" @@ -277,14 +318,20 @@ EOF else # Create temp directory __directory "${TMP_PATH}" - # Download binary directoy to the temp directory with the - # specified binary name - require="__directory${TMP_PATH}" __download \ - "${TMP_PATH}/${BINARY}" \ - --url "${DOWNLOAD_URL}" \ - --download remote \ - --sum "${CHECKSUM}" - version_bump_require="__download${TMP_PATH}/${BINARY}" + # Place in temp directory with the specified binary name + if [ -n "${DOWNLOAD_URL}" ]; then + require="__directory${TMP_PATH}" __download \ + "${TMP_PATH}/${BINARY}" \ + --url "${DOWNLOAD_URL}" \ + --download remote \ + --sum "${CHECKSUM}" + version_bump_require="__download${TMP_PATH}/${BINARY}" + else + require="__directory${TMP_PATH}" __file \ + "${TMP_PATH}/${BINARY}" \ + --source "${LOCAL_SOURCE}" + version_bump_require="__file${TMP_PATH}/${BINARY}" + fi fi # Perform update of cdist-managed version file diff --git a/type/__single_binary_service/parameter/default/checksum b/type/__single_binary_service/parameter/default/checksum new file mode 100644 index 0000000..e69de29 diff --git a/type/__single_binary_service/parameter/default/local-source b/type/__single_binary_service/parameter/default/local-source new file mode 100644 index 0000000..e69de29 diff --git a/type/__single_binary_service/parameter/default/url b/type/__single_binary_service/parameter/default/url new file mode 100644 index 0000000..e69de29 diff --git a/type/__single_binary_service/parameter/default/working-directory-permissions b/type/__single_binary_service/parameter/default/working-directory-permissions new file mode 100644 index 0000000..4cd9d53 --- /dev/null +++ b/type/__single_binary_service/parameter/default/working-directory-permissions @@ -0,0 +1 @@ +0750 diff --git a/type/__single_binary_service/parameter/optional b/type/__single_binary_service/parameter/optional index e51681b..b4ada3d 100644 --- a/type/__single_binary_service/parameter/optional +++ b/type/__single_binary_service/parameter/optional @@ -1,14 +1,19 @@ +checksum config-file-source +config-file-destination env user group state binary +local-source service-args service-exec service-description service-definition unpack-extension unpack-args +url user-home-dir working-directory +working-directory-permissions diff --git a/type/__single_binary_service/parameter/required b/type/__single_binary_service/parameter/required index b1e8d01..088eda4 100644 --- a/type/__single_binary_service/parameter/required +++ b/type/__single_binary_service/parameter/required @@ -1,3 +1 @@ -url -checksum version From 7c0ec375ff26968a1bf208b82d5a69431d6bbc1a Mon Sep 17 00:00:00 2001 From: Evilham Date: Mon, 5 May 2025 20:22:05 +0200 Subject: [PATCH 09/17] __single_binary_service: fix oddities when removing a service We were requiring too many arguments --- type/__single_binary_service/man.rst | 16 +++++++--------- type/__single_binary_service/manifest | 10 ++++++++-- type/__single_binary_service/parameter/optional | 1 + type/__single_binary_service/parameter/required | 1 - 4 files changed, 16 insertions(+), 12 deletions(-) delete mode 100644 type/__single_binary_service/parameter/required diff --git a/type/__single_binary_service/man.rst b/type/__single_binary_service/man.rst index 47bcdbd..1f94cd9 100644 --- a/type/__single_binary_service/man.rst +++ b/type/__single_binary_service/man.rst @@ -27,15 +27,6 @@ This type supports services managed by `__runit(7)` when `systemd` is not the init system being used. -REQUIRED PARAMETERS -------------------- -version - This type will use a thumbstone file with a "version" number to track - whether or not a service must be updated. - This thumbstone file is placed under - `/usr/local/bin/.${__object_id}.cdist.version`. - - BOOLEAN PARAMETERS ------------------ unpack @@ -52,6 +43,13 @@ do-not-manage-user OPTIONAL PARAMETERS ------------------- +version + Required when installing a service. + This type will use a thumbstone file with a "version" number to track + whether or not a service must be updated. + This thumbstone file is placed under + `/usr/local/bin/.${__object_id}.cdist.version`. + checksum This will be passed verbatim to `__download(7)`. Use something like `sha256:...`. diff --git a/type/__single_binary_service/manifest b/type/__single_binary_service/manifest index 8277603..f46d62e 100755 --- a/type/__single_binary_service/manifest +++ b/type/__single_binary_service/manifest @@ -87,10 +87,16 @@ fi SERVICE_DEFINITION="$(cat "${__object}/parameter/service-definition" 2>/dev/null || true)" CHECKSUM="$(cat "${__object}/parameter/checksum")" -SHOULD_VERSION="$(cat "${__object}/parameter/version")" +SHOULD_VERSION="$(cat "${__object}/parameter/version" 2>/dev/null || true)" DOWNLOAD_URL="$(cat "${__object}/parameter/url")" LOCAL_SOURCE="$(cat "${__object}/parameter/local-source")" -if [ -z "${DOWNLOAD_URL}${LOCAL_SOURCE}" ]; then +if [ "${STATE}" = "present" ] && [ -z "${SHOULD_VERSION}" ]; then + cat >&1 <<-EOM + When installing a service, --version must be specified. + EOM + exit 1 +fi +if [ "${STATE}" = "present" ] && [ -z "${DOWNLOAD_URL}${LOCAL_SOURCE}" ]; then cat >&1 <<-EOM Exactly one of --url or --local-source must be specified. EOM diff --git a/type/__single_binary_service/parameter/optional b/type/__single_binary_service/parameter/optional index b4ada3d..aaed0ac 100644 --- a/type/__single_binary_service/parameter/optional +++ b/type/__single_binary_service/parameter/optional @@ -15,5 +15,6 @@ unpack-extension unpack-args url user-home-dir +version working-directory working-directory-permissions diff --git a/type/__single_binary_service/parameter/required b/type/__single_binary_service/parameter/required deleted file mode 100644 index 088eda4..0000000 --- a/type/__single_binary_service/parameter/required +++ /dev/null @@ -1 +0,0 @@ -version From ca1eba2b223212e1322147fa10f03fd5a3cacbad Mon Sep 17 00:00:00 2001 From: Evilham Date: Wed, 2 Jul 2025 16:25:22 +0200 Subject: [PATCH 10/17] __jitsi_meet: upgrade to 2.0.10314 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 57 ++++++++++++------- .../files/config.js.sh.orig | 52 ++++++++++------- .../files/interface_config.js.sh | 11 ---- .../files/interface_config.js.sh.orig | 11 ---- type/__jitsi_meet_domain/files/jitsi-version | 2 +- .../files/prosody.cfg.lua.sh.orig | 1 + 7 files changed, 71 insertions(+), 65 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 7fcc7cf..2f93b72 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10184" +BRANCH="jitsi-meet_10314" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index d703ddd..193bd8e 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -96,6 +96,9 @@ var config = { // 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, @@ -132,6 +135,9 @@ var config = { // Disables the reactions moderation feature. // disableReactionsModeration: false, + // Disables the reactions in chat feature. + disableReactionsInChat: true, // This has been annoying =D + // Disables polls feature. // disablePolls: false, @@ -406,6 +412,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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: { @@ -503,6 +513,14 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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, + + // // Whether to invite jigasi when backend transcriptions are enabled. By default, we invite it. + // inviteJigasiOnBackendTranscribing: true, // }, // Misc @@ -614,6 +632,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // medium: 5000, // long: 10000, // extraLong: 60000, + // sticky: 0, // }, // // Options for the recording limit notification. @@ -831,8 +850,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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 + // - 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: [ @@ -1263,9 +1281,6 @@ ${ANALYTICS_SETTINGS} // disableDeepLinking: false, // The deeplinking config. - // For information about the properties of - // deeplinking.[ios/android].dynamicLink check: - // https://firebase.google.com/docs/dynamic-links/create-manually // deeplinking: { // // // The desktop deeplinking config, disabled by default. @@ -1294,13 +1309,6 @@ ${ANALYTICS_SETTINGS} // appScheme: 'org.jitsi.meet', // // Custom URL for downloading ios mobile app. // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // }, // // The android deeplinking config. @@ -1313,13 +1321,6 @@ ${ANALYTICS_SETTINGS} // // Android app package name. // appPackage: 'org.jitsi.meet', // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // } // }, @@ -1393,9 +1394,9 @@ ${ANALYTICS_SETTINGS} 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. + // 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. + // 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', @@ -1588,6 +1589,9 @@ ${ANALYTICS_SETTINGS} // tokenAuthUrlAutoRedirect: false // 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, // 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" @@ -1888,7 +1892,16 @@ ${ANALYTICS_SETTINGS} // 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) { diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 5b62ced..21de0c5 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -89,6 +89,9 @@ var config = { // 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, @@ -125,6 +128,9 @@ var config = { // Disables the reactions moderation feature. // disableReactionsModeration: false, + // Disables the reactions in chat feature. + // disableReactionsInChat: false, + // Disables polls feature. // disablePolls: false, @@ -398,6 +404,10 @@ var config = { // // 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: { @@ -495,6 +505,14 @@ var config = { // // 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, + + // // Whether to invite jigasi when backend transcriptions are enabled. By default, we invite it. + // inviteJigasiOnBackendTranscribing: true, // }, // Misc @@ -606,6 +624,7 @@ var config = { // medium: 5000, // long: 10000, // extraLong: 60000, + // sticky: 0, // }, // // Options for the recording limit notification. @@ -823,8 +842,7 @@ var config = { // 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 + // - 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: [ @@ -1254,9 +1272,6 @@ var config = { // disableDeepLinking: false, // The deeplinking config. - // For information about the properties of - // deeplinking.[ios/android].dynamicLink check: - // https://firebase.google.com/docs/dynamic-links/create-manually // deeplinking: { // // // The desktop deeplinking config, disabled by default. @@ -1285,13 +1300,6 @@ var config = { // appScheme: 'org.jitsi.meet', // // Custom URL for downloading ios mobile app. // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // }, // // The android deeplinking config. @@ -1304,13 +1312,6 @@ var config = { // // Android app package name. // appPackage: 'org.jitsi.meet', // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } // } // }, @@ -1575,6 +1576,9 @@ var config = { // tokenAuthUrlAutoRedirect: false // 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, // 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" @@ -1875,6 +1879,16 @@ var config = { // 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 diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh b/type/__jitsi_meet_domain/files/interface_config.js.sh index 6142281..d2ebaa3 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh @@ -203,17 +203,6 @@ var interfaceConfig = { // NATIVE_APP_NAME: 'Jitsi Meet', - /** - * Specify Firebase dynamic link properties for the mobile apps. - */ - // MOBILE_DYNAMIC_LINK: { - // APN: 'org.jitsi.meet', - // APP_CODE: 'w2atb', - // CUSTOM_DOMAIN: undefined, - // IBI: 'com.atlassian.JitsiMeet.ios', - // ISI: '1165103905' - // }, - /** * Hide the logo on the deep linking pages. */ diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig index 07fa56d..1e774b3 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig @@ -192,17 +192,6 @@ var interfaceConfig = { // NATIVE_APP_NAME: 'Jitsi Meet', - /** - * Specify Firebase dynamic link properties for the mobile apps. - */ - // MOBILE_DYNAMIC_LINK: { - // APN: 'org.jitsi.meet', - // APP_CODE: 'w2atb', - // CUSTOM_DOMAIN: undefined, - // IBI: 'com.atlassian.JitsiMeet.ios', - // ISI: '1165103905' - // }, - /** * Hide the logo on the deep linking pages. */ diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index ce2e564..0983883 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10184-1 \ No newline at end of file +2.0.10314-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig index eb421f9..d794391 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig @@ -15,6 +15,7 @@ external_services = { cross_domain_bosh = false; consider_bosh_secure = true; +consider_websocket_secure = true; -- https_ports = { }; -- Remove this line to prevent listening on port 5284 -- by default prosody 0.12 sends cors headers, if you want to disable it uncomment the following (the config is available on 0.12.1) From 14ea8845588a0b7c91e89cda7132b7330a798343 Mon Sep 17 00:00:00 2001 From: Evilham Date: Wed, 2 Jul 2025 17:39:41 +0200 Subject: [PATCH 11/17] __jitsi_meet: disable reaction sounds --- type/__jitsi_meet_domain/files/config.js.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 193bd8e..efe13e9 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -1206,7 +1206,7 @@ ${ANALYTICS_SETTINGS} // - 'RECORDING_OFF_SOUND' // - 'RECORDING_ON_SOUND' // - 'TALK_WHILE_MUTED_SOUND' - // disabledSounds: [], + disabledSounds: ['REACTION_SOUND'], // This is actually intrusive // DEPRECATED! Use \`disabledSounds\` instead. // Decides whether the start/stop recording audio notifications should play on record. From 4ad8a4bbe0e38de029f448508f75e1046fb36d04 Mon Sep 17 00:00:00 2001 From: Evilham Date: Wed, 2 Jul 2025 18:02:18 +0200 Subject: [PATCH 12/17] __jitsi_meet: fix typo introduced in latest upgrade --- type/__jitsi_meet_domain/files/config.js.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index efe13e9..a763784 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -1901,7 +1901,8 @@ ${ANALYTICS_SETTINGS} // 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) { From 8763095e5064ca8cb2e82ed8658416bd2d832557 Mon Sep 17 00:00:00 2001 From: Evilham Date: Wed, 27 Aug 2025 11:43:47 +0200 Subject: [PATCH 13/17] __jitsi_meet: upgrade to 2.0.10431 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 39 ++++++++++++------- .../files/config.js.sh.orig | 39 ++++++++++++------- type/__jitsi_meet_domain/files/jitsi-version | 2 +- .../files/prosody.cfg.lua.sh | 12 ++---- .../files/prosody.cfg.lua.sh.orig | 12 ++---- 6 files changed, 58 insertions(+), 48 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 2f93b72..9355ed2 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10314" +BRANCH="jitsi-meet_10431" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index a763784..7555b68 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -124,6 +124,11 @@ var config = { // 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. @@ -519,7 +524,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // Note: Starting transcriptions from the recording dialog will still work. // disableClosedCaptions: false, - // // Whether to invite jigasi when backend transcriptions are enabled. By default, we invite it. + // // Whether to invite jigasi when backend transcriptions are enabled (asyncTranscription is true in metadata). + // // By default, we invite it. // inviteJigasiOnBackendTranscribing: true, // }, @@ -1134,10 +1140,6 @@ ${ANALYTICS_SETTINGS} // The Amplitude APP Key: // amplitudeAPPKey: '', - // Enables Amplitude UTM tracking: - // Default value is false. - // amplitudeIncludeUTM: false, - // Obfuscates room name sent to analytics (amplitude, rtcstats) // Default value is false. // obfuscateRoomName: false, @@ -1372,18 +1374,11 @@ ${ANALYTICS_SETTINGS} // disableKick: true, // // If set to true the 'Grant moderator' button will be disabled. // disableGrantModerator: true, - // // If set to true the 'Send private message' button will be disabled. - // disablePrivateChat: 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. + // disablePrivateChat: 'all' | 'allow-moderator-chat', // }, - // 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/', // If set to true all muting operations of remote participants will be disabled. // disableRemoteMute: true, @@ -1408,6 +1403,13 @@ ${ANALYTICS_SETTINGS} 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 @@ -1791,6 +1793,13 @@ ${ANALYTICS_SETTINGS} // // 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. diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 21de0c5..23f7df6 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -117,6 +117,11 @@ var config = { // 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. @@ -511,7 +516,8 @@ var config = { // // Note: Starting transcriptions from the recording dialog will still work. // disableClosedCaptions: false, - // // Whether to invite jigasi when backend transcriptions are enabled. By default, we invite it. + // // Whether to invite jigasi when backend transcriptions are enabled (asyncTranscription is true in metadata). + // // By default, we invite it. // inviteJigasiOnBackendTranscribing: true, // }, @@ -1125,10 +1131,6 @@ var config = { // The Amplitude APP Key: // amplitudeAPPKey: '', - // Enables Amplitude UTM tracking: - // Default value is false. - // amplitudeIncludeUTM: false, - // Obfuscates room name sent to analytics (amplitude, rtcstats) // Default value is false. // obfuscateRoomName: false, @@ -1359,18 +1361,11 @@ var config = { // disableKick: true, // // If set to true the 'Grant moderator' button will be disabled. // disableGrantModerator: true, - // // If set to true the 'Send private message' button will be disabled. - // disablePrivateChat: 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. + // disablePrivateChat: 'all' | 'allow-moderator-chat', // }, - // 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/', // If set to true all muting operations of remote participants will be disabled. // disableRemoteMute: true, @@ -1395,6 +1390,13 @@ var config = { 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 @@ -1778,6 +1780,13 @@ var config = { // // 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. diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index 0983883..cb73109 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10314-1 \ No newline at end of file +2.0.10431-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh index ee60fdd..9683d07 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh @@ -97,23 +97,17 @@ VirtualHost "${JITSI_DOMAIN:?}" key = "/etc/prosody/certs/${JITSI_DOMAIN:?}.key"; certificate = "/etc/prosody/certs/${JITSI_DOMAIN:?}.crt"; } - av_moderation_component = "avmoderation.${JITSI_DOMAIN:?}" - speakerstats_component = "speakerstats.${JITSI_DOMAIN:?}" - end_conference_component = "endconference.${JITSI_DOMAIN:?}" -- we need bosh modules_enabled = { "bosh"; "websocket"; "smacks"; "ping"; -- Enable mod_ping - "speakerstats"; "external_services"; + "features_identity"; "conference_duration"; - "end_conference"; "muc_lobby_rooms"; "muc_breakout_rooms"; - "av_moderation"; - "room_metadata"; ${PROSODY_WEBSOCKET} "websocket"; ${PROSODY_WEBSOCKET} "smacks"; } @@ -124,7 +118,6 @@ ${PROSODY_WEBSOCKET} "smacks"; c2s_require_encryption = false lobby_muc = "lobby.${JITSI_DOMAIN:?}" breakout_rooms_muc = "breakout.${JITSI_DOMAIN:?}" - room_metadata_component = "metadata.${JITSI_DOMAIN:?}" main_muc = "conference.${JITSI_DOMAIN:?}" -- muc_lobby_whitelist = { "recorder.${JITSI_DOMAIN:?}" } -- Here we can whitelist jibri to enter lobby enabled rooms @@ -212,6 +205,9 @@ Component "endconference.${JITSI_DOMAIN:?}" "end_conference" Component "avmoderation.${JITSI_DOMAIN:?}" "av_moderation_component" muc_component = "conference.${JITSI_DOMAIN:?}" +Component "filesharing.${JITSI_DOMAIN:?}" "filesharing_component" + muc_component = "conference.${JITSI_DOMAIN:?}" + Component "lobby.${JITSI_DOMAIN:?}" "muc" storage = "memory" restrict_room_creation = true diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig index d794391..a98abdf 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig @@ -58,28 +58,21 @@ VirtualHost "jitmeet.example.com" key = "/etc/prosody/certs/jitmeet.example.com.key"; certificate = "/etc/prosody/certs/jitmeet.example.com.crt"; } - av_moderation_component = "avmoderation.jitmeet.example.com" - speakerstats_component = "speakerstats.jitmeet.example.com" - end_conference_component = "endconference.jitmeet.example.com" -- we need bosh modules_enabled = { "bosh"; "websocket"; "smacks"; "ping"; -- Enable mod_ping - "speakerstats"; "external_services"; + "features_identity"; "conference_duration"; - "end_conference"; "muc_lobby_rooms"; "muc_breakout_rooms"; - "av_moderation"; - "room_metadata"; } c2s_require_encryption = false lobby_muc = "lobby.jitmeet.example.com" breakout_rooms_muc = "breakout.jitmeet.example.com" - room_metadata_component = "metadata.jitmeet.example.com" main_muc = "conference.jitmeet.example.com" -- muc_lobby_whitelist = { "recorder.jitmeet.example.com" } -- Here we can whitelist jibri to enter lobby enabled rooms @@ -155,6 +148,9 @@ Component "endconference.jitmeet.example.com" "end_conference" Component "avmoderation.jitmeet.example.com" "av_moderation_component" muc_component = "conference.jitmeet.example.com" +Component "filesharing.jitmeet.example.com" "filesharing_component" + muc_component = "conference.jitmeet.example.com" + Component "lobby.jitmeet.example.com" "muc" storage = "memory" restrict_room_creation = true From f8490aeb8ec4447a29bdb8ad289a6ba8ec937c06 Mon Sep 17 00:00:00 2001 From: Evilham Date: Mon, 12 Jan 2026 15:44:03 +0100 Subject: [PATCH 14/17] __jitsi_meet: upgrade to 2.0.10655 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 23 +++++++++++++++---- .../files/config.js.sh.orig | 23 +++++++++++++++---- type/__jitsi_meet_domain/files/jitsi-version | 2 +- .../files/prosody.cfg.lua.sh | 3 ++- .../files/prosody.cfg.lua.sh.orig | 4 ++-- 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 9355ed2..31ac655 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10431" +BRANCH="jitsi-meet_10655" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 7555b68..ff976b2 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -146,6 +146,9 @@ var config = { // 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, @@ -371,6 +374,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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, @@ -730,6 +734,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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. @@ -769,7 +775,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // hideDominantSpeakerBadge: false, // Default language for the user interface. Cannot be overwritten. - // DEPRECATED! Use the \`lang\` iframe option directly instead. + // For iframe integrations, use the \`lang\` option directly instead. defaultLanguage: '${DEFAULT_LANGUAGE}', // Disables profile and the edit of all fields from the profile settings (display name and email) @@ -799,7 +805,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Configs for prejoin page. // prejoinConfig: { // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. - // // This replaces \`prejoinPageEnabled\`. Defaults to true. // enabled: true, // // Hides the participant name editing field in the prejoin screen. // // If requireDisplayName is also set as true, a name should still be provided through @@ -811,7 +816,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // By setting preCallTestEnabled, you enable the pre-call test in the prejoin page. // // ICE server credentials need to be provided over the preCallTestICEUrl // preCallTestEnabled: false, - // preCallTestICEUrl: '' + // preCallTestICEUrl: '', + // // Shows the hangup button in the lobby screen. + // showHangUp: true, // }, // When 'true', the user cannot edit the display name. @@ -908,6 +915,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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 @@ -1376,7 +1385,9 @@ ${ANALYTICS_SETTINGS} // 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. - // disablePrivateChat: 'all' | 'allow-moderator-chat', + // // 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', // }, @@ -1614,6 +1625,10 @@ ${ANALYTICS_SETTINGS} // 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'], diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 23f7df6..07c9095 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -139,6 +139,9 @@ var config = { // 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, @@ -363,6 +366,7 @@ var config = { // 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, @@ -722,6 +726,8 @@ var config = { // 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. @@ -761,7 +767,7 @@ var config = { // hideDominantSpeakerBadge: false, // Default language for the user interface. Cannot be overwritten. - // DEPRECATED! Use the `lang` iframe option directly instead. + // 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) @@ -791,7 +797,6 @@ var config = { // Configs for prejoin page. // prejoinConfig: { // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. - // // This replaces `prejoinPageEnabled`. Defaults to true. // enabled: true, // // Hides the participant name editing field in the prejoin screen. // // If requireDisplayName is also set as true, a name should still be provided through @@ -803,7 +808,9 @@ var config = { // // By setting preCallTestEnabled, you enable the pre-call test in the prejoin page. // // ICE server credentials need to be provided over the preCallTestICEUrl // preCallTestEnabled: false, - // preCallTestICEUrl: '' + // preCallTestICEUrl: '', + // // Shows the hangup button in the lobby screen. + // showHangUp: true, // }, // When 'true', the user cannot edit the display name. @@ -900,6 +907,8 @@ var config = { // 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 @@ -1363,7 +1372,9 @@ var config = { // 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. - // disablePrivateChat: 'all' | 'allow-moderator-chat', + // // 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', // }, @@ -1601,6 +1612,10 @@ var config = { // 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'], diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index cb73109..0459f40 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10431-1 \ No newline at end of file +2.0.10655-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh index 9683d07..97c9853 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh @@ -216,12 +216,13 @@ Component "lobby.${JITSI_DOMAIN:?}" "muc" modules_enabled = { "muc_hide_all"; "muc_rate_limit"; - "polls"; } Component "metadata.${JITSI_DOMAIN:?}" "room_metadata_component" muc_component = "conference.${JITSI_DOMAIN:?}" breakout_rooms_component = "breakout.${JITSI_DOMAIN:?}" + +Component "polls.${JITSI_DOMAIN:?}" "polls_component" ${PROSODY_DOMAIN_END} ${PROSODY_SECUREDOMAIN_START} diff --git a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig index a98abdf..bfd5e6a 100644 --- a/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig +++ b/type/__jitsi_meet_domain/files/prosody.cfg.lua.sh.orig @@ -83,7 +83,6 @@ Component "conference.jitmeet.example.com" "muc" "muc_hide_all"; "muc_meeting_id"; "muc_domain_mapper"; - "polls"; --"token_verification"; "muc_rate_limit"; "muc_password_whitelist"; @@ -159,9 +158,10 @@ Component "lobby.jitmeet.example.com" "muc" modules_enabled = { "muc_hide_all"; "muc_rate_limit"; - "polls"; } Component "metadata.jitmeet.example.com" "room_metadata_component" muc_component = "conference.jitmeet.example.com" breakout_rooms_component = "breakout.jitmeet.example.com" + +Component "polls.jitmeet.example.com" "polls_component" From 701a1a6a8bc31d09a0e810bbb4f1591d59f527cc Mon Sep 17 00:00:00 2001 From: Evilham Date: Sat, 17 Jan 2026 18:41:58 +0100 Subject: [PATCH 15/17] __jitsi_meet: upgrade to 2.0.10710 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 11 ++++++++--- type/__jitsi_meet_domain/files/config.js.sh.orig | 11 ++++++++--- type/__jitsi_meet_domain/files/jitsi-version | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 31ac655..911d9b4 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10655" +BRANCH="jitsi-meet_10710" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index ff976b2..5a65a25 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -158,6 +158,9 @@ var config = { // Disables self-view settings in UI // disableSelfViewSettings: false, + // Shows/hides the moderator setting for chat permissions. + // showChatPermissionsModeratorSetting: false, + // screenshotCapture : { // Enables the screensharing capture feature. // enabled: false, @@ -528,9 +531,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // Note: Starting transcriptions from the recording dialog will still work. // disableClosedCaptions: false, - // // Whether to invite jigasi when backend transcriptions are enabled (asyncTranscription is true in metadata). - // // By default, we invite it. - // inviteJigasiOnBackendTranscribing: true, // }, // Misc @@ -935,6 +935,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // [ 'microphone', 'camera' ] // ], + // 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 diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 07c9095..b560e59 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -151,6 +151,9 @@ var config = { // Disables self-view settings in UI // disableSelfViewSettings: false, + // Shows/hides the moderator setting for chat permissions. + // showChatPermissionsModeratorSetting: false, + // screenshotCapture : { // Enables the screensharing capture feature. // enabled: false, @@ -520,9 +523,6 @@ var config = { // // Note: Starting transcriptions from the recording dialog will still work. // disableClosedCaptions: false, - // // Whether to invite jigasi when backend transcriptions are enabled (asyncTranscription is true in metadata). - // // By default, we invite it. - // inviteJigasiOnBackendTranscribing: true, // }, // Misc @@ -927,6 +927,11 @@ var config = { // [ 'microphone', 'camera' ] // ], + // 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 diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index 0459f40..9babc67 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10655-1 \ No newline at end of file +2.0.10710-1 \ No newline at end of file From 0d75d44551e7baa5da7d55562f8e7e297d0d534b Mon Sep 17 00:00:00 2001 From: Evilham Date: Fri, 31 Jul 2026 13:23:34 +0200 Subject: [PATCH 16/17] jitsi: uncommitted updates to 10888 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 32 ++++++++----------- .../files/config.js.sh.orig | 32 ++++++++----------- type/__jitsi_meet_domain/files/jitsi-version | 2 +- type/__jitsi_meet_domain/files/nginx.sh | 18 +++++++++++ type/__jitsi_meet_domain/files/nginx.sh.orig | 18 +++++++++++ 6 files changed, 66 insertions(+), 38 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 911d9b4..35471b0 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10710" +BRANCH="jitsi-meet_10888" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 5a65a25..86daafa 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -519,6 +519,15 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // ./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, @@ -645,21 +654,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // sticky: 0, // }, - // // Options for the recording limit notification. - // recordingLimit: { - // - // // The recording limit in minutes. Note: This number appears in the notification text - // // but doesn't enforce the actual recording time limit. This should be configured in - // // jibri! - // limit: 60, - // - // // The name of the app with unlimited recordings. - // appName: 'Unlimited recordings APP', - // - // // The URL of the app with unlimited recordings. - // appURL: 'https://unlimited.recordings.app.com/', - // }, - // Disables or enables RTX (RFC 4588) (defaults to false). // disableRtx: false, @@ -935,6 +929,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // [ '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. @@ -1602,14 +1599,13 @@ ${ANALYTICS_SETTINGS} // - 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' - // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before - // and will automatically redirect to the token service to get the token for the meeting. - // tokenAuthUrlAutoRedirect: false // 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" diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index b560e59..3e1c70d 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -511,6 +511,15 @@ var config = { // // ./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, @@ -637,21 +646,6 @@ var config = { // sticky: 0, // }, - // // Options for the recording limit notification. - // recordingLimit: { - // - // // The recording limit in minutes. Note: This number appears in the notification text - // // but doesn't enforce the actual recording time limit. This should be configured in - // // jibri! - // limit: 60, - // - // // The name of the app with unlimited recordings. - // appName: 'Unlimited recordings APP', - // - // // The URL of the app with unlimited recordings. - // appURL: 'https://unlimited.recordings.app.com/', - // }, - // Disables or enables RTX (RFC 4588) (defaults to false). // disableRtx: false, @@ -927,6 +921,9 @@ var config = { // [ '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. @@ -1589,14 +1586,13 @@ var config = { // - 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' - // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before - // and will automatically redirect to the token service to get the token for the meeting. - // tokenAuthUrlAutoRedirect: false // 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" diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index 9babc67..8c9a48c 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10710-1 \ No newline at end of file +2.0.10888-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/nginx.sh b/type/__jitsi_meet_domain/files/nginx.sh index 853aaf6..4691004 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh +++ b/type/__jitsi_meet_domain/files/nginx.sh @@ -38,6 +38,22 @@ JITSI_NGINX_CONFIG="$(cat <[^?]*)\?.*(?: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; @@ -77,6 +93,8 @@ server { 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; diff --git a/type/__jitsi_meet_domain/files/nginx.sh.orig b/type/__jitsi_meet_domain/files/nginx.sh.orig index 0ea213d..1c9881e 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh.orig +++ b/type/__jitsi_meet_domain/files/nginx.sh.orig @@ -26,6 +26,22 @@ map $arg_vnode $prosody_node { 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; @@ -66,6 +82,8 @@ server { 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; From 76c8fb8b92a85f615bbf998d43e20e65206f003d Mon Sep 17 00:00:00 2001 From: Evilham Date: Fri, 31 Jul 2026 13:30:33 +0200 Subject: [PATCH 17/17] jitsi: upgraded to 11031 --- .../files/_update_jitsi_configurations.sh | 2 +- type/__jitsi_meet_domain/files/config.js.sh | 94 ++++++++++++++++--- .../files/config.js.sh.orig | 94 ++++++++++++++++--- .../files/interface_config.js.sh | 2 +- .../files/interface_config.js.sh.orig | 2 +- type/__jitsi_meet_domain/files/jitsi-version | 2 +- type/__jitsi_meet_domain/files/nginx.sh.orig | 27 +++--- 7 files changed, 184 insertions(+), 39 deletions(-) diff --git a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh index 35471b0..526af90 100755 --- a/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh +++ b/type/__jitsi_meet_domain/files/_update_jitsi_configurations.sh @@ -7,7 +7,7 @@ # We could automate this, but are using it as an indicator for the # latest branch with which we conciliated changes. -BRANCH="jitsi-meet_10888" +BRANCH="jitsi-meet_11031" REPO="https://github.com/jitsi/jitsi-meet" get_url() { diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 86daafa..8d8aa89 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -501,6 +501,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // Translation languages. // // Available languages can be found in // // ./lang/translation-languages.json. + // // Whether to enable translation (language selection) UI. Defaults to true. + // translationEnabled: true, + // translationLanguages: ['en', 'es', 'fr', 'ro'], // // Important languages to show on the top of the language list. @@ -539,6 +542,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // 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, + // + // // When the backend provides diarization by setting a "speaker" field, append [Speaker N] for transcription + // // events from non-0 speakers. + // renderTranscriptDetails: false // }, @@ -869,7 +876,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 'embedmeeting', // 'etherpad', // 'feedback', - // 'filmstrip', // 'fullscreen', // 'hangup', // 'help', @@ -1502,16 +1508,81 @@ ${ANALYTICS_SETTINGS} // 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, + // @deprecated Use \`virtualBackground.disabled\` instead. When true, the virtual background + // feature is disabled. Kept here for backwards compatibility; will be removed in a future release. + // disableVirtualBackground: false, + + // @deprecated Use \`virtualBackground.disableAddingImages\` instead. When true the user cannot + // add more images to be used as virtual background; only the default ones will be available. + // Kept here for backwards compatibility; will be removed in a future release. + // disableAddingBackgroundImages: false, + + // Virtual background options. + // All fields are optional; omitting a field uses the default/auto-detected value. + virtualBackground: { + + // When true, virtual background feature will be disabled. + // disabled: false, + + // When true the user cannot add more images to be used as virtual background. + // Only the default ones will be available. + // disableAddingImages: false, + + // Enable the V2 processing engine. When false (default), the legacy + // TFLite WASM engine (V1) is used. Set to true to opt in to V2. + // enableV2: false, + + // V2-only tuning knobs. These have no effect when enableV2 is false. Defaults are + // tuned for typical hardware; most deployments should not need to override them. + // advanced: { + + // // Force a specific device tier regardless of what the browser supports. + // // Useful for testing lower-tier behaviour on high-end hardware. + // // Values: 'high' | 'medium' | 'low' — null means auto-detect (default). + // // tierOverride: null, + + // // Override the segmentation canvas dimensions (pixels). Applies to MEDIUM + // // and HIGH tiers only (TF.js input canvas). LOW tier (TFLite) always runs + // // at 256x144, fixed by the selfie_segmentation_landscape model and not + // // affected by this setting. + // // segmentationWidth: null, // auto: 512 (high) / 384 (medium) + // // segmentationHeight: null, // auto: 288 (high) / 216 (medium) + + // // Override the target frame rate for the effect. + // // targetFps: null, // auto: 30 (all tiers) + + // // Temporal mask blend ratio (0-1). Higher = smoother motion, slower to respond + // // to fast movement. 0 = raw mask each frame (no temporal smoothing). + // // temporalBlendRatio: 0.75, + + // // Smoothstep edge thresholds for the WebGL compositor (0-1). + // // Pixels with segmentation confidence below edgeLow are fully transparent; + // // above edgeHigh they are fully opaque; between the two they feather. + // // Defaults are tier-specific (tuned per model's confidence distribution): + // // LOW tier (TFLite selfie_segmentation_landscape): edgeLow = 0.10, edgeHigh = 0.50 + // // MEDIUM/HIGH (TF.js MediaPipe body-segmentation): edgeLow = 0.28, edgeHigh = 0.65 + // // Lower edgeLow = more hair retained at the cost of slight background bleed. + // // Higher edgeHigh = harder edge transition. + // // edgeLow: 0.28, + // // edgeHigh: 0.65, + + // // Insertable Streams (MediaStreamTrackProcessor/Generator) is used by default + // // when available. It reduces latency by ~1-2 frames and eliminates the keepalive + // // Web Worker. Set to false to force the legacy captureStream path instead. + // // useInsertableStreams: false, + + // // LOW tier (TFLite) inference stride. Inference is skipped on alternate frames; + // // skipped frames reuse the previous mask. Higher values = lower CPU usage at the + // // cost of reduced mask update frequency. Set to 1 to run inference every frame. + // // 1 = every frame (24 fps mask updates, ~37 ms slack per frame) ← default + // // 2 = every 2 frames (12 fps mask updates, ~74 ms slack per frame) + // // inferenceStride: 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. @@ -1785,9 +1856,6 @@ ${ANALYTICS_SETTINGS} // 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, @@ -1876,6 +1944,10 @@ ${ANALYTICS_SETTINGS} // userLimit: 25, // // The url for more info about the whiteboard and its usage limitations. // limitUrl: 'https://example.com/blog/whiteboard-limits', + + // //Backend URL for storing whiteboard scenes and images + // //This backend service handles scene persistence and file uploads + // storageBackendUrl: 'https://excalidraw-s3-storage-backend.example.com', // }, // The watchRTC initialize config params as described : diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 3e1c70d..bc5ecc8 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -493,6 +493,9 @@ var config = { // // Translation languages. // // Available languages can be found in // // ./lang/translation-languages.json. + // // Whether to enable translation (language selection) UI. Defaults to true. + // translationEnabled: true, + // translationLanguages: ['en', 'es', 'fr', 'ro'], // // Important languages to show on the top of the language list. @@ -531,6 +534,10 @@ var config = { // // 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, + // + // // When the backend provides diarization by setting a "speaker" field, append [Speaker N] for transcription + // // events from non-0 speakers. + // renderTranscriptDetails: false // }, @@ -861,7 +868,6 @@ var config = { // 'embedmeeting', // 'etherpad', // 'feedback', - // 'filmstrip', // 'fullscreen', // 'hangup', // 'help', @@ -1489,16 +1495,81 @@ var config = { // 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, + // @deprecated Use `virtualBackground.disabled` instead. When true, the virtual background + // feature is disabled. Kept here for backwards compatibility; will be removed in a future release. + // disableVirtualBackground: false, + + // @deprecated Use `virtualBackground.disableAddingImages` instead. When true the user cannot + // add more images to be used as virtual background; only the default ones will be available. + // Kept here for backwards compatibility; will be removed in a future release. + // disableAddingBackgroundImages: false, + + // Virtual background options. + // All fields are optional; omitting a field uses the default/auto-detected value. + virtualBackground: { + + // When true, virtual background feature will be disabled. + // disabled: false, + + // When true the user cannot add more images to be used as virtual background. + // Only the default ones will be available. + // disableAddingImages: false, + + // Enable the V2 processing engine. When false (default), the legacy + // TFLite WASM engine (V1) is used. Set to true to opt in to V2. + // enableV2: false, + + // V2-only tuning knobs. These have no effect when enableV2 is false. Defaults are + // tuned for typical hardware; most deployments should not need to override them. + // advanced: { + + // // Force a specific device tier regardless of what the browser supports. + // // Useful for testing lower-tier behaviour on high-end hardware. + // // Values: 'high' | 'medium' | 'low' — null means auto-detect (default). + // // tierOverride: null, + + // // Override the segmentation canvas dimensions (pixels). Applies to MEDIUM + // // and HIGH tiers only (TF.js input canvas). LOW tier (TFLite) always runs + // // at 256x144, fixed by the selfie_segmentation_landscape model and not + // // affected by this setting. + // // segmentationWidth: null, // auto: 512 (high) / 384 (medium) + // // segmentationHeight: null, // auto: 288 (high) / 216 (medium) + + // // Override the target frame rate for the effect. + // // targetFps: null, // auto: 30 (all tiers) + + // // Temporal mask blend ratio (0-1). Higher = smoother motion, slower to respond + // // to fast movement. 0 = raw mask each frame (no temporal smoothing). + // // temporalBlendRatio: 0.75, + + // // Smoothstep edge thresholds for the WebGL compositor (0-1). + // // Pixels with segmentation confidence below edgeLow are fully transparent; + // // above edgeHigh they are fully opaque; between the two they feather. + // // Defaults are tier-specific (tuned per model's confidence distribution): + // // LOW tier (TFLite selfie_segmentation_landscape): edgeLow = 0.10, edgeHigh = 0.50 + // // MEDIUM/HIGH (TF.js MediaPipe body-segmentation): edgeLow = 0.28, edgeHigh = 0.65 + // // Lower edgeLow = more hair retained at the cost of slight background bleed. + // // Higher edgeHigh = harder edge transition. + // // edgeLow: 0.28, + // // edgeHigh: 0.65, + + // // Insertable Streams (MediaStreamTrackProcessor/Generator) is used by default + // // when available. It reduces latency by ~1-2 frames and eliminates the keepalive + // // Web Worker. Set to false to force the legacy captureStream path instead. + // // useInsertableStreams: false, + + // // LOW tier (TFLite) inference stride. Inference is skipped on alternate frames; + // // skipped frames reuse the previous mask. Higher values = lower CPU usage at the + // // cost of reduced mask update frequency. Set to 1 to run inference every frame. + // // 1 = every frame (24 fps mask updates, ~37 ms slack per frame) ← default + // // 2 = every 2 frames (12 fps mask updates, ~74 ms slack per frame) + // // inferenceStride: 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. @@ -1772,9 +1843,6 @@ var config = { // 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, @@ -1863,6 +1931,10 @@ var config = { // userLimit: 25, // // The url for more info about the whiteboard and its usage limitations. // limitUrl: 'https://example.com/blog/whiteboard-limits', + + // //Backend URL for storing whiteboard scenes and images + // //This backend service handles scene persistence and file uploads + // storageBackendUrl: 'https://excalidraw-s3-storage-backend.example.com', // }, // The watchRTC initialize config params as described : diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh b/type/__jitsi_meet_domain/files/interface_config.js.sh index d2ebaa3..228625f 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh @@ -121,7 +121,7 @@ var interfaceConfig = { RECENT_LIST_ENABLED: true, REMOTE_THUMBNAIL_RATIO: 1, // 1:1 - SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ], + SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'shortcuts', 'sounds', 'more' ], /** * Specify which sharing features should be displayed. If the value is not set diff --git a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig index 1e774b3..14b307a 100644 --- a/type/__jitsi_meet_domain/files/interface_config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/interface_config.js.sh.orig @@ -110,7 +110,7 @@ var interfaceConfig = { RECENT_LIST_ENABLED: true, REMOTE_THUMBNAIL_RATIO: 1, // 1:1 - SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ], + SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'shortcuts', 'sounds', 'more' ], /** * Specify which sharing features should be displayed. If the value is not set diff --git a/type/__jitsi_meet_domain/files/jitsi-version b/type/__jitsi_meet_domain/files/jitsi-version index 8c9a48c..72db1fb 100644 --- a/type/__jitsi_meet_domain/files/jitsi-version +++ b/type/__jitsi_meet_domain/files/jitsi-version @@ -1 +1 @@ -2.0.10888-1 \ No newline at end of file +2.0.11031-1 \ No newline at end of file diff --git a/type/__jitsi_meet_domain/files/nginx.sh.orig b/type/__jitsi_meet_domain/files/nginx.sh.orig index 1c9881e..43913bd 100644 --- a/type/__jitsi_meet_domain/files/nginx.sh.orig +++ b/type/__jitsi_meet_domain/files/nginx.sh.orig @@ -10,11 +10,12 @@ upstream prosody { server 127.0.0.1:5280; keepalive 2; } -upstream jvb1 { - zone upstreams 64K; - server 127.0.0.1:9090; - keepalive 2; -} +# Uncomment to enable colibri (JVB) WebSocket proxy (also requires websockets enabled in JVB config): +# upstream jvb1 { +# zone upstreams 64K; +# server 127.0.0.1:9090; +# keepalive 2; +# } map $arg_vnode $prosody_node { default prosody; v1 v1; @@ -150,14 +151,14 @@ server { 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; - } + # Uncomment to enable colibri (JVB) WebSocket proxy (also requires websockets enabled in JVB config): + # 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/([^/?&:'"]+)$ {