diff --git a/type/__bird_bgp/manifest b/type/__bird_bgp/manifest index 7525bb5..a1d79f2 100755 --- a/type/__bird_bgp/manifest +++ b/type/__bird_bgp/manifest @@ -89,6 +89,7 @@ ipv4_import= if [ -f "${__object:?}"/parameter/ipv4-import ]; then ipv4_import="$(cat "${__object:?}"/parameter/ipv4-import)" + echo "FOO" >&2 fi export ipv4_import diff --git a/type/__bird_ospf/man.rst b/type/__bird_ospf/man.rst index 66c2e4a..9b9a20f 100644 --- a/type/__bird_ospf/man.rst +++ b/type/__bird_ospf/man.rst @@ -24,6 +24,12 @@ import export The keyword or filter to decide what to export in the above channel. + +REQUIRED MULTIPLE PARAMETERS +---------------------------- +interface + An interface to include in OSPF area 0. + OPTIONAL PARAMETERS ------------------- description @@ -33,19 +39,6 @@ instance-id An OSPF instance ID, allowing several OSPF instances to run on the same links. -extra-area-configuration - Configuration string added to the `area` section of the OSPF configuration. - -OPTIONAL MULTIPLE PARAMETERS ----------------------------- - -stubnet - Add an optionless stubnet definition to the configuration. - -interface - An interface to include in OSPF area 0. Is required unless - extra-area-configuration is set. - SEE ALSO -------- cdist-type__bird_core(7) diff --git a/type/__bird_ospf/manifest b/type/__bird_ospf/manifest index 68d9c16..0e219ae 100755 --- a/type/__bird_ospf/manifest +++ b/type/__bird_ospf/manifest @@ -44,21 +44,6 @@ then instance_id="$(cat "${__object:?}/parameter/instance-id")" fi -extra_area_configuration= -if [ -f "${__object:?}/parameter/extra-area-configuration" ]; -then - extra_area_configuration="$(cat "${__object:?}/parameter/extra-area-configuration")" - - if [ "$extra_area_configuration" = "-" ]; then - extra_area_configuration=$(cat "$__object/stdin") - fi -fi - -if [ ! -f "${__object:?}/parameter/interface" ] && [ -z "$extra_area_configuration" ]; then - echo "Either --interface or --extra-area-configuration must be set." >&2 - exit 1 -fi - __file "${confdir:?}/ospf-${__object_id:?}.conf" \ --mode 0640 --owner root --group bird \ --source - << EOF @@ -73,9 +58,6 @@ $([ -n "${instance_id?}" ] && printf "\tinstance id %s;\n" "${instance_id?}") area 0 { $(sed -e 's/^/\t\tinterface "/' -e 's/$/";/' "${__object:?}/parameter/interface") -$(sed -e 's/^/\t\tsubnet /' -e 's/$/;/' "${__object:?}/parameter/subnet") - - $extra_area_configuration }; } EOF diff --git a/type/__bird_ospf/parameter/optional b/type/__bird_ospf/parameter/optional index 880f228..cf6dd53 100644 --- a/type/__bird_ospf/parameter/optional +++ b/type/__bird_ospf/parameter/optional @@ -1,3 +1,2 @@ description instance-id -extra-area-configuration diff --git a/type/__bird_radv/parameter/required b/type/__bird_ospf/parameter/required_multiple similarity index 100% rename from type/__bird_radv/parameter/required rename to type/__bird_ospf/parameter/required_multiple diff --git a/type/__bird_radv/man.rst b/type/__bird_radv/man.rst index 27362aa..118fd60 100644 --- a/type/__bird_radv/man.rst +++ b/type/__bird_radv/man.rst @@ -15,29 +15,12 @@ autoconfigure IPv6 hosts, this type is a rudimentary implementation to generate configuration for Bird to do so. -REQUIRED PARAMETERS -------------------- +REQUIRED MULTIPLE PARAMETERS +---------------------------- interface The interfaces to activate the protocol on. RAs will be sent using the prefixes configured on these interfaces. -OPTIONAL PARAMETERS -------------------- -mtu - An optional MTU setting to include in the router advertisements. - -default-preference - This option specifies the Default Router Preference value to advertise to - hosts. Default: medium. - -route-preference - This option specifies the default value of advertised route preference for - specific routes. Default: medium. - -default-lifetime - This option specifies the time (in seconds) how long (since the receipt of RA) - hosts may use the router as a default router. 0 means do not use as a default - router. Default: 3. OPTIONAL MULTIPLE PARAMETERS ---------------------------- @@ -58,7 +41,6 @@ EXAMPLES __bird_radv datacenter \ --interface eth1 \ - --mtu 9000 \ --route ::/0 \ --ns 2001:DB8:cafe::4 \ --ns 2001:DB8:cafe::14 \ diff --git a/type/__bird_radv/manifest b/type/__bird_radv/manifest index ed04028..a95e88e 100755 --- a/type/__bird_radv/manifest +++ b/type/__bird_radv/manifest @@ -55,52 +55,23 @@ then DNSSL=$(sed -e 's/^/\tdnssl "/' -e 's/$/";/' "${__object:?}/parameter/dnssl") fi -MTU= -if [ -f "${__object:?}/parameter/mtu" ]; -then - MTU="link mtu $(cat "${__object:?}/parameter/mtu");" -fi - -DEFAULT_PREFERENCE= -if [ -f "${__object:?}/parameter/default-preference" ]; -then - DEFAULT_PREFERENCE="default preference $(cat "${__object:?}/parameter/default-preference");" -fi - -ROUTE_PREFERENCE= -if [ -f "${__object:?}/parameter/route-preference" ]; -then - ROUTE_PREFERENCE="route preference $(cat "${__object:?}/parameter/route-preference");" -fi - -DEFAULT_LIFETIME= -if [ -f "${__object:?}/parameter/default-lifetime" ]; -then - DEFAULT_LIFETIME="default lifetime $(cat "${__object:?}/parameter/default-lifetime");" -fi - __file "${confdir:?}/radv-${__object_id:?}.conf" \ --mode 0640 --owner root --group bird \ --source - << EOF -ipv6 table radv_routes_${__object_id}; +ipv6 table radv_routes; protocol static { description "Routes advertised via RAs"; - ipv6 { table radv_routes_${__object_id}; }; + ipv6 { table radv_routes; }; $(sed -e 's/^/\troute /' -e 's/$/ unreachable;/' "${__object:?}/parameter/route") } protocol radv ${__object_id:?} { propagate routes ${have_routes:?}; - ipv6 { table radv_routes_${__object_id}; export all; }; + ipv6 { table radv_routes; export all; }; - interface "$(cat "${__object:?}/parameter/interface")" { - $MTU - $DEFAULT_LIFETIME - $DEFAULT_PREFERENCE - $ROUTE_PREFERENCE - }; +$(sed -e 's/^/\tinterface "/' -e 's/$/";/' "${__object:?}/parameter/interface") $RDNS diff --git a/type/__bird_radv/parameter/optional b/type/__bird_radv/parameter/optional deleted file mode 100644 index 51058a7..0000000 --- a/type/__bird_radv/parameter/optional +++ /dev/null @@ -1,4 +0,0 @@ -mtu -default-preference -route-preference -default-lifetime diff --git a/type/__bird_ospf/parameter/optional_multiple b/type/__bird_radv/parameter/required_multiple similarity index 55% rename from type/__bird_ospf/parameter/optional_multiple rename to type/__bird_radv/parameter/required_multiple index 8e5902d..b529896 100644 --- a/type/__bird_ospf/parameter/optional_multiple +++ b/type/__bird_radv/parameter/required_multiple @@ -1,2 +1 @@ -stubnet interface diff --git a/type/__borg_repo/manifest b/type/__borg_repo/manifest index 4e4d35e..968066d 100644 --- a/type/__borg_repo/manifest +++ b/type/__borg_repo/manifest @@ -3,7 +3,7 @@ os="$(cat "${__global:?}"/explorer/os)" case "$os" in - "alpine"|"ubuntu") + "alpine") borg_package=borgbackup ;; *) @@ -17,4 +17,3 @@ if [ -f "${__object:?}/parameter/owner" ]; then __package sudo fi - diff --git a/type/__jitsi_meet/explorer/configured-memory b/type/__jitsi_meet/explorer/configured-memory deleted file mode 100755 index 658f94b..0000000 --- a/type/__jitsi_meet/explorer/configured-memory +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -eu - -JICOFO="/usr/share/jicofo/jicofo.sh" -VIDEOBRIDGE="/usr/share/jitsi-videobridge/lib/videobridge.rc" - -if [ -f "${JICOFO:?}" ]; then - jicofo_memory="$(grep JICOFO_MAX_MEMORY= "${JICOFO:?}" | cut -d= -f 2 | cut -d ";" -f 1)" -fi -if [ -f "${VIDEOBRIDGE:?}" ]; then - vb_memory="$(grep VIDEOBRIDGE_MAX_MEMORY= "${VIDEOBRIDGE:?}" | cut -d= -f 2)" -fi -cat < COPYING ------- -Copyright \(C) 2022 Evilham. +Copyright \(C) 2021 Evilham. diff --git a/type/__jitsi_meet/manifest b/type/__jitsi_meet/manifest index 5b5a11e..26d7528 100755 --- a/type/__jitsi_meet/manifest +++ b/type/__jitsi_meet/manifest @@ -1,6 +1,7 @@ #!/bin/sh -e os="$(cat "${__global}/explorer/os")" +init="$(cat "${__global}/explorer/init")" case "${os}" in devuan|debian) ;; @@ -10,37 +11,9 @@ case "${os}" in ;; esac -current_conferences="$(cat "${__object}/explorer/jitsi-status" | grep -E "^jitsi_conferences[[:space:]]" | cut -d ' ' -f 2)" - -JICOFO_AUTHPASSWORD="$(cat "${__object}/explorer/jicofo-authpassword")" -if [ -z "${JICOFO_AUTHPASSWORD}" ]; then - # This is probably a first time installation, we'll generate the - # password which will be set in debconf by this type - # https://github.com/jitsi/jicofo/blob/aafb61b5363a1c4abdbf08e1444a6276b807993e/debian/postinst#L43 - JICOFO_AUTHPASSWORD="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16)" -fi - -ABORT_CONFERENCE_COUNT="$(cat "${__object}/parameter/abort-conference-count")" - -if [ -n "${current_conferences}" ] && [ -n "${ABORT_CONFERENCE_COUNT}" ] && \ - [ "${ABORT_CONFERENCE_COUNT}" -le "${current_conferences}" ]; then - cat <<-EOF -Early bail out was requested when at least ${ABORT_CONFERENCE_COUNT} conferences are taking place. -There are currently ${current_conferences} active conferences. - -Try again at a later time or remove or increase --abort-conference-count - EOF - exit 1 -fi JITSI_HOST="${__target_host}" -if [ -f "${__object}/parameter/jitsi-version" ]; then - # This has been deprecated and will be removed 'soon' - JITSI_VERSION="$(cat "${__object}/parameter/jitsi-version")" -else - # Note this won't be a parameter anymore, we won't let users stay behind - JITSI_VERSION="$(cat "${__type}/files/jitsi-version")" -fi +JITSI_VERSION="$(cat "${__object}/parameter/jitsi-version")" TURN_SERVER="$(cat "${__object}/parameter/turn-server")" TURN_SECRET="$(cat "${__object}/parameter/turn-secret")" @@ -48,6 +21,8 @@ if [ -z "${TURN_SERVER}" ]; then TURN_SERVER="${JITSI_HOST}" fi +PROMETHEUS_JITSI_EXPORTER_IS_VERSION="$(cat "${__object}/explorer/prometheus-jitsi-meet-explorer-version")" + # The rest is loosely based on Jitsi's documentation # https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart @@ -75,15 +50,12 @@ export require="${require} __apt_source/jitsi_meet __apt_update_index" # Pre-feed debconf settings, so Jitsi's installation has a good config # shellcheck source=type/__jitsi_meet/files/debconf_settings.sh . "${__type}/files/debconf_settings.sh" # This defines DEBCONF_SETTINGS -__debconf_set_selections jitsi_meet --line "${DEBCONF_SETTINGS}" +__debconf_set_selections jitsi_meet --file - < +VirtualHost "guest.${JITSI_HOST}" + authentication = "anonymous" + c2s_require_encryption = false EOF +__line jitsi_jicofo_secured_domains \ + --file /etc/jitsi/jicofo/sip-communicator.properties \ + --line "org.jitsi.jicofo.auth.URL=XMPP:${JITSI_HOST}" \ + --regex "org.jitsi.jicofo.auth.URL=" \ + --state ${SECURED_DOMAINS_STATE_JICOFO} + # These two should be changed on new release -EXPORTER_VERSION="1.2.1" -EXPORTER_CHECKSUM="sha256:46d4b8475b72fd7632a5203f1cc3c7067bed4629902b7780a1da85e4e06c2129" -EXPORTER_URL="https://github.com/systemli/prometheus-jitsi-meet-exporter/releases/download/${EXPORTER_VERSION}/prometheus-jitsi-meet-exporter_${EXPORTER_VERSION}_linux_amd64.tar.gz" -if [ -f "${__object}/parameter/disable-prometheus-exporter" ]; then - EXPORTER_STATE="absent" -else - EXPORTER_STATE="present" -fi -__evilham_single_binary_service prometheus-jitsi-meet-exporter \ - --state "${EXPORTER_STATE}" \ - --do-not-manage-user \ - --user "nobody" \ - --group "nogroup" \ - --version "${EXPORTER_VERSION}" \ - --checksum "${EXPORTER_CHECKSUM}" \ - --url "${EXPORTER_URL}" \ - --unpack \ - --service-args "-videobridge-url 'http://localhost:8080/colibri/stats' -web.listen-address ':9888'" - -# -# Setup interpreter assets if requested -# See: https://gitlab.com/mfmt/jsi/ -# -jsi_updated_on="2022-04-21" -__link "/usr/share/jitsi-meet/interpreters.html" \ - --type symbolic \ - --source "/opt/jsi/static/index.html.sample" -__directory /opt/jsi --mode 0755 -export require="__directory/opt/jsi" -__download /opt/jsi/jsi.tar.gz \ - --url 'https://gitlab.com/mfmt/jsi/-/archive/1d2cceaf615ee61c0bba80e5bddc61c5d1018303/jsi-1d2cceaf615ee61c0bba80e5bddc61c5d1018303.tar.gz' \ - --sum "sha256:b020141093daa9937507b098f358d0be994834c3e23866a457fc5140415a0c53" -export require="__download/opt/jsi/jsi.tar.gz" -__unpack /opt/jsi/jsi.tar.gz \ - --preserve-archive \ - --tar-strip 1 \ - --destination /opt/jsi/static \ - --onchange "$(cat <]*(/external_api.js).!src='\1'!" \ - -e "s!

[^<]*

!

Jitsi Meetings with interpreter

!" \ - -e "s!https://meet.mayfirst.org!/!" \ - -e "s!(style.css|jsi.js)([^?])!\1?v=${jsi_updated_on:?}\2!" \ - /opt/jsi/static/index.html.sample +PROMETHEUS_JITSI_EXPORTER_SHOULD_VERSION="1.1.5" +PROMETHEUS_JITSI_EXPORTER_CHECKSUM="sha256:3ddf43a48d9a2f62be1bc6db9e7ba75d61994f9423e5c5b28be019f41f06f745" +PROMETHEUS_JITSI_EXPORTER_URL="https://github.com/systemli/prometheus-jitsi-meet-exporter/releases/download/${PROMETHEUS_JITSI_EXPORTER_SHOULD_VERSION}/prometheus-jitsi-meet-exporter-linux-amd64" +PROMETHEUS_JITSI_EXPORTER_VERSION_FILE="/usr/local/bin/.prometheus-jitsi-meet-exporter.cdist.version" +if [ ! -f "${__object}/parameter/disable-prometheus-exporter" ]; then + case "${init}" in + init|sysvinit) + __runit + require="__runit" __runit_service \ + prometheus-jitsi-meet-exporter --log --source - <&1 EOF -)" + + export require="__runit_service/prometheus-jitsi-meet-exporter" + JITSI_MEET_EXPORTER_SERVICE="sv %s prometheus-jitsi-meet-exporter" + ;; + systemd) + __systemd_unit prometheus-jitsi-meet-exporter.service \ + --source "-" \ + --enablement-state "enabled" < "${destination}" - echo -} - -download_file config.js -download_file interface_config.js -download_file doc/debian/jitsi-meet/jitsi-meet.example nginx.sh.orig -download_file doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example prosody.cfg.lua.sh.orig - -# Change the version file, maintainers should check that it matches -# the deb version -printf "2.0.%s-1" "${BRANCH#*_}" > jitsi-version diff --git a/type/__jitsi_meet_domain/files/config.js.sh b/type/__jitsi_meet_domain/files/config.js.sh index 3c1cf1a..f825761 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh +++ b/type/__jitsi_meet_domain/files/config.js.sh @@ -2,31 +2,7 @@ # shellcheck disable=SC2034 # This is intended to be included JITSI_CONFIG_JS="$(cat <. - // NOTE [cdist]: if we use '${DOMAIN}', jicofo won't start the meeting - authdomain: '${JITSI_HOST}', + // authdomain: '${JITSI_HOST}', // Focus component domain. Defaults to focus.. - focus: 'focus.${JITSI_HOST}', + // focus: 'focus.${JITSI_HOST}', // XMPP MUC domain. FIXME: use XEP-0030 to discover it. - muc: 'conference.${DOMAIN}' + muc: 'conference.${JITSI_HOST}' }, // BOSH URL. FIXME: use XEP-0156 to discover it. @@ -56,12 +37,15 @@ var config = { bosh: '///http-bind', // Websocket URL - // websocket: 'wss://${DOMAIN}/xmpp-websocket', + // websocket: 'wss://${JITSI_HOST}/xmpp-websocket', + + // The name of client node advertised in XEP-0115 'c' stanza + clientNode: 'http://jitsi.org/jitsimeet', // 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}', + // focusUserJid: 'focus@auth.${JITSI_HOST}', // Testing / experimental features. @@ -72,55 +56,30 @@ var config = { // issues related to insertable streams. // disableE2EE: 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 - // P2P test mode disables automatic switching to P2P when there are 2 // participants in the conference. - // p2pTestMode: false, + p2pTestMode: false // Enables the test specific features consumed by jitsi-meet-torture - // testMode: false, + // testMode: false // Disables the auto-play behavior of *all* newly created video element. // This is useful when the client runs on a host with limited resources. - // noAutoPlayVideo: false, + // noAutoPlayVideo: false + + // Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled, + // simulcast is turned off for the desktop share. If presenter is turned + // on while screensharing is in progress, the max bitrate is automatically + // adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines + // the probability for this to be enabled. + // capScreenshareBitrate: 1 // 0 to disable // 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. + // callStatsThreshold: 5 // enable callstats for 5% of the users. }, - // Disables moderator indicators. - // disableModeratorIndicator: false, - - // Disables the reactions feature. - // disableReactions: true, - - // Disables the reactions moderation feature. - // disableReactionsModeration: false, - - // Disables polls feature. - // disablePolls: false, - - // Disables self-view tile. (hides it from tile view and from filmstrip) - // disableSelfView: false, - - // Disables self-view settings in UI - // disableSelfViewSettings: false, - - // screenshotCapture : { - // Enables the screensharing capture feature. - // enabled: false, - // - // The mode for the screenshot capture feature. - // Can be either 'recording' - screensharing screenshots are taken - // only when the recording is also on, - // or 'always' - screensharing screenshots are always taken. - // mode: 'recording', - // } - // Disables ICE/UDP by filtering out local and remote UDP candidates in // signalling. // webrtcIceUdpDisable: false, @@ -133,14 +92,10 @@ var config = { // Media // - // Enable unified plan implementation support on Chromium based browsers. - // enableUnifiedOnChrome: false, - // Audio // Disable measuring of audio levels. disableAudioLevels: $(if [ -n "${DISABLE_AUDIO_LEVELS}" ]; then printf "true"; else printf "false"; fi), - // audioLevelsInterval: 200, // Enabling this will run the lib-jitsi-meet no audio detection module which @@ -153,10 +108,6 @@ var config = { // about the call. // enableSaveLogs: false, - // Enabling this will hide the "Show More" link in the GSM popover that can be - // used to display more statistics about the connection (IP, Port, protocol, etc). - // disableShowMoreStats: true, - // Enabling this will run the lib-jitsi-meet noise detection module which will // notify the user if there is noise, other than voice, coming from the current // selected microphone. The purpose it to let the user know that the input could @@ -176,59 +127,21 @@ var config = { // Enabling it (with #params) will disable local audio output of remote // participants and to enable it back a reload is needed. - // startSilent: false, + // startSilent: false + + // Sets the preferred target bitrate for the Opus audio codec by setting its + // 'maxaveragebitrate' parameter. Currently not available in p2p mode. + // Valid values are in the range 6000 to 510000 + // opusMaxAverageBitrate: 20000, // Enables support for opus-red (redundancy for Opus). // enableOpusRed: false, - // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. - // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. - // Specify enableOpusDtx to enable support for opus-dtx where - // audio packets won’t be transmitted while participant is silent or muted. - // audioQuality: { - // stereo: false, - // opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range. - // enableOpusDtx: false, - // }, - // Video // Sets the preferred resolution (height) for local video. Defaults to 720. // resolution: 720, - // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not - // disableRemoveRaisedHandOnFocus: false, - - // speakerStats: { - // // Specifies whether the speaker stats is enable or not. - // disabled: false, - - // // Specifies whether there will be a search field in speaker stats or not. - // disableSearch: false, - - // // Specifies whether participants in speaker stats should be ordered or not, and with what priority. - // // 'role', <- Moderators on top. - // // 'name', <- Alphabetically by name. - // // 'hasLeft', <- The ones that have left in the bottom. - // order: [ - // 'role', - // 'name', - // 'hasLeft', - // ], - // }, - - // DEPRECATED. Please use speakerStats.disableSearch instead. - // Specifies whether there will be a search field in speaker stats or not - // disableSpeakerStatsSearch: false, - - // DEPRECATED. Please use speakerStats.order . - // Specifies whether participants in speaker stats should be ordered or not, and with what priority - // speakerStatsOrder: [ - // 'role', <- Moderators on top - // 'name', <- Alphabetically by name - // 'hasLeft', <- The ones that have left in the bottom - // ], <- the order of the array elements determines priority - // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. // Use -1 to disable. // maxFullResolutionParticipants: 2, @@ -243,19 +156,18 @@ var config = { // height: { // ideal: 720, // max: 720, - // min: 240, - // }, - // }, + // min: 240 + // } + // } // }, $(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. + // 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. // enableLayerSuspension: false, // Every participant after the Nth will start video muted. @@ -265,151 +177,66 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // applied locally. FIXME: having these 2 options is confusing. // startWithVideoMuted: false, + // If set to true, prefer to use the H.264 video codec (if supported). + // Note that it's not recommended to do this because simulcast is not + // supported when using H.264. For 1-to-1 calls this setting is enabled by + // default and can be toggled in the p2p section. + // This option has been deprecated, use preferredCodec under videoQuality section instead. + // preferH264: true, + + // If set to true, disable H.264 video codec by stripping it out of the + // SDP. + // disableH264: false, + // Desktop sharing // Optional desktop sharing frame rate options. Default value: min:5, max:5. // desktopSharingFrameRate: { // min: 5, - // max: 5, + // 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 + // Try to start calls with screen-sharing instead of camera video. // startScreenSharing: false, // Recording - // DEPRECATED. Use recordingService.enabled instead. + // Whether to enable file recording or not. // fileRecordingsEnabled: false, - // Enable the dropbox integration. // dropbox: { - // appKey: '', // Specify your app key here. + // appKey: '' // Specify your app key here. // // A URL to redirect the user to, after authenticating // // by default uses: - // // 'https://${DOMAIN}/static/oauth.html' + // // 'https://${JITSI_HOST}/static/oauth.html' // redirectURI: - // 'https://${DOMAIN}/subfolder/static/oauth.html', + // 'https://${JITSI_HOST}/subfolder/static/oauth.html' // }, - - // recordingService: { - // // When integrations like dropbox are enabled only that will be shown, - // // by enabling fileRecordingsServiceEnabled, we show both the integrations - // // and the generic recording service (its configuration and storage type - // // depends on jibri configuration) - // enabled: false, - - // // Whether to show the possibility to share file recording with other people - // // (e.g. meeting participants), based on the actual implementation - // // on the backend. - // sharingEnabled: false, - - // // Hide the warning that says we only store the recording for 24 hours. - // hideStorageWarning: false, - // }, - - // DEPRECATED. Use recordingService.enabled instead. + // When integrations like dropbox are enabled only that will be shown, + // by enabling fileRecordingsServiceEnabled, we show both the integrations + // and the generic recording service (its configuration and storage type + // depends on jibri configuration) // fileRecordingsServiceEnabled: false, - - // DEPRECATED. Use recordingService.sharingEnabled instead. + // Whether to show the possibility to share file recording with other people + // (e.g. meeting participants), based on the actual implementation + // on the backend. // fileRecordingsServiceSharingEnabled: false, - // Local recording configuration. - // localRecording: { - // // Whether to disable local recording or not. - // disable: false, - - // // Whether to notify all participants when a participant is recording locally. - // notifyAllParticipants: false, - - // // Whether to disable the self recording feature (only local participant streams). - // disableSelfRecording: false, - // }, - - // Customize the Live Streaming dialog. Can be modified for a non-YouTube provider. - // liveStreaming: { - // // Whether to enable live streaming or not. - // enabled: false, - // // Terms link - // termsLink: 'https://www.youtube.com/t/terms', - // // Data privacy link - // dataPrivacyLink: 'https://policies.google.com/privacy', - // // RegExp string that validates the stream key input field - // validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}', - // // Documentation reference for the live streaming feature. - // helpLink: 'https://jitsi.org/live' - // }, - - // DEPRECATED. Use liveStreaming.enabled instead. + // Whether to enable live streaming or not. // liveStreamingEnabled: false, - // DEPRECATED. Use transcription.enabled instead. + // Transcription (in interface_config, + // subtitles and buttons can be configured) // transcribingEnabled: false, - // DEPRECATED. Use transcription.useAppLanguage instead. - // transcribeWithAppLanguage: true, - - // DEPRECATED. Use transcription.preferredLanguage instead. - // preferredTranscribeLanguage: 'en-US', - - // DEPRECATED. Use transcription.autoCaptionOnRecord instead. + // Enables automatic turning on captions when recording is started // autoCaptionOnRecord: false, - // Transcription options. - // transcription: { - // // Whether the feature should be enabled or not. - // enabled: false, - - // // Translation languages. - // // Available languages can be found in - // // ./src/react/features/transcribing/translation-languages.json. - // translationLanguages: ['en', 'es', 'fr', 'ro'], - - // // Important languages to show on the top of the language list. - // translationLanguagesHead: ['en'], - - // // If true transcriber will use the application language. - // // The application language is either explicitly set by participants in their settings or automatically - // // detected based on the environment, e.g. if the app is opened in a chrome instance which - // // is using french as its default language then transcriptions for that participant will be in french. - // // Defaults to true. - // useAppLanguage: true, - - // // Transcriber language. This settings will only work if "useAppLanguage" - // // is explicitly set to false. - // // Available languages can be found in - // // ./src/react/features/transcribing/transcriber-langs.json. - // preferredLanguage: 'en-US', - - // // Disable start transcription for all participants. - // disableStartForAll: false, - - // // Enables automatic turning on captions when recording is started - // autoCaptionOnRecord: false, - // }, - // Misc // Default value for the channel "last N" attribute. -1 for unlimited. channelLastN: ${CHANNEL_LAST_N}, - // Connection indicators - // connectionIndicators: { - // autoHide: true, - // autoHideTimeout: 5000, - // disabled: false, - // disableDetails: false, - // inactiveDisabled: false - // }, - - // Provides a way for the lastN value to be controlled through the UI. - // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN - // value will be used when the quality level is selected using "Manage Video Quality" slider. - // startLastN: 1, - // 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. @@ -423,9 +250,15 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 30: 15, // 50: 10, // 70: 5, - // 90: 2, + // 90: 2 // }, + // Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent', + // 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message + // that invokes the new bandwidth allocation algorithm in the bridge which is described here + // - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md. + // useNewBandwidthAllocationStrategy: false, + // Specify the settings for video quality optimizations on the client. // videoQuality: { // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified @@ -441,34 +274,22 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // to take effect. // preferredCodec: 'VP8', // - // // 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, - // // // 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, + // high: 1500000 // }, // VP9: { // low: 100000, // standard: 300000, - // high: 1200000, - // }, + // high: 1200000 + // } // }, // // // The options can be used to override default thresholds of video thumbnail heights corresponding to @@ -483,16 +304,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // // the high quality. // minHeightForQualityLvl: { // 360: 'standard', - // 720: 'high', + // 720: 'high' // }, // - // }, - - // Notification timeouts - // notificationTimeouts: { - // short: 2500, - // medium: 5000, - // long: 10000, + // // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas + // // for the presenter mode (camera picture-in-picture mode with screenshare). + // resizeDesktopForPresenter: false // }, // // Options for the recording limit notification. @@ -507,15 +324,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // appName: 'Unlimited recordings APP', // // // The URL of the app with unlimited recordings. - // appURL: 'https://unlimited.recordings.app.com/', + // appURL: 'https://unlimited.recordings.app.com/' // }, // Disables or enables RTX (RFC 4588) (defaults to false). // disableRtx: false, - // Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event. - // disableBeforeUnloadHandlers: true, - // Disables or enables TCC support in this client (default: enabled). // enableTcc: true, @@ -531,7 +345,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // enableIceRestart: false, // Enables forced reload of the client when the call is migrated as a result of - // the bridge going down. + // the bridge going down. Currently enabled by default as call migration through + // session-terminate is causing siganling issues when Octo is enabled. // enableForcedReload: true, // Use TURN/UDP servers for the jitsi-videobridge connection (by default @@ -539,65 +354,21 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // bridge itself is reachable via UDP) // useTurnUdp: false - // Enable support for encoded transform in supported browsers. This allows - // E2EE to work in Safari if the corresponding flag is enabled in the browser. - // Experimental. - // enableEncodedTransformSupport: false, - // UI // // Disables responsive tiles. // disableResponsiveTiles: false, - // DEPRECATED. Please use \`securityUi?.hideLobbyButton\` instead. - // Hides lobby button. + // Hides lobby button // hideLobbyButton: false, - // DEPRECATED. Please use \`lobby?.autoKnock\` instead. - // If Lobby is enabled starts knocking automatically. - // autoKnockLobby: false, - - // DEPRECATED. Please use \`lobby?.enableChat\` instead. - // Enable lobby chat. - // enableLobbyChat: true, - - // DEPRECATED! Use \`breakoutRooms.hideAddRoomButton\` instead. - // Hides add breakout room button - // hideAddRoomButton: false, - // Require users to always specify a display name. // requireDisplayName: true, - // DEPRECATED! Use 'welcomePage.disabled' instead. // Whether to use a welcome page or not. In case it's false a random room // will be joined when no room is specified. - // enableWelcomePage: true, - - // Configs for welcome page. - // welcomePage: { - // // Whether to disable welcome page. In case it's disabled a random room - // // will be joined when no room is specified. - // disabled: false, - // // If set,landing page will redirect to this URL. - // customUrl: '' - // }, - - // Configs for the lobby screen. - // lobby { - // // If Lobby is enabled, it starts knocking automatically. Replaces \`autoKnockLobby\`. - // autoKnock: false, - // // Enables the lobby chat. Replaces \`enableLobbyChat\`. - // enableChat: true, - // }, - - // Configs for the security related UI elements. - // securityUi: { - // // Hides the lobby button. Replaces \`hideLobbyButton\`. - // hideLobbyButton: false, - // // Hides the possibility to set and enter a lobby password. - // disableLobbyPassword: false, - // }, + enableWelcomePage: true, // Disable app shortcuts that are registered upon joining a conference // disableShortcuts: false, @@ -611,34 +382,20 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // enableClosePage: false, // Disable hiding of remote thumbnails when in a 1-on-1 conference call. - // Setting this to null, will also disable showing the remote videos - // when the toolbar is shown on mouse movements - // disable1On1Mode: null | false | true, + // disable1On1Mode: false, - // Default local name to be displayed - // defaultLocalDisplayName: 'me', - - // Default remote name to be displayed - // defaultRemoteDisplayName: 'Fellow Jitster', - - // Hides the display name from the participant thumbnail - // hideDisplayName: false, - - // Hides the dominant speaker name badge that hovers above the toolbox - // hideDominantSpeakerBadge: false, - - // Default language for the user interface. Cannot be overwritten. + // Default language for the user interface. defaultLanguage: '${DEFAULT_LANGUAGE}', // Disables profile and the edit of all fields from the profile settings (display name and email) // disableProfile: false, - // Hides the email section under profile settings. - // hideEmailInSettings: false, + // Whether or not some features are checked based on token. + // enableFeaturesBasedOnToken: false, // When enabled the password used for locking a room is restricted to up to the number of digits specified - // default: roomPasswordNumberOfDigits: false, // roomPasswordNumberOfDigits: 10, + // default: roomPasswordNumberOfDigits: false, // Message to show the users. Example: 'The service will be down for // maintenance at 01:00 AM GMT, @@ -648,22 +405,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // and microsoftApiApplicationClientID // enableCalendarIntegration: false, - // Configs for prejoin page. - // prejoinConfig: { - // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. - // // This replaces \`prejoinPageEnabled\`. - // 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 - // // either the jwt or the userInfo from the iframe api init object in order for this to have an effect. - // hideDisplayName: false, - // // List of buttons to hide from the extra join options dropdown. - // hideExtraJoinButtons: ['no-audio', 'by-phone'], - // }, - - // When 'true', the user cannot edit the display name. - // (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.) - // readOnlyName: false, + // When 'true', it shows an intermediate page before joining, where the user can configure their devices. + // prejoinPageEnabled: false, // If etherpad integration is enabled, setting this to true will // automatically open the etherpad when a participant joins. This @@ -681,24 +424,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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/' ], - - // Base URL for a Gravatar-compatible service. Defaults to Gravatar. - // DEPRECATED! Use \`gravatar.baseUrl\` instead. - // gravatarBaseURL: 'https://www.gravatar.com/avatar/', - - // Setup for Gravatar-compatible services. - // gravatar: { - // // Defaults to Gravatar. - // baseUrl: 'https://www.gravatar.com/avatar/', - // // True if Gravatar should be disabled. - // disabled: false, - // }, - - // App name to be displayed in the invitation email subject, as an alternative to - // interfaceConfig.APP_NAME. - // inviteAppName: null, + // Base URL for a Gravatar-compatible service. Defaults to libravatar. + // gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/', // Moved from interfaceConfig(TOOLBAR_BUTTONS). // The name of the toolbar buttons to display in the toolbar, including the @@ -712,128 +439,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // - 'desktop' controls the "Share your screen" button // - if \`toolbarButtons\` is undefined, we fallback to enabling all buttons on the UI // toolbarButtons: [ - // 'camera', - // 'chat', - // 'closedcaptions', - // 'desktop', - // 'download', - // 'embedmeeting', - // 'etherpad', - // 'feedback', - // 'filmstrip', - // 'fullscreen', - // 'hangup', - // 'help', - // 'highlight', - // 'invite', - // 'linktosalesforce', - // 'livestreaming', - // 'microphone', - // 'noisesuppression', - // 'participants-pane', - // 'profile', - // 'raisehand', - // 'recording', - // 'security', - // 'select-background', - // 'settings', - // 'shareaudio', - // 'sharedvideo', - // 'shortcuts', - // 'stats', - // 'tileview', - // 'toggle-camera', - // 'videoquality', - // 'whiteboard', + // 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen', + // 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording', + // 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand', + // 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts', + // 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security' // ], - // Holds values related to toolbar visibility control. - // toolbarConfig: { - // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT - // // The initial number of milliseconds for the toolbar buttons to be visible on screen. - // initialTimeout: 20000, - // // Moved from interfaceConfig.TOOLBAR_TIMEOUT - // // Number of milliseconds for the toolbar buttons to be visible on screen. - // timeout: 4000, - // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE - // // Whether toolbar should be always visible or should hide after x milliseconds. - // alwaysVisible: false, - // // Indicates whether the toolbar should still autohide when chat is open - // autoHideWhileChatIsOpen: false, - // }, - - // Toolbar buttons which have their click/tap event exposed through the API on - // \`toolbarButtonClicked\`. Passing a string for the button key will - // prevent execution of the click/tap routine; passing an object with \`key\` and - // \`preventExecution\` flag on false will not prevent execution of the click/tap - // routine. Below array with mixed mode for passing the buttons. - // buttonsWithNotifyClick: [ - // 'camera', - // { - // key: 'chat', - // preventExecution: false - // }, - // { - // key: 'closedcaptions', - // preventExecution: true - // }, - // 'desktop', - // 'download', - // 'embedmeeting', - // 'end-meeting', - // 'etherpad', - // 'feedback', - // 'filmstrip', - // 'fullscreen', - // 'hangup', - // 'hangup-menu', - // 'help', - // { - // key: 'invite', - // preventExecution: false - // }, - // 'livestreaming', - // 'microphone', - // 'mute-everyone', - // 'mute-video-everyone', - // 'noisesuppression', - // 'participants-pane', - // 'profile', - // { - // key: 'raisehand', - // preventExecution: true - // }, - // 'recording', - // 'security', - // 'select-background', - // 'settings', - // 'shareaudio', - // 'sharedvideo', - // 'shortcuts', - // 'stats', - // 'tileview', - // 'toggle-camera', - // 'videoquality', - // // The add passcode button from the security dialog. - // { - // key: 'add-passcode', - // preventExecution: false - // }, - // 'whiteboard', - // ], - - // 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: [], - - // An array with custom option buttons for the participant context menu - // type: Array<{ icon: string; id: string; text: string; }> - // customParticipantMenuButtons: [], - - // An array with custom option buttons for the toolbar - // type: Array<{ icon: string; id: string; text: string; }> - // customToolbarButtons: [], - // Stats // @@ -850,29 +462,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // 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 // enableDisplayNameInStats: false, @@ -880,26 +469,6 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // Enables sending participants' emails (if available) to callstats and other analytics // enableEmailInStats: false, - // faceLandmarks: { - // // Enables sharing your face coordinates. Used for centering faces within a video. - // enableFaceCentering: false, - - // // Enables detecting face expressions and sharing data with other participants - // enableFaceExpressionsDetection: false, - - // // Enables displaying face expressions in speaker stats - // enableDisplayFaceExpressions: false, - - // // Enable rtc stats for face landmarks - // enableRTCStats: false, - - // // Minimum required face movement percentage threshold for sending new face centering coordinates data. - // faceCenteringThreshold: 10, - - // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. - // captureInterval: 1000, - // }, - // Controls the percentage of automatic feedback shown to participants when callstats is enabled. // The default value is 100%. If set to 0, no automatic feedback will be requested // feedbackPercentage: 100, @@ -925,8 +494,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // connection. enabled: true, - // Enable unified plan implementation support on Chromium for p2p connection. - // enableUnifiedOnChrome: false, + // The STUN servers that will be used in the peer to peer connections + stunServers: [ + + { urls: 'stun:${TURN_SERVER}:443' } + ] // Sets the ICE transport policy for the p2p connection. At the time // of this writing the list of possible values are 'all' and 'relay', @@ -936,68 +508,56 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi) // If not set, the effective value is 'all'. // iceTransportPolicy: 'all', + // If set to true, it will prefer to use H.264 for P2P calls (if H.264 + // is supported). This setting is deprecated, use preferredCodec instead. + // preferH264: true, + // Provides a way to set the video codec preference on the p2p connection. Acceptable // codec values are 'VP8', 'VP9' and 'H264'. // preferredCodec: 'H264', + // If set to true, disable H.264 video codec by stripping it out of the + // SDP. This setting is deprecated, use disabledCodec instead. + // disableH264: false, + // Provides a way to prevent a video codec from being negotiated on the p2p connection. // disabledCodec: '', // How long we're going to wait, before going back to P2P after the 3rd // participant has left the conference (to filter out page reload). - // backToP2PDelay: 5, - - // The STUN servers that will be used in the peer to peer connections - stunServers: [ - - // { urls: 'stun:jitsi-meet.example.com:3478' }, - { urls: 'stun:${TURN_SERVER}:443' }, - ], + // backToP2PDelay: 5 }, analytics: { -${ANALYTICS_SETTINGS} - // True if the analytics should be disabled - // disabled: false, - // The Google Analytics Tracking ID: - // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1', + // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1' // Matomo configuration: // matomoEndpoint: 'https://your-matomo-endpoint/', // matomoSiteID: '42', // The Amplitude APP Key: - // amplitudeAPPKey: '', - - // Obfuscates room name sent to analytics (amplitude, rtcstats) - // Default value is false. - // obfuscateRoomName: false, + // amplitudeAPPKey: '' // Configuration for the rtcstats server: // By enabling rtcstats server every time a conference is joined the rtcstats // module connects to the provided rtcstatsEndpoint and sends statistics regarding // PeerConnection states along with getStats metrics polled at the specified // interval. - // rtcstatsEnabled: false, - // rtcstatsStoreLogs: false, + // rtcstatsEnabled: true, // In order to enable rtcstats one needs to provide a endpoint url. // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, - // The interval at which rtcstats will poll getStats, defaults to 10000ms. + // The interval at which rtcstats will poll getStats, defaults to 1000ms. // If the value is set to 0 getStats won't be polled and the rtcstats client // will only send data related to RTCPeerConnection events. - // rtcstatsPollInterval: 10000, - - // This determines if rtcstats sends the SDP to the rtcstats server or replaces - // all SDPs with an empty string instead. - // rtcstatsSendSdp: false, + // rtcstatsPolIInterval: 1000, // 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", + // "https://example.com/my-custom-analytics.js" // ], }, @@ -1006,89 +566,62 @@ ${ANALYTICS_SETTINGS} // Information about the jitsi-meet instance we are connecting to, including // the user region as seen by the server. - // deploymentInfo: { - // shard: "shard1", - // region: "europe", - // userRegion: "asia", - // }, + deploymentInfo: { + // shard: "shard1", + // region: "europe", + // userRegion: "asia" + }, - // Array of disabled sounds. - // Possible values: - // - 'ASKED_TO_UNMUTE_SOUND' - // - 'E2EE_OFF_SOUND' - // - 'E2EE_ON_SOUND' - // - 'INCOMING_MSG_SOUND' - // - 'KNOCKING_PARTICIPANT_SOUND' - // - 'LIVE_STREAMING_OFF_SOUND' - // - 'LIVE_STREAMING_ON_SOUND' - // - 'NO_AUDIO_SIGNAL_SOUND' - // - 'NOISY_AUDIO_INPUT_SOUND' - // - 'OUTGOING_CALL_EXPIRED_SOUND' - // - 'OUTGOING_CALL_REJECTED_SOUND' - // - 'OUTGOING_CALL_RINGING_SOUND' - // - 'OUTGOING_CALL_START_SOUND' - // - 'PARTICIPANT_JOINED_SOUND' - // - 'PARTICIPANT_LEFT_SOUND' - // - 'RAISE_HAND_SOUND' - // - 'REACTION_SOUND' - // - 'RECORDING_OFF_SOUND' - // - 'RECORDING_ON_SOUND' - // - 'TALK_WHILE_MUTED_SOUND' - // disabledSounds: [], - - // DEPRECATED! Use \`disabledSounds\` instead. // Decides whether the start/stop recording audio notifications should play on record. // disableRecordAudioNotification: false, - // DEPRECATED! Use \`disabledSounds\` instead. // Disables the sounds that play when other participants join or leave the // conference (if set to true, these sounds will not be played). // disableJoinLeaveSounds: false, - // DEPRECATED! Use \`disabledSounds\` instead. - // Disables the sounds that play when a chat message is received. - // disableIncomingMessageSound: false, - // Information for the chrome extension banner // chromeExtensionBanner: { // // The chrome extension to be installed address // url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', - // edgeUrl: 'https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn', // // Extensions info which allows checking if they are installed or not // chromeExtensionsInfo: [ // { // id: 'kglhbbefdnlheedjiejgomgmfplipfeb', - // path: 'jitsi-logo-48x48.png', - // }, - // // Edge extension info - // { - // id: 'eeecajlpbgjppibfledfihobcabccihn', - // path: 'jitsi-logo-48x48.png', - // }, + // path: 'jitsi-logo-48x48.png' + // } // ] // }, - // e2ee: { - // labels, - // externallyManagedKey: false, + // Local Recording + // + + // localRecording: { + // Enables local recording. + // Additionally, 'localrecording' (all lowercase) needs to be added to + // TOOLBAR_BUTTONS in interface_config.js for the Local Recording + // button to show up on the toolbar. + // + // enabled: true, + // + + // The recording format, can be one of 'ogg', 'flac' or 'wav'. + // format: 'flac' + // + // }, // Options related to end-to-end (participant to participant) ping. // e2eping: { - // // Whether ene-to-end pings should be enabled. - // enabled: false, + // // The interval in milliseconds at which pings will be sent. + // // Defaults to 10000, set to <= 0 to disable. + // pingInterval: 10000, // - // // The number of responses to wait for. - // numRequests: 5, - // - // // The max conference size in which e2e pings will be sent. - // maxConferenceSize: 200, - // - // // The maximum number of e2e ping messages per second for the whole conference to aim for. - // // This is used to control the pacing of messages in order to reduce the load on the backend. - // maxMessagesPerSecond: 250, - // }, + // // The interval in milliseconds at which analytics events + // // with the measured RTT will be sent. Defaults to 60000, set + // // to <= 0 to disable. + // analyticsInterval: 60000, + // }, // If set, will attempt to use the provided video input device label when // triggering a screenshare, instead of proceeding through the normal flow @@ -1097,64 +630,10 @@ ${ANALYTICS_SETTINGS} // use only. // _desktopSharingSourceDevice: 'sample-id-or-label', - // DEPRECATED! Use deeplinking.disabled instead. // If true, any checks to handoff to another application will be prevented // and instead the app will continue to display in the current browser. // disableDeepLinking: false, - // The deeplinking config. - // 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. - // desktop: { - // appName: 'Jitsi Meet' - // }, - // // If true, any checks to handoff to another application will be prevented - // // and instead the app will continue to display in the current browser. - // disabled: false, - - // // whether to hide the logo on the deep linking pages. - // hideLogo: false, - - // // The ios deeplinking config. - // ios: { - // appName: 'Jitsi Meet', - // // Specify mobile app scheme for opening the app from the mobile browser. - // appScheme: 'org.jitsi.meet', - // // Custom URL for downloading ios mobile app. - // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } - // }, - - // // The android deeplinking config. - // android: { - // appName: 'Jitsi Meet', - // // Specify mobile app scheme for opening the app from the mobile browser. - // appScheme: 'org.jitsi.meet', - // // Custom URL for downloading android mobile app. - // downloadLink: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', - // // Android app package name. - // appPackage: 'org.jitsi.meet', - // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', - // dynamicLink: { - // apn: 'org.jitsi.meet', - // appCode: 'w2atb', - // customDomain: undefined, - // ibi: 'com.atlassian.JitsiMeet.ios', - // isi: '1165103905' - // } - // } - // }, - // 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, @@ -1168,8 +647,7 @@ ${ANALYTICS_SETTINGS} // Disables all invite functions from the app (share, invite, dial out...etc) // disableInviteFunctions: true, - // Disables storing the room name to the recents list. When in an iframe this is ignored and - // the room is never stored in the recents list. + // Disables storing the room name to the recents list // doNotStoreRoom: true, // Deployment specific URLs. @@ -1179,120 +657,38 @@ ${ANALYTICS_SETTINGS} // userDocumentationURL: 'https://docs.example.com/video-meetings.html', // // If specified a 'Download our apps' button will be displayed in the overflow menu with a link // // to the specified URL for an app download page. - // downloadAppsUrl: 'https://docs.example.com/our-apps.html', + // downloadAppsUrl: 'https://docs.example.com/our-apps.html' // }, // Options related to the remote participant menu. // remoteVideoMenu: { - // // Whether the remote video context menu to be rendered or not. - // disabled: true, // // If set to true the 'Kick out' button will be disabled. - // 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, + // disableKick: true // }, - // 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, // Enables support for lip-sync for this client (if the browser supports it). - // enableLipSync: false, + // 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. - The config file should be in JSON. None of the fields are mandatory and the response must have the shape: - { - // The domain url to apply (will replace the domain in the sharing conference link/embed section) - inviteDomain: 'example-company.org, - // The hex value for the colour used as background - backgroundColor: '#fff', - // The url for the image used as background - backgroundImageUrl: 'https://example.com/background-img.png', - // The anchor url used when clicking the logo image - logoClickUrl: 'https://example-company.org', - // The url used for the image used as logo - logoImageUrl: 'https://example.com/logo-img.png', - // Overwrite for pool of background images for avatars - avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'], - // The lobby/prejoin screen background - premeetingBackground: 'url(https://example.com/premeeting-background.png)', - // A list of images that can be used as video backgrounds. - // When this field is present, the default images will be replaced with those provided. - virtualBackgrounds: ['https://example.com/img.jpg'], - // Object containing a theme's properties. It also supports partial overwrites of the main theme. - // For a list of all possible theme tokens and their current defaults, please check: - // https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json - // For a short explanations on each of the tokens, please check: - // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.ts - // IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code - // or they are partially applied. - customTheme: { - palette: { - ui01: "orange !important", - ui02: "maroon", - surface02: 'darkgreen', - ui03: "violet", - ui04: "magenta", - ui05: "blueviolet", - field02Hover: 'red', - action01: 'green', - action01Hover: 'lightgreen', - disabled01: 'beige', - success02: 'cadetblue', - action02Hover: 'aliceblue', - }, - typography: { - labelRegular: { - fontSize: 25, - lineHeight: 30, - fontWeight: 500, - } - } - } - } + { + // The hex value for the colour used as background + backgroundColor: '#fff', + // The url for the image used as background + backgroundImageUrl: 'https://example.com/background-img.png', + // The anchor url used when clicking the logo image + logoClickUrl: 'https://example-company.org', + // The url used for the image used as logo + logoImageUrl: 'https://example.com/logo-img.png' + } */ dynamicBrandingUrl: "${DYNAMIC_BRANDING_URL}", - // Options related to the participants pane. - // participantsPane: { - // // Hides the moderator settings tab. - // hideModeratorSettingsTab: false, - // // Hides the more actions button. - // hideMoreActionsButton: false, - // // Hides the mute all button. - // hideMuteAllButton: false, - // }, - - // Options related to the breakout rooms feature. - // breakoutRooms: { - // // Hides the add breakout room button. This replaces \`hideAddRoomButton\`. - // hideAddRoomButton: false, - // // Hides the auto assign participants button. - // hideAutoAssignButton: false, - // // Hides the join breakout room button. - // hideJoinRoomButton: false, - // }, - - // When true 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, @@ -1304,37 +700,11 @@ ${ANALYTICS_SETTINGS} // If true, tile view will not be enabled automatically when the participants count threshold is reached. // disableTileView: true, - // If true, the tiles will be displayed contained within the available space rather than enlarged to cover it, - // with a 16:9 aspect ratio (old behaviour). - // disableTileEnlargement: true, - - // Controls the visibility and behavior of the top header conference info labels. - // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header. - // conferenceInfo: { - // // those labels will not be hidden in tandem with the toolbox. - // alwaysVisible: ['recording', 'raised-hands-count'], - // // those labels will be auto-hidden in tandem with the toolbox buttons. - // autoHide: [ - // 'subject', - // 'conference-timer', - // 'participants-count', - // 'e2ee', - // 'transcribing', - // 'video-quality', - // 'insecure-room', - // 'highlight-moment', - // 'top-panel-toggle', - // ] - // }, - // Hides the conference subject - // hideConferenceSubject: false, + // hideConferenceSubject: true, // Hides the conference timer. - // hideConferenceTimer: false, - - // Hides the recording label - // hideRecordingLabel: false, + // hideConferenceTimer: true, // Hides the participants stats // hideParticipantsStats: true, @@ -1342,40 +712,25 @@ ${ANALYTICS_SETTINGS} // Sets the conference subject // subject: 'Conference Subject', - // Sets the conference local subject - // localSubject: 'Conference Local Subject', - // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser // is not persisting the local storage inside the iframe. // useHostPageLocalStorage: true, - // Etherpad ("shared document") integration. - // - // If set, add a "Open shared document" link to the bottom right menu that - // will open an etherpad document. - // etherpad_base: 'https://your-etherpad-installati.on/p/', - - // To enable information about dial-in access to meetings you need to provide - // dialInNumbersUrl and dialInConfCodeUrl. - // dialInNumbersUrl returns a json array of numbers that can be used for dial-in. - // {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"} - // dialInConfCodeUrl is the conference mapper converting a meeting id to a PIN used for dial-in - // or the other way around (more info in resources/cloud-api.swagger) - // List of undocumented settings used in jitsi-meet /** _immediateReloadThreshold debug debugAudioLevels deploymentInfo + dialInConfCodeUrl + dialInNumbersUrl dialOutAuthUrl dialOutCodesUrl - dialOutRegionUrl disableRemoteControl displayJids + etherpad_base externalConnectUrl - e2eeLabels firefox_fake_device googleApiApplicationClientID iAmRecorder @@ -1412,17 +767,11 @@ ${ANALYTICS_SETTINGS} forceJVB121Ratio forceTurnRelay hiddenDomain - hiddenFromRecorderFeatureEnabled ignoreStartMuted websocketKeepAlive websocketKeepAliveUrl */ - /** - * Default interval (milliseconds) for triggering mouseMoved iframe API event - */ - mouseMoveCallbackInterval: 1000, - /** Use this array to configure which notifications will be shown to the user The items correspond to the title or description key of that notification @@ -1454,37 +803,21 @@ ${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.chatMessages', // shown when receiving chat messages while the chat window is closed + // 'localRecording.localRecording', // shown when a local recording is started // '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.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.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.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.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.participantWantsToJoin', // shown when lobby is enabled and participant requests 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.startSilentTitle', // shown when user joined with no audio - // '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, // 'prejoin.errorDialOut', // 'prejoin.errorDialOutDisconnected', // 'prejoin.errorDialOutFailed', @@ -1497,103 +830,16 @@ ${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.failedToStart' // shown when transcribing fails to start + // ] - // List of notifications to be disabled. Works in tandem with the above setting. - // disabledNotifications: [], + // Allow all above example options to include a trailing comma and + // prevent fear when commenting out the last value. + makeJsonParserHappy: 'even if last key had a trailing comma' - // Prevent the filmstrip from autohiding when screen width is under a certain threshold - // disableFilmstripAutohiding: false, - - // filmstrip: { - // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip - // // (width, tiles aspect ratios) through the interfaceConfig options. - // disableResizable: false, - - // // Disables the stage filmstrip - // // (displaying multiple participants on stage besides the vertical filmstrip) - // disableStageFilmstrip: false, - - // // Default number of participants that can be displayed on stage. - // // The user can change this in settings. Number must be between 1 and 6. - // stageFilmstripParticipants: 1, - - // // Disables the top panel (only shown when a user is sharing their screen). - // disableTopPanel: false, - - // // The minimum number of participants that must be in the call for - // // the top panel layout to be used. - // minParticipantCountForTopPanel: 50, - // }, - - // Tile view related config options. - // tileView: { - // // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may - // // not be possible to show the exact number of participants specified here. - // numberOfVisibleTiles: 25, - // }, - - // Specifies whether the chat emoticons are disabled or not - // disableChatSmileys: false, - - // Settings for the GIPHY integration. - // giphy: { - // // Whether the feature is enabled or not. - // enabled: false, - // // SDK API Key from Giphy. - // sdkKey: '', - // // Display mode can be one of: - // // - tile: show the GIF on the tile of the participant that sent it. - // // - chat: show the GIF as a message in chat - // // - all: all of the above. This is the default option - // displayMode: 'all', - // // How long the GIF should be displayed on the tile (in milliseconds). - // tileTime: 5000, - // // Limit results by rating: g, pg, pg-13, r. Default value: g. - // rating: 'pg', - // // The proxy server url for giphy requests in the web app. - // proxyUrl: 'https://giphy-proxy.example.com', - // }, - - // Logging - // logging: { - // // Default log level for the app and lib-jitsi-meet. - // defaultLogLevel: 'trace', - // // Option to disable LogCollector (which stores the logs on CallStats). - // //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', - // }, - - // Application logo url - // defaultLogoUrl: 'images/watermark.svg', - - // Settings for the Excalidraw whiteboard integration. - // whiteboard: { - // // Whether the feature is enabled or not. - // enabled: true, - // // The server used to support whiteboard collaboration. - // // https://github.com/jitsi/excalidraw-backend - // collabServerBaseUrl: 'https://excalidraw-backend.example.com', - // }, + // no configuration value should follow this line. }; -// Temporary backwards compatibility with old mobile clients. -config.flags = config.flags || {}; -config.flags.sourceNameSignaling = true; -config.flags.sendMultipleVideoStreams = true; -config.flags.receiveMultipleVideoStreams = true; - -// Set the default values for JaaS customers -if (enableJaaS) { - config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids'; - config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access'; - config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment) -} +/* eslint-enable no-unused-vars, no-var */ EOF )" diff --git a/type/__jitsi_meet_domain/files/config.js.sh.orig b/type/__jitsi_meet_domain/files/config.js.sh.orig index 422d2f1..9d49d52 100644 --- a/type/__jitsi_meet_domain/files/config.js.sh.orig +++ b/type/__jitsi_meet_domain/files/config.js.sh.orig @@ -1,28 +1,4 @@ -/* eslint-disable comma-dangle, no-unused-vars, no-var, prefer-template, vars-on-top */ - -/* - * NOTE: If you add a new option please remember to document it here: - * https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration - */ - -var subdir = ''; -var subdomain = ''; - -if (subdomain) { - subdomain = subdomain.substr(0, subdomain.length - 1).split('.') - .join('_') - .toLowerCase() + '.'; -} - -// In case of no ssi provided by the webserver, use empty strings -if (subdir.startsWith('