1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/jitsi_ynh.git synced 2024-09-03 19:35:57 +02:00

Upgrade to 2.0.7882~ynh1

This commit is contained in:
yalh76 2022-10-14 03:49:09 +02:00
parent 36639c778e
commit d1579c1f9d
18 changed files with 534 additions and 327 deletions

156
.github/workflows/updater.sh vendored Normal file
View file

@ -0,0 +1,156 @@
#!/bin/bash
#=================================================
# PACKAGE UPDATING HELPER
#=================================================
# This script is meant to be run by GitHub Actions
# The YunoHost-Apps organisation offers a template Action to run this script periodically
# Since each app is different, maintainers can adapt its contents so as to perform
# automatic actions when a new upstream release is detected.
#=================================================
# FETCHING LATEST RELEASE AND ITS ASSETS
#=================================================
# Fetching information
current_version=$(cat manifest.json | jq -j '.version|split("~")[0]')
repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]')
# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions)
version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .name' | sort -V | tail -1)
package_repository="https://download.jitsi.org/stable"
tempdir="$(mktemp -d)"
curl -o $tempdir/Release "$package_repository/Packages"
dependencies=$(sed -n '/Version: '$version'*/,/Package:/p' $tempdir/Release | grep "^Pre-Depends:" | cut -d " " -f2-)
dependencies="$dependencies, $(sed -n '/Version: '$version'*/,/Package:/p' $tempdir/Release | grep "^Depends:" | cut -d " " -f2-)"
IFS=',' read -ra dependencies_array <<< "$dependencies"
assets=()
for onedependency in "${dependencies_array[@]}"
do
app=$(echo $onedependency | cut -d " " -f1)
appversion=$(echo $onedependency | grep -oP "(?<== ).*(?=\))")
assets+=("$package_repository/${app}_${appversion}_all.deb")
done
rm -rf $tempdir
# Later down the script, we assume the version has only digits and dots
# Sometimes the release name starts with a "v", so let's filter it out.
# You may need more tweaks here if the upstream repository has different naming conventions.
if [[ ${version:0:1} == "v" || ${version:0:1} == "V" ]]; then
version=${version:1}
fi
# Setting up the environment variables
echo "Current version: $current_version"
echo "Latest release from upstream: $version"
echo "VERSION=$version" >> $GITHUB_ENV
echo "REPO=$repo" >> $GITHUB_ENV
# For the time being, let's assume the script will fail
echo "PROCEED=false" >> $GITHUB_ENV
# Proceed only if the retrieved version is greater than the current one
if ! dpkg --compare-versions "$current_version" "lt" "$version" ; then
echo "::warning ::No new version available"
exit 0
# Proceed only if a PR for this new version does not already exist
elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then
echo "::warning ::A branch already exists for this update"
exit 0
fi
# Each release can hold multiple assets (e.g. binaries for different architectures, source code, etc.)
echo "${#assets[@]} available asset(s)"
#=================================================
# UPDATE SOURCE FILES
#=================================================
# Here we use the $assets variable to get the resources published in the upstream release.
# Here is an example for Grav, it has to be adapted in accordance with how the upstream releases look like.
# Let's loop over the array of assets URLs
for asset_url in ${assets[@]}; do
echo "Handling asset at $asset_url"
# Assign the asset to a source file in conf/ directory
# Here we base the source file name upon a unique keyword in the assets url (admin vs. update)
# Leave $src empty to ignore the asset
case $asset_url in
*"jitsi-videobridge"*)
src="jitsi-videobridge"
;;
*"jicofo"*)
src="jitsi-jicofo"
;;
*"jitsi-meet-web_"*)
src="jitsi-meet-web"
;;
*"jitsi-meet-prosody"*)
src="jitsi-meet-prosody"
;;
*)
src=""
;;
esac
# If $src is not empty, let's process the asset
if [ ! -z "$src" ]; then
# Create the temporary directory
tempdir="$(mktemp -d)"
# Download sources and calculate checksum
filename=${asset_url##*/}
curl --silent -4 -L $asset_url -o "$tempdir/$filename"
checksum=$(sha256sum "$tempdir/$filename" | head -c 64)
# Delete temporary directory
rm -rf $tempdir
# Get extension
if [[ $filename == *.tar.gz ]]; then
extension=tar.gz
else
extension=${filename##*.}
fi
# Rewrite source file
cat <<EOT > conf/$src.src
SOURCE_URL=$asset_url
SOURCE_SUM=$checksum
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=deb
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=$src.deb
SOURCE_EXTRACT=false
EOT
echo "... conf/$src.src updated"
else
echo "... asset ignored"
fi
done
#=================================================
# SPECIFIC UPDATE STEPS
#=================================================
# Any action on the app's source code can be done.
# The GitHub Action workflow takes care of committing all changes after this script ends.
#=================================================
# GENERIC FINALIZATION
#=================================================
# Replace new version in manifest
echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" > manifest.json
# No need to update the README, yunohost-bot takes care of it
# The Action will proceed only if the PROCEED environment variable is set to true
echo "PROCEED=true" >> $GITHUB_ENV
exit 0

52
.github/workflows/updater.yml vendored Normal file
View file

@ -0,0 +1,52 @@
# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected.
# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization.
# This file should be enough by itself, but feel free to tune it to your needs.
# It calls updater.sh, which is where you should put the app-specific update steps.
name: Check for new upstream releases
on:
# Allow to manually trigger the workflow
workflow_dispatch:
# Run it every day at 6:00 UTC
schedule:
- cron: '0 6 * * *'
jobs:
updater:
runs-on: ubuntu-latest
steps:
- name: Fetch the source code
uses: actions/checkout@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Run the updater script
id: run_updater
run: |
# Setting up Git user
git config --global user.name 'yunohost-bot'
git config --global user.email 'yunohost-bot@users.noreply.github.com'
# Run the updater script
/bin/bash .github/workflows/updater.sh
- name: Commit changes
id: commit
if: ${{ env.PROCEED == 'true' }}
run: |
git commit -am "Upgrade to v$VERSION"
- name: Create Pull Request
id: cpr
if: ${{ env.PROCEED == 'true' }}
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Update to version ${{ env.VERSION }}
committer: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
author: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
signoff: false
base: testing
branch: ci-auto-update-v${{ env.VERSION }}
delete-branch: true
title: 'Upgrade to version ${{ env.VERSION }}'
body: |
Upgrade to v${{ env.VERSION }}
[See upstream release page](${{ env.RELEASE }})
Provided description:
${{ env.DESCRIPTION }}
draft: false

View file

@ -21,4 +21,4 @@ JICOFO_OPTS=""
JICOFO_MAX_MEMORY=__MAX_MEMORY__m JICOFO_MAX_MEMORY=__MAX_MEMORY__m
# adds java system props that are passed to jicofo (default are for home and logging config file) # adds java system props that are passed to jicofo (default are for home and logging config file)
JAVA_SYS_PROPS="-Dconfig.file=/etc/__APP__/jicofo/jicofo.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/__APP__ -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/__APP__ -Djava.util.logging.config.file=/etc/__APP__/jicofo/logging.properties" JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/__APP__ -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/__APP__ -Djava.util.logging.config.file=/etc/__APP__/jicofo/logging.properties -Dconfig.file=/etc/__APP__/jicofo/jicofo.conf"

View file

@ -1,7 +1,7 @@
SOURCE_URL=https://download.jitsi.org/stable/jicofo_1.0-877-1_all.deb SOURCE_URL=https://download.jitsi.org/stable/jicofo_1.0-940-1_all.deb
SOURCE_SUM=a761d32a01240a8e665bea454ac6c082a78d0d3aeb60db707f38035ea1363f35 SOURCE_SUM=bf1eda5077cac46fad674b0cf1e5abd6d4ca7fffdb33174a5611392383f898ba
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=deb SOURCE_FORMAT=deb
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=jitsi-jicofo.deb SOURCE_FILENAME=jitsi-jicofo.deb
SOURCE_EXTRACT=false SOURCE_EXTRACT=false

View file

@ -46,18 +46,18 @@ var config = {
// enableThumbnailReordering: true, // enableThumbnailReordering: true,
// Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. // 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 // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users
// P2P test mode disables automatic switching to P2P when there are 2 // P2P test mode disables automatic switching to P2P when there are 2
// participants in the conference. // participants in the conference.
// p2pTestMode: false, // p2pTestMode: false,
// Enables the test specific features consumed by jitsi-meet-torture // 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. // Disables the auto-play behavior of *all* newly created video element.
// This is useful when the client runs on a host with limited resources. // 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, // Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
// simulcast is turned off for the desktop share. If presenter is turned // simulcast is turned off for the desktop share. If presenter is turned
@ -66,17 +66,17 @@ var config = {
// the probability for this to be enabled. This setting has been deprecated. // the probability for this to be enabled. This setting has been deprecated.
// desktopSharingFrameRate.max now determines whether simulcast will be enabled // desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare. // or disabled for the screenshare.
// capScreenshareBitrate: 1 // 0 to disable - deprecated. // capScreenshareBitrate: 1, // 0 to disable - deprecated.
// Whether to use fake constraints (height: 99999, width: 99999) when calling getDisplayMedia on // Whether to use fake constraints (height: 99999, width: 99999) when calling getDisplayMedia on
// Chromium based browsers. This is intended as a workaround for // Chromium based browsers. This is intended as a workaround for
// https://bugs.chromium.org/p/chromium/issues/detail?id=1056311 // https://bugs.chromium.org/p/chromium/issues/detail?id=1056311
// setScreenSharingResolutionConstraints: true // setScreenSharingResolutionConstraints: true,
// Enable callstats only for a percentage of users. // Enable callstats only for a percentage of users.
// This takes a value between 0 and 100 which determines the probability for // This takes a value between 0 and 100 which determines the probability for
// the callstats to be enabled. // the callstats to be enabled.
// callStatsThreshold: 5 // enable callstats for 5% of the users. // callStatsThreshold: 5, // enable callstats for 5% of the users.
}, },
// Feature Flags. // Feature Flags.
@ -86,7 +86,11 @@ var config = {
// Enables sending multiple video streams, i.e., camera and desktop tracks can be shared in the conference // Enables sending multiple video streams, i.e., camera and desktop tracks can be shared in the conference
// separately as two different streams instead of one composite stream. // separately as two different streams instead of one composite stream.
// sendMultipleVideoStreams: false // sendMultipleVideoStreams: false,
// Signal that this client supports receiving multiple video streams. Without this flag jicofo will enable
// multi-stream backward compatibility.
// receiveMultipleVideoStreams: true,
}, },
// Disables moderator indicators. // Disables moderator indicators.
@ -115,7 +119,7 @@ var config = {
// Can be either 'recording' - screensharing screenshots are taken // Can be either 'recording' - screensharing screenshots are taken
// only when the recording is also on, // only when the recording is also on,
// or 'always' - screensharing screenshots are always taken. // or 'always' - screensharing screenshots are always taken.
// mode: 'recording' // mode: 'recording',
// } // }
// Disables ICE/UDP by filtering out local and remote UDP candidates in // Disables ICE/UDP by filtering out local and remote UDP candidates in
@ -137,6 +141,7 @@ var config = {
// Disable measuring of audio levels. // Disable measuring of audio levels.
// disableAudioLevels: false, // disableAudioLevels: false,
// audioLevelsInterval: 200, // audioLevelsInterval: 200,
// Enabling this will run the lib-jitsi-meet no audio detection module which // Enabling this will run the lib-jitsi-meet no audio detection module which
@ -172,7 +177,7 @@ var config = {
// Enabling it (with #params) will disable local audio output of remote // Enabling it (with #params) will disable local audio output of remote
// participants and to enable it back a reload is needed. // participants and to enable it back a reload is needed.
// startSilent: false // startSilent: false,
// Enables support for opus-red (redundancy for Opus). // Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false, // enableOpusRed: false,
@ -181,7 +186,7 @@ var config = {
// Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
// audioQuality: { // audioQuality: {
// stereo: false, // stereo: false,
// opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range. // opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range.
// }, // },
// Video // Video
@ -200,7 +205,7 @@ var config = {
// 'role', <- Moderators on top // 'role', <- Moderators on top
// 'name', <- Alphabetically by name // 'name', <- Alphabetically by name
// 'hasLeft', <- The ones that have left in the bottom // 'hasLeft', <- The ones that have left in the bottom
// ] <- the order of the array elements determines priority // ], <- 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. // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
// Use -1 to disable. // Use -1 to disable.
@ -216,9 +221,9 @@ var config = {
// height: { // height: {
// ideal: 720, // ideal: 720,
// max: 720, // max: 720,
// min: 240 // min: 240,
// } // },
// } // },
// }, // },
// Enable / disable simulcast support. // Enable / disable simulcast support.
@ -253,7 +258,7 @@ var config = {
// Optional desktop sharing frame rate options. Default value: min:5, max:5. // Optional desktop sharing frame rate options. Default value: min:5, max:5.
// desktopSharingFrameRate: { // desktopSharingFrameRate: {
// min: 5, // min: 5,
// max: 5 // max: 5,
// }, // },
// This option has been deprecated since it is no longer supported as per the w3c spec. // This option has been deprecated since it is no longer supported as per the w3c spec.
@ -265,52 +270,115 @@ var config = {
// Recording // Recording
// Whether to enable file recording or not. // DEPRECATED. Use recordingService.enabled instead.
// fileRecordingsEnabled: false, // fileRecordingsEnabled: false,
// Enable the dropbox integration. // Enable the dropbox integration.
// dropbox: { // dropbox: {
// appKey: '<APP_KEY>' // Specify your app key here. // appKey: '<APP_KEY>', // Specify your app key here.
// // A URL to redirect the user to, after authenticating // // A URL to redirect the user to, after authenticating
// // by default uses: // // by default uses:
// // 'https://__DOMAIN__/static/oauth.html' // // 'https://jitsi-meet.example.com/static/oauth.html'
// redirectURI: // redirectURI:
// 'https://__DOMAIN__/subfolder/static/oauth.html' // 'https://jitsi-meet.example.com/subfolder/static/oauth.html',
// }, // },
// When integrations like dropbox are enabled only that will be shown,
// by enabling fileRecordingsServiceEnabled, we show both the integrations // recordingService: {
// and the generic recording service (its configuration and storage type // // When integrations like dropbox are enabled only that will be shown,
// depends on jibri configuration) // // by enabling fileRecordingsServiceEnabled, we show both the integrations
// // and the generic recording service (its configuration and storage type
// // depends on jibri configuration)
// enabled: false,
// // Whether to show the possibility to share file recording with other people
// // (e.g. meeting participants), based on the actual implementation
// // on the backend.
// sharingEnabled: false,
// // Hide the warning that says we only store the recording for 24 hours.
// hideStorageWarning: false,
// },
// DEPRECATED. Use recordingService.enabled instead.
// fileRecordingsServiceEnabled: false, // fileRecordingsServiceEnabled: false,
// Whether to show the possibility to share file recording with other people
// (e.g. meeting participants), based on the actual implementation // DEPRECATED. Use recordingService.sharingEnabled instead.
// on the backend.
// fileRecordingsServiceSharingEnabled: false, // fileRecordingsServiceSharingEnabled: false,
// Whether to enable live streaming or not. // Local recording configuration.
// localRecording: {
// // Whether to disable local recording or not.
// disable: false,
// // Whether to notify all participants when a participant is recording locally.
// notifyAllParticipants: false,
// // Whether to disable the self recording feature (only local participant streams).
// disableSelfRecording: false,
// },
// Customize the Live Streaming dialog. Can be modified for a non-YouTube provider.
// liveStreaming: {
// // Whether to enable live streaming or not.
// enabled: false,
// // Terms link
// termsLink: 'https://www.youtube.com/t/terms',
// // Data privacy link
// dataPrivacyLink: 'https://policies.google.com/privacy',
// // RegExp string that validates the stream key input field
// validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}',
// // Documentation reference for the live streaming feature.
// helpLink: 'https://jitsi.org/live'
// },
// DEPRECATED. Use liveStreaming.enabled instead.
// liveStreamingEnabled: false, // liveStreamingEnabled: false,
// Whether to enable local recording or not. // DEPRECATED. Use transcription.enabled instead.
// enableLocalRecording: false,
// Transcription (in interface_config,
// subtitles and buttons can be configured)
// transcribingEnabled: false, // transcribingEnabled: false,
// If true transcriber will use the application language. // DEPRECATED. Use transcription.useAppLanguage instead.
// 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.
// transcribeWithAppLanguage: true, // transcribeWithAppLanguage: true,
// Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false. // DEPRECATED. Use transcription.preferredLanguage instead.
// Available languages can be found in
// ./src/react/features/transcribing/transcriber-langs.json.
// preferredTranscribeLanguage: 'en-US', // preferredTranscribeLanguage: 'en-US',
// Enables automatic turning on captions when recording is started // DEPRECATED. Use transcription.autoCaptionOnRecord instead.
// autoCaptionOnRecord: false, // 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 // Misc
// Default value for the channel "last N" attribute. -1 for unlimited. // Default value for the channel "last N" attribute. -1 for unlimited.
@ -343,7 +411,7 @@ var config = {
// 30: 15, // 30: 15,
// 50: 10, // 50: 10,
// 70: 5, // 70: 5,
// 90: 2 // 90: 2,
// }, // },
// Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent', // Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
@ -372,7 +440,7 @@ var config = {
// // This will result in Safari not being able to decode video from endpoints sending VP9 video. // // 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 // // 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. // // preferred codec and goes back to the preferred codec when that endpoint leaves.
// // enforcePreferredCodec: false, // enforcePreferredCodec: false,
// //
// // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // 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 // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
@ -383,18 +451,18 @@ var config = {
// H264: { // H264: {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
// high: 1500000 // high: 1500000,
// }, // },
// VP8 : { // VP8 : {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
// high: 1500000 // high: 1500000,
// }, // },
// VP9: { // VP9: {
// low: 100000, // low: 100000,
// standard: 300000, // standard: 300000,
// high: 1200000 // high: 1200000,
// } // },
// }, // },
// //
// // The options can be used to override default thresholds of video thumbnail heights corresponding to // // The options can be used to override default thresholds of video thumbnail heights corresponding to
@ -409,19 +477,19 @@ var config = {
// // the high quality. // // the high quality.
// minHeightForQualityLvl: { // minHeightForQualityLvl: {
// 360: 'standard', // 360: 'standard',
// 720: 'high' // 720: 'high',
// }, // },
// //
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas // // 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). // // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false // resizeDesktopForPresenter: false,
// }, // },
// Notification timeouts // Notification timeouts
// notificationTimeouts: { // notificationTimeouts: {
// short: 2500, // short: 2500,
// medium: 5000, // medium: 5000,
// long: 10000 // long: 10000,
// }, // },
// // Options for the recording limit notification. // // Options for the recording limit notification.
@ -436,7 +504,7 @@ var config = {
// appName: 'Unlimited recordings APP', // appName: 'Unlimited recordings APP',
// //
// // The URL of the app with unlimited recordings. // // 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). // Disables or enables RTX (RFC 4588) (defaults to false).
@ -536,12 +604,9 @@ var config = {
// Hides the email section under profile settings. // Hides the email section under profile settings.
// hideEmailInSettings: false, // 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 // When enabled the password used for locking a room is restricted to up to the number of digits specified
// roomPasswordNumberOfDigits: 10,
// default: roomPasswordNumberOfDigits: false, // default: roomPasswordNumberOfDigits: false,
// roomPasswordNumberOfDigits: 10,
// Message to show the users. Example: 'The service will be down for // Message to show the users. Example: 'The service will be down for
// maintenance at 01:00 AM GMT, // maintenance at 01:00 AM GMT,
@ -561,11 +626,11 @@ var config = {
// // either the jwt or the userInfo from the iframe api init object in order for this to have an effect. // // either the jwt or the userInfo from the iframe api init object in order for this to have an effect.
// hideDisplayName: false, // hideDisplayName: false,
// // List of buttons to hide from the extra join options dropdown. // // List of buttons to hide from the extra join options dropdown.
// hideExtraJoinButtons: ['no-audio', 'by-phone'] // hideExtraJoinButtons: ['no-audio', 'by-phone'],
// }, // },
// When 'true', the user cannot edit the display name. // When 'true', the user cannot edit the display name.
// (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.) // (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.)
// readOnlyName: false, // readOnlyName: false,
// If etherpad integration is enabled, setting this to true will // If etherpad integration is enabled, setting this to true will
@ -596,7 +661,7 @@ var config = {
// // Defaults to Gravatar. // // Defaults to Gravatar.
// baseUrl: 'https://www.gravatar.com/avatar/', // baseUrl: 'https://www.gravatar.com/avatar/',
// // True if Gravatar should be disabled. // // True if Gravatar should be disabled.
// disabled: false // disabled: false,
// }, // },
// App name to be displayed in the invitation email subject, as an alternative to // App name to be displayed in the invitation email subject, as an alternative to
@ -619,7 +684,7 @@ var config = {
// 'chat', // 'chat',
// 'closedcaptions', // 'closedcaptions',
// 'desktop', // 'desktop',
// 'dock-iframe' // 'dock-iframe',
// 'download', // 'download',
// 'embedmeeting', // 'embedmeeting',
// 'etherpad', // 'etherpad',
@ -633,6 +698,7 @@ var config = {
// 'linktosalesforce', // 'linktosalesforce',
// 'livestreaming', // 'livestreaming',
// 'microphone', // 'microphone',
// 'noisesuppression',
// 'participants-pane', // 'participants-pane',
// 'profile', // 'profile',
// 'raisehand', // 'raisehand',
@ -648,22 +714,21 @@ var config = {
// 'toggle-camera', // 'toggle-camera',
// 'undock-iframe', // 'undock-iframe',
// 'videoquality', // 'videoquality',
// '__end'
// ], // ],
// Holds values related to toolbar visibility control. // Holds values related to toolbar visibility control.
// toolbarConfig: { // toolbarConfig: {
// // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
// // The initial numer of miliseconds for the toolbar buttons to be visible on screen. // // The initial number of milliseconds for the toolbar buttons to be visible on screen.
// initialTimeout: 20000, // initialTimeout: 20000,
// // Moved from interfaceConfig.TOOLBAR_TIMEOUT // // Moved from interfaceConfig.TOOLBAR_TIMEOUT
// // Number of miliseconds for the toolbar buttons to be visible on screen. // // Number of milliseconds for the toolbar buttons to be visible on screen.
// timeout: 4000, // timeout: 4000,
// // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
// // Whether toolbar should be always visible or should hide after x miliseconds. // // Whether toolbar should be always visible or should hide after x milliseconds.
// alwaysVisible: false, // alwaysVisible: false,
// // Indicates whether the toolbar should still autohide when chat is open // // Indicates whether the toolbar should still autohide when chat is open
// autoHideWhileChatIsOpen: false // autoHideWhileChatIsOpen: false,
// }, // },
// Toolbar buttons which have their click/tap event exposed through the API on // Toolbar buttons which have their click/tap event exposed through the API on
@ -698,6 +763,7 @@ var config = {
// 'microphone', // 'microphone',
// 'mute-everyone', // 'mute-everyone',
// 'mute-video-everyone', // 'mute-video-everyone',
// 'noisesuppression',
// 'participants-pane', // 'participants-pane',
// 'profile', // 'profile',
// { // {
@ -719,8 +785,7 @@ var config = {
// { // {
// key: 'add-passcode', // key: 'add-passcode',
// preventExecution: false // preventExecution: false
// } // },
// '__end'
// ], // ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons: // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:
@ -743,6 +808,7 @@ var config = {
// Application ID and Secret. // Application ID and Secret.
// callStatsID: '', // callStatsID: '',
// callStatsSecret: '', // callStatsSecret: '',
// callStatsApplicationLogsDisabled: false,
// The callstats initialize config params as described in the API: // The callstats initialize config params as described in the API:
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
@ -760,10 +826,10 @@ var config = {
// pbxID: "PBX Identifier. Example, walmart.", // pbxID: "PBX Identifier. Example, walmart.",
// pbxExtensionID: "PBX Extension Identifier. Example, 5625.", // pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
// fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.", // fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
// sessionID: "Session Identifier. Example, session-12-34" // sessionID: "Session Identifier. Example, session-12-34",
// }, // },
// collectLegacyStats: true, //enables the collection of legacy stats in chrome browser // collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
// collectIP: true //enables the collection localIP address // collectIP: true, //enables the collection localIP address
// }, // },
// Enables sending participants' display names to callstats // Enables sending participants' display names to callstats
@ -782,14 +848,14 @@ var config = {
// // Enables displaying face expressions in speaker stats // // Enables displaying face expressions in speaker stats
// enableDisplayFaceExpressions: false, // enableDisplayFaceExpressions: false,
// // Enable rtc stats for face landmarks
// enableRTCStats: false,
// // Minimum required face movement percentage threshold for sending new face centering coordinates data. // // Minimum required face movement percentage threshold for sending new face centering coordinates data.
// faceCenteringThreshold: 10, // faceCenteringThreshold: 10,
// // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist.
// captureInterval: 1000, // captureInterval: 1000,
// // Maximum number of faces that can be detected from a video track.
// maxFacesDetected: 4
// }, // },
// Controls the percentage of automatic feedback shown to participants when callstats is enabled. // Controls the percentage of automatic feedback shown to participants when callstats is enabled.
@ -851,8 +917,8 @@ var config = {
stunServers: [ stunServers: [
// { urls: 'stun:__DOMAIN__:3478' }, // { urls: 'stun:__DOMAIN__:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' } { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' },
] ],
}, },
analytics: { analytics: {
@ -860,14 +926,18 @@ var config = {
// disabled: false, // disabled: false,
// The Google Analytics Tracking ID: // The Google Analytics Tracking ID:
// googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1' // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1',
// Matomo configuration: // Matomo configuration:
// matomoEndpoint: 'https://your-matomo-endpoint/', // matomoEndpoint: 'https://your-matomo-endpoint/',
// matomoSiteID: '42', // matomoSiteID: '42',
// The Amplitude APP Key: // The Amplitude APP Key:
// amplitudeAPPKey: '<APP_KEY>' // amplitudeAPPKey: '<APP_KEY>',
// Obfuscates room name sent to analytics (amplitude, rtcstats)
// Default value is false.
// obfuscateRoomName: false,
// Configuration for the rtcstats server: // Configuration for the rtcstats server:
// By enabling rtcstats server every time a conference is joined the rtcstats // By enabling rtcstats server every time a conference is joined the rtcstats
@ -875,19 +945,24 @@ var config = {
// PeerConnection states along with getStats metrics polled at the specified // PeerConnection states along with getStats metrics polled at the specified
// interval. // interval.
// rtcstatsEnabled: false, // rtcstatsEnabled: false,
// rtcstatsStoreLogs: false,
// In order to enable rtcstats one needs to provide a endpoint url. // In order to enable rtcstats one needs to provide a endpoint url.
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
// The interval at which rtcstats will poll getStats, defaults to 1000ms. // The interval at which rtcstats will poll getStats, defaults to 10000ms.
// If the value is set to 0 getStats won't be polled and the rtcstats client // If the value is set to 0 getStats won't be polled and the rtcstats client
// will only send data related to RTCPeerConnection events. // will only send data related to RTCPeerConnection events.
// rtcstatsPolIInterval: 1000, // rtcstatsPollInterval: 10000,
// This determines if rtcstats sends the SDP to the rtcstats server or replaces
// all SDPs with an empty string instead.
// rtcstatsSendSdp: false,
// Array of script URLs to load as lib-jitsi-meet "analytics handlers". // Array of script URLs to load as lib-jitsi-meet "analytics handlers".
// scriptURLs: [ // scriptURLs: [
// "libs/analytics-ga.min.js", // google-analytics // "libs/analytics-ga.min.js", // google-analytics
// "https://example.com/my-custom-analytics.js" // "https://example.com/my-custom-analytics.js",
// ], // ],
}, },
@ -896,11 +971,11 @@ var config = {
// Information about the jitsi-meet instance we are connecting to, including // Information about the jitsi-meet instance we are connecting to, including
// the user region as seen by the server. // the user region as seen by the server.
deploymentInfo: { // deploymentInfo: {
// shard: "shard1", // shard: "shard1",
// region: "europe", // region: "europe",
// userRegion: "asia" // userRegion: "asia",
}, // },
// Array<string> of disabled sounds. // Array<string> of disabled sounds.
// Possible values: // Possible values:
@ -943,19 +1018,25 @@ var config = {
// chromeExtensionBanner: { // chromeExtensionBanner: {
// // The chrome extension to be installed address // // The chrome extension to be installed address
// url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', // 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 // // Extensions info which allows checking if they are installed or not
// chromeExtensionsInfo: [ // chromeExtensionsInfo: [
// { // {
// id: 'kglhbbefdnlheedjiejgomgmfplipfeb', // id: 'kglhbbefdnlheedjiejgomgmfplipfeb',
// path: 'jitsi-logo-48x48.png' // path: 'jitsi-logo-48x48.png',
// } // },
// // Edge extension info
// {
// id: 'eeecajlpbgjppibfledfihobcabccihn',
// path: 'jitsi-logo-48x48.png',
// },
// ] // ]
// }, // },
// e2ee: { // e2ee: {
// labels, // labels,
// externallyManagedKey: false // externallyManagedKey: false,
// }, // },
// Options related to end-to-end (participant to participant) ping. // Options related to end-to-end (participant to participant) ping.
@ -970,9 +1051,9 @@ var config = {
// maxConferenceSize: 200, // maxConferenceSize: 200,
// //
// // The maximum number of e2e ping messages per second for the whole conference to aim for. // // The maximum number of e2e ping messages per second for the whole conference to aim for.
// // This is used to contol the pacing of messages in order to reduce the load on the backend. // // This is used to control the pacing of messages in order to reduce the load on the backend.
// maxMessagesPerSecond: 250 // maxMessagesPerSecond: 250,
// }, // },
// If set, will attempt to use the provided video input device label when // If set, will attempt to use the provided video input device label when
// triggering a screenshare, instead of proceeding through the normal flow // triggering a screenshare, instead of proceeding through the normal flow
@ -1009,7 +1090,7 @@ var config = {
// userDocumentationURL: 'https://docs.example.com/video-meetings.html', // 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 // // 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. // // 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. // Options related to the remote participant menu.
@ -1021,7 +1102,7 @@ var config = {
// // If set to true the 'Grant moderator' button will be disabled. // // If set to true the 'Grant moderator' button will be disabled.
// disableGrantModerator: true, // disableGrantModerator: true,
// // If set to true the 'Send private message' button will be disabled. // // If set to true the 'Send private message' button will be disabled.
// disablePrivateChat: true // disablePrivateChat: true,
// }, // },
// Endpoint that enables support for salesforce integration with in-meeting resource linking // Endpoint that enables support for salesforce integration with in-meeting resource linking
@ -1037,7 +1118,7 @@ var config = {
// disableRemoteMute: true, // disableRemoteMute: true,
// Enables support for lip-sync for this client (if the browser supports it). // 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. External API url used to receive branding specific information.
@ -1066,7 +1147,7 @@ var config = {
// For a list of all possible theme tokens and their current defaults, please check: // 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 // 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: // For a short explanations on each of the tokens, please check:
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.js // 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 // IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code
// or they are partially applied. // or they are partially applied.
customTheme: { customTheme: {
@ -1080,15 +1161,15 @@ var config = {
field02Hover: 'red', field02Hover: 'red',
action01: 'green', action01: 'green',
action01Hover: 'lightgreen', action01Hover: 'lightgreen',
action02Disabled: 'beige', disabled01: 'beige',
success02: 'cadetblue', success02: 'cadetblue',
action02Hover: 'aliceblue' action02Hover: 'aliceblue',
}, },
typography: { typography: {
labelRegular: { labelRegular: {
fontSize: 25, fontSize: 25,
lineHeight: 30, lineHeight: 30,
fontWeight: 500 fontWeight: 500,
} }
} }
} }
@ -1103,7 +1184,7 @@ var config = {
// // Hides the more actions button. // // Hides the more actions button.
// hideMoreActionsButton: false, // hideMoreActionsButton: false,
// // Hides the mute all button. // // Hides the mute all button.
// hideMuteAllButton: false // hideMuteAllButton: false,
// }, // },
// Options related to the breakout rooms feature. // Options related to the breakout rooms feature.
@ -1113,7 +1194,7 @@ var config = {
// // Hides the auto assign participants button. // // Hides the auto assign participants button.
// hideAutoAssignButton: false, // hideAutoAssignButton: false,
// // Hides the join breakout room button. // // Hides the join breakout room button.
// hideJoinRoomButton: false // hideJoinRoomButton: false,
// }, // },
// When true the user cannot add more images to be used as virtual background. // When true the user cannot add more images to be used as virtual background.
@ -1152,7 +1233,8 @@ var config = {
// 'transcribing', // 'transcribing',
// 'video-quality', // 'video-quality',
// 'insecure-room', // 'insecure-room',
// 'highlight-moment' // 'highlight-moment',
// 'top-panel-toggle',
// ] // ]
// }, // },
@ -1179,9 +1261,8 @@ var config = {
// is not persisting the local storage inside the iframe. // is not persisting the local storage inside the iframe.
// useHostPageLocalStorage: true, // useHostPageLocalStorage: true,
// etherpad ("shared document") integration. // Etherpad ("shared document") integration.
// //
// If set, add a "Open shared document" link to the bottom right menu that // If set, add a "Open shared document" link to the bottom right menu that
// will open an etherpad document. // will open an etherpad document.
// etherpad_base: 'https://your-etherpad-installati.on/p/', // etherpad_base: 'https://your-etherpad-installati.on/p/',
@ -1192,11 +1273,6 @@ var config = {
// {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"} // {"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 // 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) // or the other way around (more info in resources/cloud-api.swagger)
//
// For JaaS customers the default values are:
// dialInNumbersUrl: 'https://conference-mapper.jitsi.net/v1/access/dids',
// dialInConfCodeUrl: 'https://conference-mapper.jitsi.net/v1/access',
//
// List of undocumented settings used in jitsi-meet // List of undocumented settings used in jitsi-meet
/** /**
@ -1297,6 +1373,7 @@ var config = {
// 'notify.leftTwoMembers', // show when two participants left simultaneously // 'notify.leftTwoMembers', // show when two participants left simultaneously
// 'notify.leftThreePlusMembers', // show when more than 2 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.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.invitedOneMember', // shown when 1 participant has been invited
// 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited
// 'notify.invitedTwoMembers', // shown when 2 participants have been invited // 'notify.invitedTwoMembers', // shown when 2 participants have been invited
@ -1317,7 +1394,7 @@ var config = {
// 'notify.raisedHand', // shown when a partcipant used raise hand, // 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio // 'notify.startSilentTitle', // shown when user joined with no audio
// 'notify.unmute', // shown to moderator when user raises hand during AV moderation // 'notify.unmute', // shown to moderator when user raises hand during AV moderation
// 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute // 'notify.videoMutedRemotelyTitle', // shown when user's video is muted by a remote party,
// 'prejoin.errorDialOut', // 'prejoin.errorDialOut',
// 'prejoin.errorDialOutDisconnected', // 'prejoin.errorDialOutDisconnected',
// 'prejoin.errorDialOutFailed', // 'prejoin.errorDialOutFailed',
@ -1330,7 +1407,7 @@ var config = {
// 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected // 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected
// 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
// 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted // '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. // List of notifications to be disabled. Works in tandem with the above setting.
@ -1346,14 +1423,25 @@ var config = {
// // Disables the stage filmstrip // // Disables the stage filmstrip
// // (displaying multiple participants on stage besides the vertical filmstrip) // // (displaying multiple participants on stage besides the vertical filmstrip)
// disableStageFilmstrip: false // 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. // Tile view related config options.
// tileView: { // tileView: {
// // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may // // 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. // // not be possible to show the exact number of participants specified here.
// numberOfVisibleTiles: 25 // numberOfVisibleTiles: 25,
// }, // },
// Specifies whether the chat emoticons are disabled or not // Specifies whether the chat emoticons are disabled or not
@ -1370,15 +1458,42 @@ var config = {
// // - chat: show the GIF as a message in chat // // - chat: show the GIF as a message in chat
// // - all: all of the above. This is the default option // // - all: all of the above. This is the default option
// displayMode: 'all', // displayMode: 'all',
// // How long the GIF should be displayed on the tile (in miliseconds). // // How long the GIF should be displayed on the tile (in milliseconds).
// tileTime: 5000 // tileTime: 5000,
// }, // },
// Allow all above example options to include a trailing comma and // Logging
// prevent fear when commenting out the last value. // logging: {
makeJsonParserHappy: 'even if last key had a trailing comma' // // 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',
// },
// no configuration value should follow this line. // 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',
// },
}; };
// 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 */ /* eslint-enable no-unused-vars, no-var */

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://download.jitsi.org/stable/jitsi-meet-prosody_1.0.6155-1_all.deb SOURCE_URL=https://download.jitsi.org/stable/jitsi-meet-prosody_1.0.6644-1_all.deb
SOURCE_SUM=2503d45b9cb92d46c43c211ca3d9c3904fd9045062ac121237b0ed7695e5c727 SOURCE_SUM=e358e572c26970594d74120e01dcd3505df039400e4bdba917fbb115068650b7
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=deb SOURCE_FORMAT=deb
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://download.jitsi.org/stable/jitsi-meet-web_1.0.6155-1_all.deb SOURCE_URL=https://download.jitsi.org/stable/jitsi-meet-web_1.0.6644-1_all.deb
SOURCE_SUM=3ef7e8be35efc76db7bc4f577de136f48cae0900cf2646418909449d721fcace SOURCE_SUM=69e756970092b3e88336779e344aa6b888048e945103cc3acdca5e7b33c24a40
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=deb SOURCE_FORMAT=deb
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/jitsi/jitsi-sctp/archive/04269a7342fbd3bd66dd40ed892cfc80559d62d4.tar.gz SOURCE_URL=https://github.com/jitsi/jitsi-sctp/archive/45bf9f296167f79a52cdc1b0e93bbfa4dc8c4976.tar.gz
SOURCE_SUM=2aa4f596e96186d43f4beb3e9db9907d23b993d974e15dd051031f4d00423bf2 SOURCE_SUM=1eead17b10d059bafe8e1b06a8351936b608e7514b131588deac61d24b859397
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://download.jitsi.org/stable/jitsi-videobridge2_2.1-681-g3544ed05-1_all.deb SOURCE_URL=https://download.jitsi.org/stable/jitsi-videobridge2_2.2-45-ge8b20f06-1_all.deb
SOURCE_SUM=f3a973b7d4a767a969a3bcfa3d0bd531945d349d3378350ff76c2b6e747415b1 SOURCE_SUM=7db4a98cb771f716cb769eefcc74d6f41fdc0dfdc36a1a70b88e0872a12aa5ab
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=deb SOURCE_FORMAT=deb
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/sctplab/usrsctp/archive/c138bc04bbb20b34fc10fd50e34c1723c40896c4.tar.gz SOURCE_URL=https://github.com/sctplab/usrsctp/archive/8e12cd9e01fc94d2e84ea1afa351c845966e116e.tar.gz
SOURCE_SUM=ff4808da7c4bbd886feeb03a74eee1cb235a7d4c9a20c16a37581fe10d55dd4b SOURCE_SUM=0574a31fecca543cf8e46c1bff441a3048ccf7d403da0543639db334e9a09b2f
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -6,7 +6,7 @@
"en": "Video conferencing web application", "en": "Video conferencing web application",
"fr": "Application web de conférence vidéo" "fr": "Application web de conférence vidéo"
}, },
"version": "1.0.6155~ynh2", "version": "2.0.7882~ynh1",
"url": "https://jitsi.org/Projects/JitMeet", "url": "https://jitsi.org/Projects/JitMeet",
"upstream": { "upstream": {
"license": "Apache-2.0", "license": "Apache-2.0",
@ -27,7 +27,7 @@
} }
], ],
"requirements": { "requirements": {
"yunohost": ">= 4.3.0" "yunohost": ">= 11.0.8"
}, },
"multi_instance": false, "multi_instance": false,
"services": [ "services": [
@ -41,4 +41,4 @@
} }
] ]
} }
} }

View file

@ -67,7 +67,6 @@ ynh_jniwrapper_armhf ()
ynh_secure_remove --file="$tempdir" ynh_secure_remove --file="$tempdir"
} }
#================================================= #=================================================
# EXPERIMENTAL HELPERS # EXPERIMENTAL HELPERS
#================================================= #=================================================

View file

@ -23,7 +23,7 @@ ynh_abort_if_errors
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_print_info --message="Loading installation settings..." ynh_print_info --message="Loading settings..."
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME

View file

@ -7,7 +7,6 @@
#================================================= #=================================================
source _common.sh source _common.sh
source ynh_apps
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#================================================= #=================================================
@ -15,7 +14,7 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
ynh_clean_setup () { ynh_clean_setup () {
ynh_clean_check_starting true
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -48,7 +47,7 @@ max_memory=200 #125 mib with no user +1,5*50 users=75 mib
#================================================= #=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#================================================= #=================================================
ynh_script_progression --message="Validating installation parameters..." ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/var/www/$app final_path=/var/www/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder" test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
@ -59,7 +58,7 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#================================================= #=================================================
# STORE SETTINGS FROM MANIFEST # STORE SETTINGS FROM MANIFEST
#================================================= #=================================================
ynh_script_progression --message="Storing installation settings..." ynh_script_progression --message="Storing installation settings..." --weight=1
ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_set --app=$app --key=path --value=$path_url
@ -76,7 +75,7 @@ ynh_app_setting_set --app=$app --key=turn_secret --value=$turn_secret
#================================================= #=================================================
# FIND AND OPEN A PORT # FIND AND OPEN A PORT
#================================================= #=================================================
ynh_script_progression --message="Finding an available port..." ynh_script_progression --message="Finding an available port..." --weight=1
# Find an available port # Find an available port
port=4443 port=4443
@ -97,7 +96,7 @@ ynh_app_setting_set --app=$app --key=port_component --value=$port_component
#================================================= #=================================================
# INSTALL DEPENDENCIES # INSTALL DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Installing dependencies..." ynh_script_progression --message="Installing dependencies..." --weight=1
ynh_install_apps --apps="$ynh_app_dependencies" ynh_install_apps --apps="$ynh_app_dependencies"
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
@ -111,7 +110,7 @@ fi
#================================================= #=================================================
# CREATE DEDICATED USER # CREATE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Configuring system user..." ynh_script_progression --message="Configuring system user..." --weight=1
# Create a system user # Create a system user
ynh_system_user_create --username=$app --home_dir="$final_path" ynh_system_user_create --username=$app --home_dir="$final_path"
@ -121,7 +120,7 @@ gpasswd --add www-data $app
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#================================================= #=================================================
ynh_script_progression --message="Setting up source files..." ynh_script_progression --message="Setting up source files..." --weight=1
ynh_app_setting_set --app=$app --key=final_path --value=$final_path ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
@ -152,7 +151,7 @@ chown -R $app:$app "$final_path"
#================================================= #=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Configuring NGINX web server..." ynh_script_progression --message="Configuring NGINX web server..." --weight=1
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
@ -162,7 +161,7 @@ ynh_add_nginx_config
#================================================= #=================================================
# CONFIGURE PROSODY # CONFIGURE PROSODY
#================================================= #=================================================
ynh_script_progression --message="Configuring prosody..." ynh_script_progression --message="Configuring prosody..." --weight=1
ynh_add_config --template="../conf/prosody.cfg.lua" --destination="/etc/prosody/conf.avail/$domain.cfg.lua" ynh_add_config --template="../conf/prosody.cfg.lua" --destination="/etc/prosody/conf.avail/$domain.cfg.lua"
chmod 644 "/etc/prosody/conf.avail/$domain.cfg.lua" chmod 644 "/etc/prosody/conf.avail/$domain.cfg.lua"
@ -191,7 +190,7 @@ prosodyctl mod_roster_command subscribe $focus_user.$domain $focus_user@auth.$do
#================================================= #=================================================
# CONFIGURE JITSI-VIDEOBRIDGE # CONFIGURE JITSI-VIDEOBRIDGE
#================================================= #=================================================
ynh_script_progression --message="Configuring Jitsi-Videobridge..." ynh_script_progression --message="Configuring Jitsi-Videobridge..." --weight=1
public_ipv4="$(curl ip.yunohost.org)" || true public_ipv4="$(curl ip.yunohost.org)" || true
private_ipv4="$(ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p')" || true private_ipv4="$(ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p')" || true
@ -217,7 +216,7 @@ ynh_add_config --template="../conf/jitsi-videobridge.config" --destination="/etc
if [ $YNH_ARCH == "armhf" ] if [ $YNH_ARCH == "armhf" ]
then then
ynh_script_progression --message="Configuring jniwrapper for armhf ..." ynh_script_progression --message="Configuring jniwrapper for armhf ..." --weight=1
ynh_jniwrapper_armhf ynh_jniwrapper_armhf
fi fi
@ -225,7 +224,7 @@ fi
#================================================= #=================================================
# CONFIGURE JITSI-JICOFO # CONFIGURE JITSI-JICOFO
#================================================= #=================================================
ynh_script_progression --message="Configuring Jitsi-Jicofo..." ynh_script_progression --message="Configuring Jitsi-Jicofo..." --weight=1
mkdir -p "/etc/$app/jicofo" mkdir -p "/etc/$app/jicofo"
@ -238,7 +237,7 @@ ynh_add_config --template="../conf/jitsi-jicofo-logging.properties" --destinatio
#================================================= #=================================================
# CONFIGURE JITSI-MEET # CONFIGURE JITSI-MEET
#================================================= #=================================================
ynh_script_progression --message="Configuring Jitsi-Meet..." ynh_script_progression --message="Configuring Jitsi-Meet..." --weight=1
mkdir -p "/etc/$app/meet" mkdir -p "/etc/$app/meet"
@ -248,7 +247,7 @@ chmod 644 "/etc/$app/meet/$domain-config.js"
#================================================= #=================================================
# CREATE LOG DIR # CREATE LOG DIR
#================================================= #=================================================
ynh_script_progression --message="Creating log dir..." ynh_script_progression --message="Creating log dir..." --weight=1
mkdir -p "/var/log/$app" mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R $app: /var/log/$app
@ -257,7 +256,7 @@ chmod -R 770 /var/log/$app
#================================================= #=================================================
# SECURE FILES AND DIRECTORIES # SECURE FILES AND DIRECTORIES
#================================================= #=================================================
ynh_script_progression --message="Securing files and directories..." ynh_script_progression --message="Securing files and directories..." --weight=1
# Set permissions to app files # Set permissions to app files
chown -R $app: /etc/$app chown -R $app: /etc/$app
@ -265,7 +264,7 @@ chown -R $app: /etc/$app
#================================================= #=================================================
# SETUP SYSTEMD # SETUP SYSTEMD
#================================================= #=================================================
ynh_script_progression --message="Configuring a systemd service..." ynh_script_progression --message="Configuring a systemd service..." --weight=1
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config --service=$app-videobridge --template="jitsi-videobridge.service" ynh_add_systemd_config --service=$app-videobridge --template="jitsi-videobridge.service"
@ -276,7 +275,7 @@ ynh_add_systemd_config --service=$app-jicofo --template="jitsi-jicofo.service"
#================================================= #=================================================
# SETUP LOGROTATE # SETUP LOGROTATE
#================================================= #=================================================
ynh_script_progression --message="Configuring log rotation..." ynh_script_progression --message="Configuring log rotation..." --weight=1
# Use logrotate to manage application logfile(s) # Use logrotate to manage application logfile(s)
ynh_use_logrotate ynh_use_logrotate
@ -284,7 +283,7 @@ ynh_use_logrotate
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrating service in YunoHost..." ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge
yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log" yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
@ -292,7 +291,7 @@ yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." ynh_script_progression --message="Starting a systemd service..." --weight=1
# Start a systemd service # Start a systemd service
ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log" ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log"
@ -301,7 +300,7 @@ ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="
#================================================= #=================================================
# SETUP SSOWAT # SETUP SSOWAT
#================================================= #=================================================
ynh_script_progression --message="Configuring permissions..." ynh_script_progression --message="Configuring permissions..." --weight=1
# Make app public # Make app public
ynh_permission_update --permission="main" --add="visitors" ynh_permission_update --permission="main" --add="visitors"
@ -309,7 +308,7 @@ ynh_permission_update --permission="main" --add="visitors"
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading NGINX web server..." ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
@ -317,4 +316,4 @@ ynh_systemd_action --service_name=nginx --action=reload
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Installation of $app completed" ynh_script_progression --message="Installation of $app completed" --last

View file

@ -7,13 +7,12 @@
#================================================= #=================================================
source _common.sh source _common.sh
source ynh_apps
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
@ -34,20 +33,20 @@ videobridge_user=$(ynh_app_setting_get --app=$app --key=videobridge_user)
# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) # Remove the service from the list of services known by YunoHost (added from `yunohost service add`)
if ynh_exec_warn_less yunohost service status $app-videobridge >/dev/null if ynh_exec_warn_less yunohost service status $app-videobridge >/dev/null
then then
ynh_script_progression --message="Removing $app-videobridge service..." ynh_script_progression --message="Removing $app-videobridge service..." --weight=1
yunohost service remove $app-videobridge yunohost service remove $app-videobridge
fi fi
if ynh_exec_warn_less yunohost service status $app-jicofo >/dev/null if ynh_exec_warn_less yunohost service status $app-jicofo >/dev/null
then then
ynh_script_progression --message="Removing $app-jicofo service..." ynh_script_progression --message="Removing $app-jicofo service..." --weight=1
yunohost service remove $app-jicofo yunohost service remove $app-jicofo
fi fi
#================================================= #=================================================
# STOP AND REMOVE SERVICE # STOP AND REMOVE SERVICE
#================================================= #=================================================
ynh_script_progression --message="Stopping and removing the systemd service..." ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
# Remove the dedicated systemd config # Remove the dedicated systemd config
ynh_remove_systemd_config --service=$app-videobridge ynh_remove_systemd_config --service=$app-videobridge
@ -56,7 +55,7 @@ ynh_remove_systemd_config --service=$app-jicofo
#================================================= #=================================================
# REMOVE LOGROTATE CONFIGURATION # REMOVE LOGROTATE CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Removing logrotate configuration..." ynh_script_progression --message="Removing logrotate configuration..." --weight=1
# Remove the app-specific logrotate config # Remove the app-specific logrotate config
ynh_remove_logrotate ynh_remove_logrotate
@ -64,7 +63,7 @@ ynh_remove_logrotate
#================================================= #=================================================
# RECONFIGURE PROSODY # RECONFIGURE PROSODY
#================================================= #=================================================
ynh_script_progression --message="Reconfiguring Prosody..." ynh_script_progression --message="Reconfiguring Prosody..." --weight=1
prosodyctl deluser $focus_user@auth.$domain || true prosodyctl deluser $focus_user@auth.$domain || true
prosodyctl deluser $videobridge_user@auth.$domain || true prosodyctl deluser $videobridge_user@auth.$domain || true
@ -91,7 +90,7 @@ ynh_systemd_action --service_name=prosody --action=restart
#================================================= #=================================================
# REMOVE APP MAIN DIR # REMOVE APP MAIN DIR
#================================================= #=================================================
ynh_script_progression --message="Removing app main directory..." ynh_script_progression --message="Removing app main directory..." --weight=1
# Remove the app directory securely # Remove the app directory securely
ynh_secure_remove --file="$final_path" ynh_secure_remove --file="$final_path"
@ -99,7 +98,7 @@ ynh_secure_remove --file="$final_path"
#================================================= #=================================================
# REMOVE NGINX CONFIGURATION # REMOVE NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Removing NGINX web server configuration..." ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
# Remove the dedicated NGINX config # Remove the dedicated NGINX config
ynh_remove_nginx_config ynh_remove_nginx_config
@ -107,7 +106,7 @@ ynh_remove_nginx_config
#================================================= #=================================================
# REMOVE DEPENDENCIES # REMOVE DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Removing dependencies..." ynh_script_progression --message="Removing dependencies..." --weight=1
# Remove metapackage and its dependencies # Remove metapackage and its dependencies
ynh_remove_app_dependencies ynh_remove_app_dependencies
@ -124,13 +123,13 @@ ynh_remove_apps
if yunohost firewall list | grep -q "\- $port$" if yunohost firewall list | grep -q "\- $port$"
then then
ynh_script_progression --message="Closing port $port..." ynh_script_progression --message="Closing port $port..." --weight=1
ynh_exec_warn_less yunohost firewall disallow TCP $port ynh_exec_warn_less yunohost firewall disallow TCP $port
fi fi
if yunohost firewall list | grep -q "\- $port_videobridge$" if yunohost firewall list | grep -q "\- $port_videobridge$"
then then
ynh_script_progression --message="Closing port $port_videobridge..." ynh_script_progression --message="Closing port $port_videobridge..." --weight=1
ynh_exec_warn_less yunohost firewall disallow UDP $port_videobridge ynh_exec_warn_less yunohost firewall disallow UDP $port_videobridge
fi fi
@ -139,7 +138,7 @@ fi
#================================================= #=================================================
# REMOVE VARIOUS FILES # REMOVE VARIOUS FILES
#================================================= #=================================================
ynh_script_progression --message="Removing various files..." ynh_script_progression --message="Removing various files..." --weight=1
# Remove a directory securely # Remove a directory securely
ynh_secure_remove --file="/etc/$app" ynh_secure_remove --file="/etc/$app"
@ -152,7 +151,7 @@ ynh_secure_remove --file="/var/log/$app"
#================================================= #=================================================
# REMOVE DEDICATED USER # REMOVE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Removing the dedicated system user..." ynh_script_progression --message="Removing the dedicated system user..." --weight=1
gpasswd --delete www-data $app gpasswd --delete www-data $app
# Delete a system user # Delete a system user
@ -162,4 +161,4 @@ ynh_system_user_delete --username=$app
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Removal of $app completed" ynh_script_progression --message="Removal of $app completed" --last

View file

@ -8,7 +8,6 @@
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source ../settings/scripts/ynh_apps
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#================================================= #=================================================
@ -16,7 +15,7 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
ynh_clean_setup () { ynh_clean_setup () {
ynh_clean_check_starting true
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -24,7 +23,7 @@ ynh_abort_if_errors
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
@ -46,7 +45,7 @@ port_component=$(ynh_app_setting_get --app=$app --key=port_component)
#================================================= #=================================================
# CHECK IF THE APP CAN BE RESTORED # CHECK IF THE APP CAN BE RESTORED
#================================================= #=================================================
ynh_script_progression --message="Validating restoration parameters..." ynh_script_progression --message="Validating restoration parameters..." --weight=1
test ! -d $final_path \ test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path " || ynh_die --message="There is already a directory: $final_path "
@ -56,7 +55,7 @@ test ! -d $final_path \
#================================================= #=================================================
# RECREATE THE DEDICATED USER # RECREATE THE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Recreating the dedicated system user..." ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
# Create the dedicated user (if not existing) # Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path" ynh_system_user_create --username=$app --home_dir="$final_path"
@ -65,7 +64,7 @@ gpasswd --add www-data $app
#================================================= #=================================================
# RESTORE THE APP MAIN DIR # RESTORE THE APP MAIN DIR
#================================================= #=================================================
ynh_script_progression --message="Restoring the app main directory..." ynh_script_progression --message="Restoring the app main directory..." --weight=1
ynh_restore_file --origin_path="$final_path" ynh_restore_file --origin_path="$final_path"
@ -78,7 +77,7 @@ chown -R $app:$app "$final_path"
#================================================= #=================================================
# REINSTALL DEPENDENCIES # REINSTALL DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Reinstalling dependencies..." ynh_script_progression --message="Reinstalling dependencies..." --weight=1
# Define and install dependencies # Define and install dependencies
ynh_install_apps --apps="$ynh_app_dependencies" ynh_install_apps --apps="$ynh_app_dependencies"
@ -86,7 +85,7 @@ ynh_install_app_dependencies $pkg_dependencies
if [ $YNH_ARCH == "armhf" ] if [ $YNH_ARCH == "armhf" ]
then then
ynh_script_progression --message="Installing specific arm dependencies..." ynh_script_progression --message="Installing specific arm dependencies..." --weight=1
ynh_install_extra_app_dependencies --repo="deb http://security.debian.org/debian-security stretch/updates main" --package="$pkg_extra_depedencies_arm" --key="https://ftp-master.debian.org/keys/archive-key-9-security.asc" ynh_install_extra_app_dependencies --repo="deb http://security.debian.org/debian-security stretch/updates main" --package="$pkg_extra_depedencies_arm" --key="https://ftp-master.debian.org/keys/archive-key-9-security.asc"
fi fi
@ -95,14 +94,14 @@ gpasswd --add prosody $app
#================================================= #=================================================
# RESTORE THE NGINX CONFIGURATION # RESTORE THE NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Restoring the NGINX web server configuration..." ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# CONFIGURE FIREWALL # CONFIGURE FIREWALL
#================================================= #=================================================
ynh_script_progression --message="Configuring firewall..." ynh_script_progression --message="Configuring firewall..." --weight=1
# Open this port # Open this port
ynh_exec_warn_less yunohost firewall allow TCP $port ynh_exec_warn_less yunohost firewall allow TCP $port
@ -111,7 +110,7 @@ ynh_exec_warn_less yunohost firewall allow UDP $port_videobridge
#================================================= #=================================================
# CONFIGURE PROSODY # CONFIGURE PROSODY
#================================================= #=================================================
ynh_script_progression --message="Configuring prosody..." ynh_script_progression --message="Configuring prosody..." --weight=1
ynh_restore_file --origin_path="/etc/prosody/conf.avail/$domain.cfg.lua" ynh_restore_file --origin_path="/etc/prosody/conf.avail/$domain.cfg.lua"
chmod 644 "/etc/prosody/conf.avail/$domain.cfg.lua" chmod 644 "/etc/prosody/conf.avail/$domain.cfg.lua"
@ -137,7 +136,7 @@ prosodyctl mod_roster_command subscribe $focus_user.$domain $focus_user@auth.$do
#================================================= #=================================================
# RESTORE THE APP CONFIG # RESTORE THE APP CONFIG
#================================================= #=================================================
ynh_script_progression --message="Restoring the app config..." ynh_script_progression --message="Restoring the app config..." --weight=1
ynh_restore_file --origin_path="/etc/$app" ynh_restore_file --origin_path="/etc/$app"
@ -146,7 +145,7 @@ chmod 644 "/etc/$app/meet/$domain-config.js"
#================================================= #=================================================
# CREATE LOG DIR # CREATE LOG DIR
#================================================= #=================================================
ynh_script_progression --message="Creating log dir..." ynh_script_progression --message="Creating log dir..." --weight=1
mkdir -p "/var/log/$app" mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R $app: /var/log/$app
@ -154,7 +153,7 @@ chown -R $app: /var/log/$app
#================================================= #=================================================
# RESTORE SYSTEMD # RESTORE SYSTEMD
#================================================= #=================================================
ynh_script_progression --message="Restoring the systemd configuration..." ynh_script_progression --message="Restoring the systemd configuration..." --weight=1
ynh_restore_file --origin_path="/etc/systemd/system/$app-videobridge.service" ynh_restore_file --origin_path="/etc/systemd/system/$app-videobridge.service"
systemctl enable $app-videobridge.service --quiet systemctl enable $app-videobridge.service --quiet
@ -164,14 +163,14 @@ systemctl enable $app-jicofo.service --quiet
#================================================= #=================================================
# RESTORE THE LOGROTATE CONFIGURATION # RESTORE THE LOGROTATE CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Restoring the logrotate configuration..." ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
ynh_restore_file --origin_path="/etc/logrotate.d/$app" ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrating service in YunoHost..." ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge
yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log" yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
@ -179,7 +178,7 @@ yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log" ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log"
ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="/var/log/$app/$app-videobridge.log" ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="/var/log/$app/$app-videobridge.log"
@ -189,7 +188,7 @@ ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="
#================================================= #=================================================
# RELOAD NGINX AND PHP-FPM # RELOAD NGINX AND PHP-FPM
#================================================= #=================================================
ynh_script_progression --message="Reloading NGINX web server..." ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
@ -197,4 +196,4 @@ ynh_systemd_action --service_name=nginx --action=reload
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Restoration completed for $app" ynh_script_progression --message="Restoration completed for $app" --last

View file

@ -7,13 +7,12 @@
#================================================= #=================================================
source _common.sh source _common.sh
source ynh_apps
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
@ -40,7 +39,7 @@ port_component=$(ynh_app_setting_get --app=$app --key=port_component)
#================================================= #=================================================
# CHECK VERSION # CHECK VERSION
#================================================= #=================================================
ynh_script_progression --message="Checking version..." ynh_script_progression --message="Checking version..." --weight=1
upgrade_type=$(ynh_check_app_version_changed) upgrade_type=$(ynh_check_app_version_changed)
current_version=$(ynh_read_manifest --manifest="/etc/yunohost/apps/$app/manifest.json" --manifest_key="version" || echo 1.0) current_version=$(ynh_read_manifest --manifest="/etc/yunohost/apps/$app/manifest.json" --manifest_key="version" || echo 1.0)
@ -53,7 +52,6 @@ ynh_script_progression --message="Backing up the app before upgrading (may take
# Backup the current version of the app # Backup the current version of the app
ynh_backup_before_upgrade ynh_backup_before_upgrade
ynh_clean_setup () { ynh_clean_setup () {
ynh_clean_check_starting
# Restore it if the upgrade fails # Restore it if the upgrade fails
ynh_restore_upgradebackup ynh_restore_upgradebackup
} }
@ -65,7 +63,7 @@ ynh_abort_if_errors
#================================================= #=================================================
# STOP SYSTEMD SERVICE # STOP SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Stopping a systemd service..." ynh_script_progression --message="Stopping a systemd service..." --weight=1
ynh_systemd_action --service_name=$app-videobridge --action="stop" --log_path="/var/log/$app/$app-videobridge.log" ynh_systemd_action --service_name=$app-videobridge --action="stop" --log_path="/var/log/$app/$app-videobridge.log"
ynh_systemd_action --service_name=$app-jicofo --action="stop" --log_path="/var/log/$app/$app-jicofo.log" ynh_systemd_action --service_name=$app-jicofo --action="stop" --log_path="/var/log/$app/$app-jicofo.log"
@ -73,7 +71,7 @@ ynh_systemd_action --service_name=$app-jicofo --action="stop" --log_path="/var/l
#================================================= #=================================================
# ENSURE DOWNWARD COMPATIBILITY # ENSURE DOWNWARD COMPATIBILITY
#================================================= #=================================================
ynh_script_progression --message="Ensuring downward compatibility..." ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
# If final_path doesn't exist, create it # If final_path doesn't exist, create it
if [ -z "$final_path" ]; then if [ -z "$final_path" ]; then
@ -90,7 +88,7 @@ fi
#================================================= #=================================================
# CREATE DEDICATED USER # CREATE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Making sure dedicated system user exists..." ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing) # Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path" ynh_system_user_create --username=$app --home_dir="$final_path"
@ -102,7 +100,7 @@ gpasswd --add www-data $app
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_script_progression --message="Upgrading source files..." ynh_script_progression --message="Upgrading source files..." --weight=1
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
declare -A packages declare -A packages
@ -134,14 +132,14 @@ chown -R $app:$app "$final_path"
#================================================= #=================================================
# UPGRADE DEPENDENCIES # UPGRADE DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Upgrading dependencies..." ynh_script_progression --message="Upgrading dependencies..." --weight=1
ynh_install_apps --apps="$ynh_app_dependencies" ynh_install_apps --apps="$ynh_app_dependencies"
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
if [ $YNH_ARCH == "armhf" ] if [ $YNH_ARCH == "armhf" ]
then then
ynh_script_progression --message="Installing specific arm dependencies..." ynh_script_progression --message="Installing specific arm dependencies..." --weight=1
ynh_install_extra_app_dependencies --repo="deb http://security.debian.org/debian-security stretch/updates main" --package="$pkg_extra_depedencies_arm" --key="https://ftp-master.debian.org/keys/archive-key-9-security.asc" ynh_install_extra_app_dependencies --repo="deb http://security.debian.org/debian-security stretch/updates main" --package="$pkg_extra_depedencies_arm" --key="https://ftp-master.debian.org/keys/archive-key-9-security.asc"
fi fi
@ -150,7 +148,7 @@ gpasswd --add prosody $app
#================================================= #=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Upgrading NGINX web server configuration..." ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
@ -160,7 +158,7 @@ ynh_add_nginx_config
#================================================= #=================================================
# CONFIGURE FIREWALL # CONFIGURE FIREWALL
#================================================= #=================================================
ynh_script_progression --message="Configuring firewall..." ynh_script_progression --message="Configuring firewall..." --weight=1
# Open this port # Open this port
ynh_exec_warn_less yunohost firewall allow TCP $port ynh_exec_warn_less yunohost firewall allow TCP $port
@ -169,7 +167,7 @@ ynh_exec_warn_less yunohost firewall allow UDP $port_videobridge
#================================================= #=================================================
# CONFIGURE PROSODY # CONFIGURE PROSODY
#================================================= #=================================================
ynh_script_progression --message="Configuring Prosody..." ynh_script_progression --message="Configuring Prosody..." --weight=1
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
@ -180,7 +178,7 @@ fi
#================================================= #=================================================
# CONFIGURE JITSI-VIDEOBRIDGE # CONFIGURE JITSI-VIDEOBRIDGE
#================================================= #=================================================
ynh_script_progression --message="Configuring Jitsi-Videobridge..." ynh_script_progression --message="Configuring Jitsi-Videobridge..." --weight=1
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
@ -205,7 +203,7 @@ fi
if [ $YNH_ARCH == "armhf" ] if [ $YNH_ARCH == "armhf" ]
then then
ynh_script_progression --message="Configuring jniwrapper for armhf ..." ynh_script_progression --message="Configuring jniwrapper for armhf ..." --weight=1
ynh_jniwrapper_armhf ynh_jniwrapper_armhf
fi fi
@ -213,7 +211,7 @@ fi
#================================================= #=================================================
# CONFIGURE JITSI-JICOFO # CONFIGURE JITSI-JICOFO
#================================================= #=================================================
ynh_script_progression --message="configuring Jitsi-Jicofo..." ynh_script_progression --message="configuring Jitsi-Jicofo..." --weight=1
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
@ -227,7 +225,7 @@ fi
#================================================= #=================================================
# CONFIGURE JITSI-MEET # CONFIGURE JITSI-MEET
#================================================= #=================================================
ynh_script_progression --message="Configuring Jitsi-Meet..." ynh_script_progression --message="Configuring Jitsi-Meet..." --weight=1
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
@ -238,7 +236,7 @@ fi
#================================================= #=================================================
# CREATE LOG DIR # CREATE LOG DIR
#================================================= #=================================================
ynh_script_progression --message="Creating log dir..." ynh_script_progression --message="Creating log dir..." --weight=1
mkdir -p "/var/log/$app" mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R $app: /var/log/$app
@ -247,7 +245,7 @@ chmod -R 770 /var/log/$app
#================================================= #=================================================
# SECURE FILES AND DIRECTORIES # SECURE FILES AND DIRECTORIES
#================================================= #=================================================
ynh_script_progression --message="Securing files and directories..." ynh_script_progression --message="Securing files and directories..." --weight=1
# Set permissions on app files # Set permissions on app files
chown -R $app: /etc/$app chown -R $app: /etc/$app
@ -255,7 +253,7 @@ chown -R $app: /etc/$app
#================================================= #=================================================
# SETUP SYSTEMD # SETUP SYSTEMD
#================================================= #=================================================
ynh_script_progression --message="Upgrading systemd configuration..." ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config --service=$app-videobridge --template="jitsi-videobridge.service" ynh_add_systemd_config --service=$app-videobridge --template="jitsi-videobridge.service"
@ -266,7 +264,7 @@ ynh_add_systemd_config --service=$app-jicofo --template="jitsi-jicofo.service"
#================================================= #=================================================
# SETUP LOGROTATE # SETUP LOGROTATE
#================================================= #=================================================
ynh_script_progression --message="Upgrading logrotate configuration..." ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
# Use logrotate to manage app-specific logfile(s) # Use logrotate to manage app-specific logfile(s)
ynh_use_logrotate --non-append ynh_use_logrotate --non-append
@ -274,7 +272,7 @@ ynh_use_logrotate --non-append
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrating service in YunoHost..." ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge yunohost service add $app-videobridge --log "/var/log/$app/$app-videobridge.log" --needs_exposed_ports $port $port_videobridge
yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log" yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
@ -282,7 +280,7 @@ yunohost service add $app-jicofo --log "/var/log/$app/$app-jicofo.log"
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log" ynh_systemd_action --service_name=$app-jicofo --action="start" --log_path="/var/log/$app/$app-jicofo.log"
ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="/var/log/$app/$app-videobridge.log" ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="/var/log/$app/$app-videobridge.log"
@ -290,7 +288,7 @@ ynh_systemd_action --service_name=$app-videobridge --action="start" --log_path="
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading NGINX web server..." ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
@ -298,4 +296,4 @@ ynh_systemd_action --service_name=nginx --action=reload
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Upgrade of $app completed" ynh_script_progression --message="Upgrade of $app completed" --last

View file

@ -1,110 +0,0 @@
#!/bin/bash
# Install others YunoHost apps
#
# usage: ynh_install_apps --apps="appfoo?domain=domain.foo&path=/foo appbar?domain=domain.bar&path=/bar&admin=USER&language=fr&is_public=1&pass?word=pass&port=666"
# | arg: -a, --apps= - apps to install
#
# Requires YunoHost version *.*.* or higher.
ynh_install_apps() {
# Declare an array to define the options of this helper.
local legacy_args=a
local -A args_array=([a]=apps=)
local apps
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
# Split the list of apps in an array
local apps_list=($(echo $apps | tr " " "\n"))
local apps_dependencies=""
# For each app
for one_app_and_its_args in "${apps_list[@]}"
do
# Retrieve the name of the app (part before ?)
local one_app=$(cut -d "?" -f1 <<< "$one_app_and_its_args")
[ -z "$one_app" ] && ynh_die --message="You didn't provided a YunoHost app to install"
yunohost tools update apps
# Installing or upgrading the app depending if it's installed or not
if ! yunohost app list --output-as json --quiet | jq -e --arg id $one_app '.apps[] | select(.id == $id)' >/dev/null
then
# Retrieve the arguments of the app (part after ?)
local one_argument=$(cut -d "?" -f2- <<< "$one_app_and_its_args")
[ ! -z "$one_argument" ] && one_argument="--args $one_argument"
# Install the app with its arguments
yunohost app install $one_app $one_argument
else
# Upgrade the app
yunohost app upgrade $one_app
fi
if [ ! -z "$apps_dependencies" ]
then
apps_dependencies="$apps_dependencies, $one_app"
else
apps_dependencies="$one_app"
fi
done
ynh_app_setting_set --app=$app --key=apps_dependencies --value="$apps_dependencies"
}
# Remove other YunoHost apps
#
# Other YunoHost apps will be removed only if no other apps need them.
#
# usage: ynh_remove_apps
#
# Requires YunoHost version *.*.* or higher.
ynh_remove_apps() {
# Retrieve the apps dependencies of the app
local apps_dependencies=$(ynh_app_setting_get --app=$app --key=apps_dependencies)
ynh_app_setting_delete --app=$app --key=apps_dependencies
if [ ! -z "$apps_dependencies" ]
then
# Split the list of apps dependencies in an array
local apps_dependencies_list=($(echo $apps_dependencies | tr ", " "\n"))
# For each apps dependencies
for one_app in "${apps_dependencies_list[@]}"
do
# Retrieve the list of installed apps
local installed_apps_list=$(yunohost app list --output-as json --quiet | jq -r .apps[].id)
local required_by=""
local installed_app_required_by=""
# For each other installed app
for one_installed_app in $installed_apps_list
do
# Retrieve the other apps dependencies
one_installed_apps_dependencies=$(ynh_app_setting_get --app=$one_installed_app --key=apps_dependencies)
if [ ! -z "$one_installed_apps_dependencies" ]
then
one_installed_apps_dependencies_list=($(echo $one_installed_apps_dependencies | tr ", " "\n"))
# For each dependency of the other apps
for one_installed_app_dependency in "${one_installed_apps_dependencies_list[@]}"
do
if [[ $one_installed_app_dependency == $one_app ]]; then
required_by="$required_by $one_installed_app"
fi
done
fi
done
# If $one_app is no more required
if [[ -z "$required_by" ]]
then
# Remove $one_app
ynh_print_info --message="Removing of $one_app"
yunohost app remove $one_app --purge
else
ynh_print_info --message="$one_app was not removed because it's still required by${required_by}"
fi
done
fi
}