From 7be43713f5aae927b122e2e7722184c86ff11bbf Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 00:03:16 +0100 Subject: [PATCH 01/74] Remove cli port --- conf/coturn/turnserver.conf | 1 - conf/nginx.conf | 5 ----- scripts/install | 3 --- scripts/restore | 1 - scripts/upgrade | 3 --- 5 files changed, 13 deletions(-) diff --git a/conf/coturn/turnserver.conf b/conf/coturn/turnserver.conf index 6c42720..7c174f2 100644 --- a/conf/coturn/turnserver.conf +++ b/conf/coturn/turnserver.conf @@ -7,7 +7,6 @@ tls-listening-port=__TURNSERVER_TLS_PORT__ alt-tls-listening-port=__TURNSERVER_ALT_TLS_PORT__ min-port=49153 max-port=49193 -cli-port=__CLI_PORT__ cert=/etc/yunohost/certs/__DOMAIN__/crt.pem pkey=/etc/yunohost/certs/__DOMAIN__/key.pem diff --git a/conf/nginx.conf b/conf/nginx.conf index af8e491..df211bc 100755 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,10 +1,5 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - - # Force usage of https - if ($scheme = http) { - rewrite ^ https://$server_name$request_uri? permanent; - } proxy_pass https://127.0.0.1:__PORT__; proxy_redirect off; diff --git a/scripts/install b/scripts/install index fc40a1f..73aa416 100755 --- a/scripts/install +++ b/scripts/install @@ -55,7 +55,6 @@ ynh_script_progression --message="Storing installation settings..." --weight=4 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=admin --value=$admin -ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=group_name --value="$group_name" ynh_app_setting_set --app=$app --key=password --value=$password @@ -86,7 +85,6 @@ ynh_script_progression --message="Finding an available port..." --weight=3 port=$(ynh_find_port --port=8443) turnserver_tls_port=$(ynh_find_port --port=5349) turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1))) -cli_port=$(ynh_find_port --port=5766) ynh_app_setting_set --app=$app --key=port --value=$port @@ -98,7 +96,6 @@ ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port ynh_app_setting_set --app=$app --key=port --value=$port ynh_app_setting_set --app=$app --key=turnserver_tls_port --value=$turnserver_tls_port ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port -ynh_app_setting_set --app=$app --key=cli_port --value=$cli_port #================================================= # INSTALL DEPENDENCIES diff --git a/scripts/restore b/scripts/restore index 10741bf..02ad9c8 100755 --- a/scripts/restore +++ b/scripts/restore @@ -33,7 +33,6 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) group_name=$(ynh_app_setting_get --app=$app --key=group_name) turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port) turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port) -cli_port=$(ynh_app_setting_get --app=$app --key=cli_port) ynh_print_OFF turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd) ynh_print_ON diff --git a/scripts/upgrade b/scripts/upgrade index 556795a..4832579 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -26,7 +26,6 @@ group_name=$(ynh_app_setting_get --app=$app --key=group_name) port=$(ynh_app_setting_get --app=$app --key=port) turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port) turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port) -cli_port=$(ynh_app_setting_get --app=$app --key=cli_port) turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd) architecture=$(ynh_detect_arch) @@ -138,10 +137,8 @@ then # Set a port for each service in turnserver turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1))) - cli_port=$(ynh_find_port --port=5766) ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port - ynh_app_setting_set --app=$app --key=cli_port --value=$cli_port yunohost firewall allow Both $turnserver_alt_tls_port > /dev/null 2>&1 From 9df2425e0826d9d15da6fcfd19b9e8dcff6f40dc Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 00:14:08 +0100 Subject: [PATCH 02/74] Upgrade to version 0.3.1 --- README.md | 2 +- README_fr.md | 2 +- conf/386.src | 4 ++-- conf/amd64.src | 4 ++-- conf/arm6.src | 4 ++-- conf/arm64.src | 4 ++-- conf/arm7.src | 4 ++-- manifest.json | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d3fee4f..c087f7d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). -**Shipped version:** 0.3 +**Shipped version:** 0.3.1 ## Screenshots diff --git a/README_fr.md b/README_fr.md index 32c4f17..423dfda 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install ## Vue d'ensemble Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres). -**Version incluse :** 0.3 +**Version incluse :** 0.3.1 ## Captures d'écran diff --git a/conf/386.src b/conf/386.src index 4b9876f..da84785 100644 --- a/conf/386.src +++ b/conf/386.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_386.tar.gz -SOURCE_SUM=7264f573bc82185c88def851a70b1fe2b6f22c338ccf1e9c8fd9a80050c4be7e +SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_386.tar.gz +SOURCE_SUM=6e09e7b08baa95c695a482fadf2c0e3cd382ebba440bbe003d36acba6e07f7d8 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/amd64.src b/conf/amd64.src index f42530c..7311926 100644 --- a/conf/amd64.src +++ b/conf/amd64.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_amd64.tar.gz -SOURCE_SUM=0044483c52c392059463147df3762dd832350a5de6791e1fb4cb067cc39f880b +SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_amd64.tar.gz +SOURCE_SUM=6940bd0ffc8ce2f4f28c0e752e90ca1858e3f527a318cd45d65a803fce134d61 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/arm6.src b/conf/arm6.src index 4024108..15f2729 100644 --- a/conf/arm6.src +++ b/conf/arm6.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm6.tar.gz -SOURCE_SUM=230bb8c9649138171f44fa299cbaccac07ecc47e800e61194528e6dd044f37fa +SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm6.tar.gz +SOURCE_SUM=da5277e10ab825d03b56bc3ef35f06a99ddcd1852b38964fc7be3b2efe4fd3c1 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/arm64.src b/conf/arm64.src index fef4309..260971a 100644 --- a/conf/arm64.src +++ b/conf/arm64.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm64.tar.gz -SOURCE_SUM=7739c2e507e8a7deb8ea9f4a8de8a945d8ca8630a67c5c29851680a2cb208cc0 +SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm64.tar.gz +SOURCE_SUM=0c3b91ba6305cb8e517aeca3989180f670cd33efd928537303a7d8612be210b6 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/arm7.src b/conf/arm7.src index 37b8792..114a2a0 100644 --- a/conf/arm7.src +++ b/conf/arm7.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm7.tar.gz -SOURCE_SUM=5f81a71faf9450067eab29e57509258a23540374e3c2eb7ee71e616d87e3a10a +SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm7.tar.gz +SOURCE_SUM=c7be91c30134bf716562b111f34d5bfe6f8b50f5a298667fa1fec0ebb4fd78c7 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index 8df1672..515a000 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Videoconferencing server that is easy to deploy", "fr": "Serveur de visioconférence facile à déployer" }, - "version": "0.3~ynh1", + "version": "0.3.1~ynh1", "url": "https://galene.org/", "license": "MIT", "maintainer": { From 99dcd31023716126069e3d3e7adb4979de983a83 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 10:09:46 +0100 Subject: [PATCH 03/74] Open port 8443 --- conf/systemd.service | 2 +- scripts/change_url | 6 +++--- scripts/install | 6 +++--- scripts/remove | 6 ++++++ scripts/restore | 6 +++--- scripts/upgrade | 7 ++++--- 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/conf/systemd.service b/conf/systemd.service index cff556e..e16a219 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -8,7 +8,7 @@ Type=simple WorkingDirectory=__FINALPATH__/ User=__APP__ Group=__APP__ -ExecStart=__FINALPATH__/galene +ExecStart=__FINALPATH__/galene -http __PORT__ -turn auto LimitNOFILE=65536 [Install] diff --git a/scripts/change_url b/scripts/change_url index 0dbac85..39c368e 100755 --- a/scripts/change_url +++ b/scripts/change_url @@ -106,14 +106,14 @@ fi #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --time --weight=3 +ynh_script_progression --message="Starting a systemd service..." --weight=3 -ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index 73aa416..9c1dc91 100755 --- a/scripts/install +++ b/scripts/install @@ -86,9 +86,8 @@ port=$(ynh_find_port --port=8443) turnserver_tls_port=$(ynh_find_port --port=5349) turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1))) -ynh_app_setting_set --app=$app --key=port --value=$port - # Open the port +ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port @@ -155,6 +154,7 @@ adduser turnserver ssl-cert #================================================= ynh_script_progression --message="Configuring a systemd service..." --weight=1 +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/systemd.service" # Create a dedicated systemd config ynh_add_systemd_config @@ -256,7 +256,7 @@ setfacl -R -m user:turnserver:rwX /var/log/$app #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=2 -yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" +yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port #================================================= diff --git a/scripts/remove b/scripts/remove index 220f571..bcbe66d 100755 --- a/scripts/remove +++ b/scripts/remove @@ -87,6 +87,12 @@ ynh_remove_logrotate # CLOSE A PORT #================================================= +if yunohost firewall list | grep -q "\- $port$" +then + ynh_script_progression --message="Closing port $port..." --weight=1 + ynh_exec_warn_less yunohost firewall disallow TCP $port +fi + if yunohost firewall list | grep -q "\- $turnserver_tls_port$" then ynh_script_progression --message="Closing port $turnserver_tls_port..." --weight=1 diff --git a/scripts/restore b/scripts/restore index 02ad9c8..fc78d3b 100755 --- a/scripts/restore +++ b/scripts/restore @@ -31,6 +31,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) group_name=$(ynh_app_setting_get --app=$app --key=group_name) +port=$(ynh_app_setting_get --app=$app --key=port) turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port) turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port) ynh_print_OFF @@ -98,7 +99,7 @@ systemctl enable coturn-$app.service --quiet #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=2 -yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" +yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port #================================================= @@ -107,7 +108,6 @@ yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/ ynh_script_progression --message="Starting a systemd service..." --weight=3 ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" -yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port #================================================= # CREATE A DH FILE @@ -143,7 +143,6 @@ fi # ynh_replace_string --match_string=__DOMAIN__ --replace_string=$domain --target_file="$coturn_config_path" # ynh_replace_string --match_string=__TLS_PORT__ --replace_string=$turnserver_tls_port --target_file="$coturn_config_path" # ynh_replace_string --match_string=__TLS_ALT_PORT__ --replace_string=$turnserver_alt_tls_port --target_file="$coturn_config_path" -# ynh_replace_string --match_string=__CLI_PORT__ --replace_string=$cli_port --target_file="$coturn_config_path" # ynh_print_OFF # ynh_replace_string --match_string=__TURNPWD__ --replace_string=$turnserver_pwd --target_file="$coturn_config_path" # ynh_print_ON @@ -165,6 +164,7 @@ fi #================================================= # Ouvre le port dans le firewall +ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port diff --git a/scripts/upgrade b/scripts/upgrade index 4832579..d4c682c 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -110,8 +110,8 @@ then # Recreate certificates pushd "$final_path/data" - ynh_exec_warn_less openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem \ - -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress=" + ynh_exec_warn_less openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem \ + -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress=" chmod 640 {key.pem,cert.pem} popd fi @@ -231,6 +231,7 @@ adduser turnserver ssl-cert #================================================= ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/systemd.service" # Create a dedicated systemd config ynh_add_systemd_config @@ -264,7 +265,7 @@ ynh_use_logrotate --non-append #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=2 -yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" +yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port #================================================= From e410d5012f874fab54f0708c65fdda3a734997e3 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 10:17:19 +0100 Subject: [PATCH 04/74] Fix systemd config --- conf/systemd.service | 2 +- scripts/install | 1 - scripts/upgrade | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/conf/systemd.service b/conf/systemd.service index e16a219..cff556e 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -8,7 +8,7 @@ Type=simple WorkingDirectory=__FINALPATH__/ User=__APP__ Group=__APP__ -ExecStart=__FINALPATH__/galene -http __PORT__ -turn auto +ExecStart=__FINALPATH__/galene LimitNOFILE=65536 [Install] diff --git a/scripts/install b/scripts/install index 9c1dc91..f46aef9 100755 --- a/scripts/install +++ b/scripts/install @@ -154,7 +154,6 @@ adduser turnserver ssl-cert #================================================= ynh_script_progression --message="Configuring a systemd service..." --weight=1 -ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/systemd.service" # Create a dedicated systemd config ynh_add_systemd_config diff --git a/scripts/upgrade b/scripts/upgrade index d4c682c..be509ac 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -231,7 +231,6 @@ adduser turnserver ssl-cert #================================================= ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 -ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/systemd.service" # Create a dedicated systemd config ynh_add_systemd_config From 5251c36e3f2ed637e3c5d2ed573c8a29e73bb07a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 10:23:09 +0100 Subject: [PATCH 05/74] Update groupname.json --- conf/groupname.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/groupname.json b/conf/groupname.json index d9a2a69..7a10f63 100644 --- a/conf/groupname.json +++ b/conf/groupname.json @@ -3,5 +3,7 @@ "presenter": [{}], "description": "a human-readable description of the group; this is displayed on the landing page for public groups.", "public": true, - "allow-anonymous": true + "allow-anonymous": true, + "allow-recording": true, + "allow-subgroups": true } \ No newline at end of file From caa7cf72ae7df566aa939cb9a07dc3447990f821 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 10:32:52 +0100 Subject: [PATCH 06/74] Update remove --- scripts/remove | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/remove b/scripts/remove index bcbe66d..7d4ea32 100755 --- a/scripts/remove +++ b/scripts/remove @@ -86,22 +86,20 @@ ynh_remove_logrotate #================================================= # CLOSE A PORT #================================================= +ynh_script_progression --message="Closing ports..." --weight=1 if yunohost firewall list | grep -q "\- $port$" then - ynh_script_progression --message="Closing port $port..." --weight=1 ynh_exec_warn_less yunohost firewall disallow TCP $port fi if yunohost firewall list | grep -q "\- $turnserver_tls_port$" then - ynh_script_progression --message="Closing port $turnserver_tls_port..." --weight=1 ynh_exec_warn_less yunohost firewall disallow Both $turnserver_tls_port fi if yunohost firewall list | grep -q "\- $turnserver_alt_tls_port$" then - ynh_script_progression --message="Closing port $turnserver_alt_tls_port..." --weight=1 ynh_exec_warn_less yunohost firewall disallow Both $turnserver_alt_tls_port fi From 4a77f2d9d068e072fdb9f405df00820e27dd92b1 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 27 Feb 2021 10:43:26 +0100 Subject: [PATCH 07/74] Removing Send a email --- scripts/_common.sh | 139 --------------------------------------------- scripts/install | 19 +------ scripts/restore | 13 ----- scripts/upgrade | 1 - 4 files changed, 1 insertion(+), 171 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 7718614..db70ed4 100755 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -15,145 +15,6 @@ pkg_dependencies="coturn acl" # EXPERIMENTAL HELPERS #================================================= -# Send an email to inform the administrator -# -# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type] -# | arg: -m --app_message= - The file with the content to send to the administrator. -# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root -# example: "root admin@domain" -# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you -# example: "root admin@domain user1 user2" -# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade' -ynh_send_readme_to_admin() { - # Declare an array to define the options of this helper. - declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= ) - local app_message - local recipients - local type - # Manage arguments with getopts - - ynh_handle_getopts_args "$@" - app_message="${app_message:-}" - recipients="${recipients:-root}" - type="${type:-install}" - - # Get the value of admin_mail_html - admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) - admin_mail_html="${admin_mail_html:-0}" - - # Retrieve the email of users - find_mails () { - local list_mails="$1" - local mail - local recipients=" " - # Read each mail in argument - for mail in $list_mails - do - # Keep root or a real email address as it is - if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@" - then - recipients="$recipients $mail" - else - # But replace an user name without a domain after by its email - if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null) - then - recipients="$recipients $mail" - fi - fi - done - echo "$recipients" - } - recipients=$(find_mails "$recipients") - - # Subject base - local mail_subject="☁️🆈🅽🅷☁️: \`$app\`" - - # Adapt the subject according to the type of mail required. - if [ "$type" = "backup" ]; then - mail_subject="$mail_subject has just been backup." - elif [ "$type" = "change_url" ]; then - mail_subject="$mail_subject has just been moved to a new URL!" - elif [ "$type" = "remove" ]; then - mail_subject="$mail_subject has just been removed!" - elif [ "$type" = "restore" ]; then - mail_subject="$mail_subject has just been restored!" - elif [ "$type" = "upgrade" ]; then - mail_subject="$mail_subject has just been upgraded!" - else # install - mail_subject="$mail_subject has just been installed!" - fi - - local mail_message="This is an automated message from your beloved YunoHost server. - -Specific information for the application $app. - -$(if [ -n "$app_message" ] -then - cat "$app_message" -else - echo "...No specific information..." -fi) - ---- -Automatic diagnosis data from YunoHost - -__PRE_TAG1__$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')__PRE_TAG2__" - - # Store the message into a file for further modifications. - echo "$mail_message" > mail_to_send - - # If a html email is required. Apply html tags to the message. - if [ "$admin_mail_html" -eq 1 ] - then - # Insert 'br' tags at each ending of lines. - ynh_replace_string "$" "
" mail_to_send - - # Insert starting HTML tags - sed --in-place '1s@^@\n\n\n\n@' mail_to_send - - # Keep tabulations - ynh_replace_string " " "\ \ " mail_to_send - ynh_replace_string "\t" "\ \ " mail_to_send - - # Insert url links tags - ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "\1" mail_to_send - - # Insert pre tags - ynh_replace_string "__PRE_TAG1__" "
" mail_to_send
-                ynh_replace_string "__PRE_TAG2__" "<\pre>" mail_to_send
-
-                # Insert finishing HTML tags
-                echo -e "\n\n" >> mail_to_send
-
-        # Otherwise, remove tags to keep a plain text.
-        else
-                # Remove URL tags
-                ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send
-                ynh_replace_string "__URL_TAG2__" ": " mail_to_send
-
-                # Remove PRE tags
-                ynh_replace_string "__PRE_TAG[1-2]__" "" mail_to_send
-        fi
-
-        # Define binary to use for mail command
-        if [ -e /usr/bin/bsd-mailx ]
-        then
-                local mail_bin=/usr/bin/bsd-mailx
-        else
-                local mail_bin=/usr/bin/mail.mailutils
-        fi
-
-        if [ "$admin_mail_html" -eq 1 ]
-        then
-                content_type="text/html"
-        else
-                content_type="text/plain"
-        fi
-
-        # Send the email to the recipients
-        cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients"
-}
-
 #=================================================
 # FUTURE OFFICIAL HELPERS
 #=================================================
diff --git a/scripts/install b/scripts/install
index f46aef9..f3b2f90 100755
--- a/scripts/install
+++ b/scripts/install
@@ -86,7 +86,7 @@ port=$(ynh_find_port --port=8443)
 turnserver_tls_port=$(ynh_find_port --port=5349)
 turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1)))
 
-# Open the port
+# Open the ports
 ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port
@@ -285,23 +285,6 @@ ynh_script_progression --message="Reloading NGINX web server..." --weight=2
 
 ynh_systemd_action --service_name=nginx --action=reload
 
-#=================================================
-# SEND A README FOR THE ADMIN
-#=================================================
-
-# WARNING : theses command are used in INSTALL, RESTORE
-# For any update do it in all files
-
-echo "Galène was successfully installed :)
-
-Galène is now accesible at this adress: https://$domain
-
-Galène implements a TURN server (for VoIP), to have this fully functional please read the 'TURN server' section in the README available here: https://github.com/YunoHost-Apps/galene_ynh .
-
-If you're facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/galene_ynh" > mail_to_send
-
-ynh_send_readme_to_admin --app_message="mail_to_send" --type="install"
-
 #=================================================
 # END OF SCRIPT
 #=================================================
diff --git a/scripts/restore b/scripts/restore
index fc78d3b..f79fceb 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -191,19 +191,6 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 
 ynh_restore_file --origin_path="/etc/logrotate.d/$app"
 
-#=================================================
-# SEND A README FOR THE ADMIN
-#=================================================
-
-# WARNING : theses command are used in INSTALL, RESTORE
-# For any update do it in all files
-
-echo "Galène also implements a TURN server (for VoIP), to have this fully functional please read the 'Turnserver' section in the README available here: https://github.com/YunoHost-Apps/galene_ynh .
-
-If you're facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/galene_ynh" > mail_to_send
-
-ynh_send_readme_to_admin --app_message="mail_to_send" --type="restore"
-
 #=================================================
 # GENERIC FINALIZATION
 #=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index be509ac..a5c38f4 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -19,7 +19,6 @@ app=$YNH_APP_INSTANCE_NAME
 domain=$(ynh_app_setting_get --app=$app --key=domain)
 path_url=$(ynh_app_setting_get --app=$app --key=path)
 admin=$(ynh_app_setting_get --app=$app --key=admin)
-is_public=$(ynh_app_setting_get --app=$app --key=is_public)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 password=$(ynh_app_setting_get --app=$app --key=password)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)

From 355be6bbf50001bfd2048322cec52dcf80c314e1 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 14:29:14 +0100
Subject: [PATCH 08/74] rework coturn config

---
 README.md                   | 10 ++++-----
 README_fr.md                | 10 ++++-----
 conf/coturn/turnserver.conf |  8 +++----
 scripts/install             | 14 ++++++------
 scripts/remove              | 12 +++++-----
 scripts/restore             | 44 +++++--------------------------------
 scripts/upgrade             | 12 +++++-----
 7 files changed, 38 insertions(+), 72 deletions(-)

diff --git a/README.md b/README.md
index c087f7d..af650db 100644
--- a/README.md
+++ b/README.md
@@ -32,16 +32,16 @@ Groups are defined by files in the `/opt/yunohost/galene/groups` directory. Vari
 For VoIP and video conferencing a TURN server is also installed and configured. The TURN server listens on two UDP and TCP ports. You can get them with these commands:
 
 ```
-sudo yunohost app setting galene turnserver_tls_port
-sudo yunohost app setting galene turnserver_alt_tls_port
+sudo yunohost app setting galene turnserver_port
+sudo yunohost app setting galene turnserver_alt_port
 ```
 
-The TURN server will also choose a port dynamically when a new call starts. The range is between 49153 - 49193.
+The TURN server will also choose a port dynamically when a new call starts. The range is between 49152 - 65535.
 
-For security reason the ports range (49153 - 49193) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command:
+For security reason the ports range (49152 - 65535) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command:
 
 ```
-sudo yunohost firewall allow Both 49153:49193
+sudo yunohost firewall allow Both 49152:65535
 ```
 
 You might also need to open these ports (if it is not automatically done) on your ISP box.
diff --git a/README_fr.md b/README_fr.md
index 423dfda..4881046 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -32,16 +32,16 @@ Les groupes sont définis par des fichiers dans le répertoire `/opt/yunohost/ga
 Pour la VoIP et la visioconférence, un serveur TURN est également installé et configuré. Le serveur TURN écoute sur deux ports UDP et TCP. Vous pouvez les obtenir avec ces commandes :
 
 ```
-sudo yunohost app setting galene turnserver_tls_port
-sudo yunohost app setting galene turnserver_alt_tls_port
+sudo yunohost app setting galene turnserver_port
+sudo yunohost app setting galene turnserver_alt_port
 ``` 
 
-Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49153 et 49193.
+Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49152 et 65535.
 
-Par sécurité, la plage de ports (49153 - 49193) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande :
+Par sécurité, la plage de ports (49152 - 65535) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande :
 
 ```
-sudo yunohost firewall allow Both 49153:49193
+sudo yunohost firewall allow Both 49152:65535
 ```
 
 Vous devrez peut-être également ouvrir ces ports (si ce n'est pas fait automatiquement) sur votre box.
diff --git a/conf/coturn/turnserver.conf b/conf/coturn/turnserver.conf
index 7c174f2..a6af887 100644
--- a/conf/coturn/turnserver.conf
+++ b/conf/coturn/turnserver.conf
@@ -3,10 +3,10 @@ use-auth-secret
 static-auth-secret=__TURNSERVER_PWD__
 realm=__DOMAIN__
 
-tls-listening-port=__TURNSERVER_TLS_PORT__
-alt-tls-listening-port=__TURNSERVER_ALT_TLS_PORT__
-min-port=49153
-max-port=49193
+listening-port=__TURNSERVER_PORT__
+alt-listening-port=__TURNSERVER_ALT_PORT__
+min-port=49152
+max-port=65535
 
 cert=/etc/yunohost/certs/__DOMAIN__/crt.pem
 pkey=/etc/yunohost/certs/__DOMAIN__/key.pem
diff --git a/scripts/install b/scripts/install
index f3b2f90..e0bf0f9 100755
--- a/scripts/install
+++ b/scripts/install
@@ -83,18 +83,18 @@ ynh_script_progression --message="Finding an available port..." --weight=3
 
 # Find an available port
 port=$(ynh_find_port --port=8443)
-turnserver_tls_port=$(ynh_find_port --port=5349)
-turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1)))
+turnserver_port=$(ynh_find_port --port=1194)
+turnserver_alt_port=$(ynh_find_port --port=$((turnserver_port+1)))
 
 # Open the ports
 ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_port
 
 # Store opened ports
 ynh_app_setting_set --app=$app --key=port --value=$port
-ynh_app_setting_set --app=$app --key=turnserver_tls_port --value=$turnserver_tls_port
-ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port
+ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
+ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_alt_port
 
 #=================================================
 # INSTALL DEPENDENCIES
@@ -256,7 +256,7 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
 yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
diff --git a/scripts/remove b/scripts/remove
index 7d4ea32..5b4490c 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -19,8 +19,8 @@ app=$YNH_APP_INSTANCE_NAME
 domain=$(ynh_app_setting_get --app=$app --key=domain)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 port=$(ynh_app_setting_get --app=$app --key=port)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
+turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
 
 #=================================================
 # STANDARD REMOVE
@@ -93,14 +93,14 @@ then
 	ynh_exec_warn_less yunohost firewall disallow TCP $port
 fi
 
-if yunohost firewall list | grep -q "\- $turnserver_tls_port$"
+if yunohost firewall list | grep -q "\- $turnserver_port$"
 then
-    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_tls_port 
+    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_port 
 fi
 
-if yunohost firewall list | grep -q "\- $turnserver_alt_tls_port$"
+if yunohost firewall list | grep -q "\- $turnserver_alt_port$"
 then
-    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_alt_tls_port
+    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_alt_port
 fi
 
 #=================================================
diff --git a/scripts/restore b/scripts/restore
index f79fceb..12f4966 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -32,8 +32,8 @@ path_url=$(ynh_app_setting_get --app=$app --key=path)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
+turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
 ynh_print_OFF
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
 ynh_print_ON
@@ -100,7 +100,7 @@ systemctl enable coturn-$app.service --quiet
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
 yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
@@ -125,48 +125,14 @@ then
     chmod 640 /etc/ssl/private/dh2048.pem
 fi
 
-# #=================================================
-# # RECONFIGURE THE TURNSERVER
-# #=================================================
-# ynh_script_progression --message="Reconfiguring Coturn..." --weight=23
-
-# # To be sure that at the restoration the IP address in coturn config is the same as the real address we remake the coturn config
-
-# # WARNING : these commands are used in INSTALL, UPGRADE
-# # For any update do it in all files
-
-# coturn_config_path="/etc/$app/coturn.conf"
-
-# cp ../settings/conf/coturn/turnserver.conf "$coturn_config_path"
-
-# ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__DOMAIN__ --replace_string=$domain --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__TLS_PORT__ --replace_string=$turnserver_tls_port --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__TLS_ALT_PORT__ --replace_string=$turnserver_alt_tls_port --target_file="$coturn_config_path"
-# ynh_print_OFF
-# ynh_replace_string --match_string=__TURNPWD__ --replace_string=$turnserver_pwd --target_file="$coturn_config_path"
-# ynh_print_ON
-
-# # Get public IP and set as external IP for coturn
-# # note : '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-# public_ip4="$(curl ip.yunohost.org)" || true
-# public_ip6="$(curl ipv6.yunohost.org)" || true
-
-# if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
-# then
-#     echo "external-ip=${public_ip4}/${public_ip6}" >> "$coturn_config_path"
-# fi
-
-# ynh_store_file_checksum --file="$coturn_config_path"
-
 #=================================================
 # OPEN THE PORT
 #=================================================
 
 # Ouvre le port dans le firewall
 ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_port
 
 #=================================================
 # RESTORE USER RIGHTS
diff --git a/scripts/upgrade b/scripts/upgrade
index a5c38f4..4fbac23 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -23,8 +23,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 password=$(ynh_app_setting_get --app=$app --key=password)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
+turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
 architecture=$(ynh_detect_arch)
 
@@ -135,11 +135,11 @@ then
     ynh_replace_string --match_string="TURNSERVER_ENABLED=1" --replace_string="TURNSERVER_ENABLED=0" --target_file=/etc/default/coturn
 
     # Set a port for each service in turnserver
-    turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1)))
+    turnserver_alt_port=$(ynh_find_port --port=$((turnserver_port+1)))
 
-    ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port
+    ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_alt_port
 
-    yunohost firewall allow Both $turnserver_alt_tls_port > /dev/null 2>&1
+    yunohost firewall allow Both $turnserver_alt_port > /dev/null 2>&1
 
     #=================================================
     # MAKE A CLEAN LOGROTATE CONFIG
@@ -264,7 +264,7 @@ ynh_use_logrotate --non-append
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
 yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_tls_port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE

From 54a3d8de4592473ba07bab7d97f16900d6b6d721 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 14:32:57 +0100
Subject: [PATCH 09/74] Update ice-servers.json

---
 conf/ice-servers.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index 3a65dc9..6d7c1dc 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -2,11 +2,11 @@
     {
         "urls": [
             "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__?transport=udp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__?transport=udp"
+            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__",
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
+            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__?transport=tcp",
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp",
+            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__?transport=udp"
         ],
         "username": "__APP__",
         "credential": "__TURNSERVER_PWD__",

From 3c60c7bdf7ba521130286996ed081dc3eb57645d Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 14:35:07 +0100
Subject: [PATCH 10/74] Update ice-servers.json

---
 conf/ice-servers.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index 6d7c1dc..98f9e02 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -1,7 +1,7 @@
 [
     {
         "urls": [
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__",
+            "turn:__DOMAIN__:__TURNSERVER_PORT__",
             "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__",
             "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
             "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__?transport=tcp",

From d2bdb4e9d565778d766412073a96eebd8cd8aca0 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 14:51:38 +0100
Subject: [PATCH 11/74] Fix

---
 README.md                   | 1 -
 README_fr.md                | 1 -
 conf/coturn/turnserver.conf | 6 ++----
 conf/ice-servers.json       | 5 +----
 scripts/install             | 6 ------
 scripts/remove              | 6 ------
 scripts/restore             | 4 ----
 scripts/upgrade             | 7 +++----
 8 files changed, 6 insertions(+), 30 deletions(-)

diff --git a/README.md b/README.md
index af650db..3e4bec5 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,6 @@ For VoIP and video conferencing a TURN server is also installed and configured.
 
 ```
 sudo yunohost app setting galene turnserver_port
-sudo yunohost app setting galene turnserver_alt_port
 ```
 
 The TURN server will also choose a port dynamically when a new call starts. The range is between 49152 - 65535.
diff --git a/README_fr.md b/README_fr.md
index 4881046..a866fd6 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -33,7 +33,6 @@ Pour la VoIP et la visioconférence, un serveur TURN est également installé et
 
 ```
 sudo yunohost app setting galene turnserver_port
-sudo yunohost app setting galene turnserver_alt_port
 ``` 
 
 Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49152 et 65535.
diff --git a/conf/coturn/turnserver.conf b/conf/coturn/turnserver.conf
index a6af887..f24738a 100644
--- a/conf/coturn/turnserver.conf
+++ b/conf/coturn/turnserver.conf
@@ -1,10 +1,8 @@
 lt-cred-mech
-use-auth-secret
-static-auth-secret=__TURNSERVER_PWD__
+listening-port=__TURNSERVER_PORT__
+user=__APP__:__TURNSERVER_PWD__
 realm=__DOMAIN__
 
-listening-port=__TURNSERVER_PORT__
-alt-listening-port=__TURNSERVER_ALT_PORT__
 min-port=49152
 max-port=65535
 
diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index 98f9e02..cc898a2 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -2,11 +2,8 @@
     {
         "urls": [
             "turn:__DOMAIN__:__TURNSERVER_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__",
             "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_PORT__?transport=udp"
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp"
         ],
         "username": "__APP__",
         "credential": "__TURNSERVER_PWD__",
diff --git a/scripts/install b/scripts/install
index e0bf0f9..6cec5d8 100755
--- a/scripts/install
+++ b/scripts/install
@@ -27,10 +27,7 @@ domain=$YNH_APP_ARG_DOMAIN
 path_url="/"
 admin=$YNH_APP_ARG_ADMIN
 is_public=$YNH_APP_ARG_IS_PUBLIC
-email=$(ynh_user_get_info --username=$admin --key=mail)
-ynh_print_OFF
 password=$YNH_APP_ARG_PASSWORD
-ynh_print_ON
 group_name=$YNH_APP_ARG_GROUP_NAME
 architecture=$(ynh_detect_arch)
 
@@ -84,17 +81,14 @@ ynh_script_progression --message="Finding an available port..." --weight=3
 # Find an available port
 port=$(ynh_find_port --port=8443)
 turnserver_port=$(ynh_find_port --port=1194)
-turnserver_alt_port=$(ynh_find_port --port=$((turnserver_port+1)))
 
 # Open the ports
 ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_port
 
 # Store opened ports
 ynh_app_setting_set --app=$app --key=port --value=$port
 ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
-ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_alt_port
 
 #=================================================
 # INSTALL DEPENDENCIES
diff --git a/scripts/remove b/scripts/remove
index 5b4490c..78cdef0 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -20,7 +20,6 @@ domain=$(ynh_app_setting_get --app=$app --key=domain)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 port=$(ynh_app_setting_get --app=$app --key=port)
 turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
-turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
 
 #=================================================
 # STANDARD REMOVE
@@ -98,11 +97,6 @@ then
     ynh_exec_warn_less yunohost firewall disallow Both $turnserver_port 
 fi
 
-if yunohost firewall list | grep -q "\- $turnserver_alt_port$"
-then
-    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_alt_port
-fi
-
 #=================================================
 # GENERIC FINALIZATION
 #=================================================
diff --git a/scripts/restore b/scripts/restore
index 12f4966..f344407 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -33,10 +33,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
 turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
-turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
-ynh_print_OFF
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
-ynh_print_ON
 
 #=================================================
 # CHECK IF THE APP CAN BE RESTORED
@@ -132,7 +129,6 @@ fi
 # Ouvre le port dans le firewall
 ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_port
 
 #=================================================
 # RESTORE USER RIGHTS
diff --git a/scripts/upgrade b/scripts/upgrade
index 4fbac23..82c402e 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -24,7 +24,6 @@ password=$(ynh_app_setting_get --app=$app --key=password)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
 turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
-turnserver_alt_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
 architecture=$(ynh_detect_arch)
 
@@ -135,11 +134,11 @@ then
     ynh_replace_string --match_string="TURNSERVER_ENABLED=1" --replace_string="TURNSERVER_ENABLED=0" --target_file=/etc/default/coturn
 
     # Set a port for each service in turnserver
-    turnserver_alt_port=$(ynh_find_port --port=$((turnserver_port+1)))
+    turnserver_port=$(ynh_find_port --port=1194)
 
-    ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_alt_port
+    ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_port
 
-    yunohost firewall allow Both $turnserver_alt_port > /dev/null 2>&1
+    ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
     #=================================================
     # MAKE A CLEAN LOGROTATE CONFIG

From b355cfa14d3b364554c81253d5fb6a8c0cd69aff Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 15:08:10 +0100
Subject: [PATCH 12/74] Update ice-servers.json

---
 conf/ice-servers.json | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index cc898a2..da74c0b 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -6,7 +6,6 @@
             "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp"
         ],
         "username": "__APP__",
-        "credential": "__TURNSERVER_PWD__",
-        "credentialType": "hmac-sha1"
+        "credential": "__TURNSERVER_PWD__"
     }
 ]

From 8022a569e9d6b103531892e3635ce5b0585ea201 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 15:17:52 +0100
Subject: [PATCH 13/74] Update change_url

---
 scripts/change_url | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/change_url b/scripts/change_url
index 39c368e..e64cc7c 100755
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -70,7 +70,7 @@ fi
 #=================================================
 ynh_script_progression --message="Stopping a systemd service..." --weight=1
 
-ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log"
+ynh_systemd_action --service_name=$app --action=stop --log_path="/var/log/$app/$app.log"
 
 #=================================================
 # MODIFY URL IN NGINX CONF

From 4dfe29c0def2853b76dc41e1756a8fe4498b61d1 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 15:24:41 +0100
Subject: [PATCH 14/74] Update nginx.conf

---
 conf/nginx.conf | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/conf/nginx.conf b/conf/nginx.conf
index df211bc..6a81928 100755
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -1,6 +1,11 @@
 #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
 location __PATH__/ {
 
+  # Force usage of https
+  if ($scheme = http) {
+    rewrite ^ https://$server_name$request_uri? permanent;
+  }
+
   proxy_pass        https://127.0.0.1:__PORT__;
   proxy_redirect    off;
   proxy_set_header  Host $host;

From 3cb21d89c17d8b46587864945485be63c3f09618 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 16:35:36 +0100
Subject: [PATCH 15/74] Update nginx.conf

---
 conf/nginx.conf | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/conf/nginx.conf b/conf/nginx.conf
index 6a81928..c3be26b 100755
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -1,5 +1,4 @@
-#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
-location __PATH__/ {
+location / {
 
   # Force usage of https
   if ($scheme = http) {

From a1be2d4049af09c0db8b08e24f49c6dc36c7c8ff Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 16:36:46 +0100
Subject: [PATCH 16/74] Update install

---
 scripts/install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/install b/scripts/install
index 6cec5d8..9b6d86c 100755
--- a/scripts/install
+++ b/scripts/install
@@ -63,7 +63,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam

From 0f1402fe46ef1a07f29b1c2f31afa6621353e02e Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 27 Feb 2021 22:52:51 +0100
Subject: [PATCH 17/74] Update turnserver.conf

---
 conf/coturn/turnserver.conf | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/conf/coturn/turnserver.conf b/conf/coturn/turnserver.conf
index f24738a..f0b552b 100644
--- a/conf/coturn/turnserver.conf
+++ b/conf/coturn/turnserver.conf
@@ -1,25 +1,33 @@
-lt-cred-mech
-listening-port=__TURNSERVER_PORT__
-user=__APP__:__TURNSERVER_PWD__
+# TURN server name and realm
 realm=__DOMAIN__
 
+# Enable long-term credential mechanism
+lt-cred-mech
+
+# Specify the user for the TURN authentification
+user=__APP__:__TURNSERVER_PWD__
+
+# Main listening port
+listening-port=__TURNSERVER_PORT__
+
+# Further ports that are open for communication
 min-port=49152
 max-port=65535
 
+# SSL certificates
 cert=/etc/yunohost/certs/__DOMAIN__/crt.pem
 pkey=/etc/yunohost/certs/__DOMAIN__/key.pem
 dh-file=/etc/ssl/private/dh2048.pem
 
+# Log file path
+log-file=/var/log/__APP__/turnserver.log
+pidfile=/run/coturn-__APP__/turnserver.pid
+simple-log
+
 no-sslv2
 no-sslv3
 no-tlsv1
 no-tlsv1_1
-
 no-loopback-peers
 no-multicast-peers
-
 no-cli
-
-log-file=/var/log/__APP__/turnserver.log
-pidfile=/run/coturn-__APP__/turnserver.pid
-simple-log

From fb242357a40adaaed893ea3e8257db7489e31f9a Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sun, 28 Feb 2021 15:01:36 +0100
Subject: [PATCH 18/74] Cleaning up

---
 scripts/install | 6 +++---
 scripts/restore | 6 +++---
 scripts/upgrade | 6 +++---
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/scripts/install b/scripts/install
index 9b6d86c..d6906c5 100755
--- a/scripts/install
+++ b/scripts/install
@@ -238,7 +238,7 @@ chown -R $app:$app $final_path
 chmod -R 755 $final_path
 chown -R $app:root /var/log/$app
 chown -R $app:root /etc/$app
-chown turnserver:root $coturn_config_path
+chown turnserver:root /etc/$app/coturn.conf
 chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
@@ -249,8 +249,8 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_port="$turnserver_port"
 
 #=================================================
 # START SYSTEMD SERVICE
diff --git a/scripts/restore b/scripts/restore
index f344407..8b7e888 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -96,8 +96,8 @@ systemctl enable coturn-$app.service --quiet
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
 
 #=================================================
 # START SYSTEMD SERVICE
@@ -114,7 +114,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam
diff --git a/scripts/upgrade b/scripts/upgrade
index 82c402e..08def0a 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -155,7 +155,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam
@@ -262,8 +262,8 @@ ynh_use_logrotate --non-append
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
 
 #=================================================
 # START SYSTEMD SERVICE

From 449efed90b5b120e323965d97bdb0a1951d247e0 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin 
Date: Mon, 1 Mar 2021 00:57:32 +0100
Subject: [PATCH 19/74] Make curl silent

---
 scripts/install | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/install b/scripts/install
index d6906c5..2c85b6a 100755
--- a/scripts/install
+++ b/scripts/install
@@ -177,8 +177,8 @@ ynh_add_config --template="../conf/coturn/turnserver.conf" --destination="$cotur
 
 # Get public IP and set as external IP for coturn
 # note: '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
 then

From b49c700a447c327675578fad57658531a9c7858f Mon Sep 17 00:00:00 2001
From: Alexandre Aubin 
Date: Mon, 1 Mar 2021 00:58:01 +0100
Subject: [PATCH 20/74] Make curl silent

---
 scripts/upgrade | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/upgrade b/scripts/upgrade
index 08def0a..05509db 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -179,8 +179,8 @@ ynh_add_config --template="../conf/coturn/turnserver.conf" --destination="$cotur
 
 # Get public IP and set as external IP for coturn
 # note : '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
 then

From 2fccb7b50d90391f43b43056234ccf17fff24324 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 1 Mar 2021 10:17:43 +0100
Subject: [PATCH 21/74] Update upgrade

---
 scripts/upgrade | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/upgrade b/scripts/upgrade
index 05509db..baaa7da 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -136,7 +136,7 @@ then
     # Set a port for each service in turnserver
     turnserver_port=$(ynh_find_port --port=1194)
 
-    ynh_app_setting_set --app=$app --key=turnserver_alt_port --value=$turnserver_port
+    ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
 
     ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
@@ -222,6 +222,7 @@ ynh_script_progression --message="Making sure dedicated system user exists..." -
 
 # Create a dedicated user (if not existing)
 ynh_system_user_create --username=$app
+ynh_system_user_create --username=turnserver
 adduser turnserver ssl-cert
 
 #=================================================

From 3a801d0448fe8ead20d35fcf1eb2fe089d5f563e Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 1 Mar 2021 19:39:53 +0100
Subject: [PATCH 22/74] Update install

---
 scripts/install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/install b/scripts/install
index 2c85b6a..9873b14 100755
--- a/scripts/install
+++ b/scripts/install
@@ -250,7 +250,7 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
 yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_port="$turnserver_port"
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
 
 #=================================================
 # START SYSTEMD SERVICE

From 4fbf2ca1dcb1da018a22ba780821002e8bb4d7ad Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 1 Mar 2021 20:42:12 +0100
Subject: [PATCH 23/74] fix

---
 scripts/install                 | 4 ++--
 scripts/restore                 | 4 ++--
 scripts/upgrade                 | 6 ++----
 sources/Coturn_config_rotate.sh | 4 ++--
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/scripts/install b/scripts/install
index 9873b14..b06fb65 100755
--- a/scripts/install
+++ b/scripts/install
@@ -249,8 +249,8 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
diff --git a/scripts/restore b/scripts/restore
index 8b7e888..a4c0dd8 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -96,8 +96,8 @@ systemctl enable coturn-$app.service --quiet
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
diff --git a/scripts/upgrade b/scripts/upgrade
index baaa7da..b4e3148 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -135,9 +135,7 @@ then
 
     # Set a port for each service in turnserver
     turnserver_port=$(ynh_find_port --port=1194)
-
     ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
-
     ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
     #=================================================
@@ -263,8 +261,8 @@ ynh_use_logrotate --non-append
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports="$port"
-yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports="$turnserver_port"
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
diff --git a/sources/Coturn_config_rotate.sh b/sources/Coturn_config_rotate.sh
index da3fcbe..f03112d 100644
--- a/sources/Coturn_config_rotate.sh
+++ b/sources/Coturn_config_rotate.sh
@@ -4,8 +4,8 @@ source /usr/share/yunohost/helpers
 
 external_IP_line="external-ip=__IPV4__/__IPV6__"
 
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if [ -n "$public_ip4" ] && ynh_validate_ip4 --ip_address="$public_ip4"
 then

From fa29e53dc4b5f92e163b0e91d69ceb461ef35fa1 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 1 Mar 2021 20:59:15 +0100
Subject: [PATCH 24/74] Update upgrade

---
 scripts/upgrade | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/scripts/upgrade b/scripts/upgrade
index b4e3148..5191df2 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -44,6 +44,12 @@ if [ -z "$final_path" ]; then
 	ynh_app_setting_set --app=$app --key=final_path --value=$final_path
 fi
 
+if [ -z "$turnserver_port" ]; then
+    turnserver_port=$(ynh_find_port --port=1194)
+    ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
+    ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+fi
+
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================

From ad2eab6d60c87d8046f07450364e7879e9f61edc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Tue, 2 Mar 2021 20:49:10 +0100
Subject: [PATCH 25/74] Upgrade to version 0.3.1 (#26)

* Upgrade to version 0.3.1
---
 "\n.gitignore"                  |   2 +
 README.md                       |  11 ++-
 README_fr.md                    |  11 ++-
 conf/386.src                    |   4 +-
 conf/amd64.src                  |   4 +-
 conf/arm6.src                   |   4 +-
 conf/arm64.src                  |   4 +-
 conf/arm7.src                   |   4 +-
 conf/coturn/turnserver.conf     |  33 ++++----
 conf/groupname.json             |   4 +-
 conf/ice-servers.json           |  12 +--
 conf/nginx.conf                 |   5 +-
 manifest.json                   |   2 +-
 scripts/_common.sh              | 139 --------------------------------
 scripts/change_url              |   8 +-
 scripts/install                 |  51 +++---------
 scripts/remove                  |  14 ++--
 scripts/restore                 |  66 ++-------------
 scripts/upgrade                 |  38 ++++-----
 sources/Coturn_config_rotate.sh |   4 +-
 20 files changed, 101 insertions(+), 319 deletions(-)
 create mode 100644 "\n.gitignore"

diff --git "a/\n.gitignore" "b/\n.gitignore"
new file mode 100644
index 0000000..90c63c5
--- /dev/null
+++ "b/\n.gitignore"
@@ -0,0 +1,2 @@
+.DS_Store
+._.DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index d3fee4f..3e4bec5 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3
+**Shipped version:** 0.3.1
 
 ## Screenshots
 
@@ -32,16 +32,15 @@ Groups are defined by files in the `/opt/yunohost/galene/groups` directory. Vari
 For VoIP and video conferencing a TURN server is also installed and configured. The TURN server listens on two UDP and TCP ports. You can get them with these commands:
 
 ```
-sudo yunohost app setting galene turnserver_tls_port
-sudo yunohost app setting galene turnserver_alt_tls_port
+sudo yunohost app setting galene turnserver_port
 ```
 
-The TURN server will also choose a port dynamically when a new call starts. The range is between 49153 - 49193.
+The TURN server will also choose a port dynamically when a new call starts. The range is between 49152 - 65535.
 
-For security reason the ports range (49153 - 49193) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command:
+For security reason the ports range (49152 - 65535) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command:
 
 ```
-sudo yunohost firewall allow Both 49153:49193
+sudo yunohost firewall allow Both 49152:65535
 ```
 
 You might also need to open these ports (if it is not automatically done) on your ISP box.
diff --git a/README_fr.md b/README_fr.md
index 32c4f17..a866fd6 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3
+**Version incluse :** 0.3.1
 
 ## Captures d'écran
 
@@ -32,16 +32,15 @@ Les groupes sont définis par des fichiers dans le répertoire `/opt/yunohost/ga
 Pour la VoIP et la visioconférence, un serveur TURN est également installé et configuré. Le serveur TURN écoute sur deux ports UDP et TCP. Vous pouvez les obtenir avec ces commandes :
 
 ```
-sudo yunohost app setting galene turnserver_tls_port
-sudo yunohost app setting galene turnserver_alt_tls_port
+sudo yunohost app setting galene turnserver_port
 ``` 
 
-Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49153 et 49193.
+Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49152 et 65535.
 
-Par sécurité, la plage de ports (49153 - 49193) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande :
+Par sécurité, la plage de ports (49152 - 65535) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande :
 
 ```
-sudo yunohost firewall allow Both 49153:49193
+sudo yunohost firewall allow Both 49152:65535
 ```
 
 Vous devrez peut-être également ouvrir ces ports (si ce n'est pas fait automatiquement) sur votre box.
diff --git a/conf/386.src b/conf/386.src
index 4b9876f..da84785 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_386.tar.gz
-SOURCE_SUM=7264f573bc82185c88def851a70b1fe2b6f22c338ccf1e9c8fd9a80050c4be7e
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_386.tar.gz
+SOURCE_SUM=6e09e7b08baa95c695a482fadf2c0e3cd382ebba440bbe003d36acba6e07f7d8
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index f42530c..7311926 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_amd64.tar.gz
-SOURCE_SUM=0044483c52c392059463147df3762dd832350a5de6791e1fb4cb067cc39f880b
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_amd64.tar.gz
+SOURCE_SUM=6940bd0ffc8ce2f4f28c0e752e90ca1858e3f527a318cd45d65a803fce134d61
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 4024108..15f2729 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm6.tar.gz
-SOURCE_SUM=230bb8c9649138171f44fa299cbaccac07ecc47e800e61194528e6dd044f37fa
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm6.tar.gz
+SOURCE_SUM=da5277e10ab825d03b56bc3ef35f06a99ddcd1852b38964fc7be3b2efe4fd3c1
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index fef4309..260971a 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm64.tar.gz
-SOURCE_SUM=7739c2e507e8a7deb8ea9f4a8de8a945d8ca8630a67c5c29851680a2cb208cc0
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm64.tar.gz
+SOURCE_SUM=0c3b91ba6305cb8e517aeca3989180f670cd33efd928537303a7d8612be210b6
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 37b8792..114a2a0 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3/galene_0.3_Linux_arm7.tar.gz
-SOURCE_SUM=5f81a71faf9450067eab29e57509258a23540374e3c2eb7ee71e616d87e3a10a
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm7.tar.gz
+SOURCE_SUM=c7be91c30134bf716562b111f34d5bfe6f8b50f5a298667fa1fec0ebb4fd78c7
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/coturn/turnserver.conf b/conf/coturn/turnserver.conf
index 6c42720..f0b552b 100644
--- a/conf/coturn/turnserver.conf
+++ b/conf/coturn/turnserver.conf
@@ -1,28 +1,33 @@
-lt-cred-mech
-use-auth-secret
-static-auth-secret=__TURNSERVER_PWD__
+# TURN server name and realm
 realm=__DOMAIN__
 
-tls-listening-port=__TURNSERVER_TLS_PORT__
-alt-tls-listening-port=__TURNSERVER_ALT_TLS_PORT__
-min-port=49153
-max-port=49193
-cli-port=__CLI_PORT__
+# Enable long-term credential mechanism
+lt-cred-mech
 
+# Specify the user for the TURN authentification
+user=__APP__:__TURNSERVER_PWD__
+
+# Main listening port
+listening-port=__TURNSERVER_PORT__
+
+# Further ports that are open for communication
+min-port=49152
+max-port=65535
+
+# SSL certificates
 cert=/etc/yunohost/certs/__DOMAIN__/crt.pem
 pkey=/etc/yunohost/certs/__DOMAIN__/key.pem
 dh-file=/etc/ssl/private/dh2048.pem
 
+# Log file path
+log-file=/var/log/__APP__/turnserver.log
+pidfile=/run/coturn-__APP__/turnserver.pid
+simple-log
+
 no-sslv2
 no-sslv3
 no-tlsv1
 no-tlsv1_1
-
 no-loopback-peers
 no-multicast-peers
-
 no-cli
-
-log-file=/var/log/__APP__/turnserver.log
-pidfile=/run/coturn-__APP__/turnserver.pid
-simple-log
diff --git a/conf/groupname.json b/conf/groupname.json
index d9a2a69..7a10f63 100644
--- a/conf/groupname.json
+++ b/conf/groupname.json
@@ -3,5 +3,7 @@
     "presenter": [{}],
     "description": "a human-readable description of the group; this is displayed on the landing page for public groups.",
     "public": true,
-    "allow-anonymous": true
+    "allow-anonymous": true,
+    "allow-recording": true,
+    "allow-subgroups": true
 }
\ No newline at end of file
diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index 3a65dc9..da74c0b 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -1,15 +1,11 @@
 [
     {
         "urls": [
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_TLS_PORT__?transport=udp",
-            "turn:__DOMAIN__:__TURNSERVER_ALT_TLS_PORT__?transport=udp"
+            "turn:__DOMAIN__:__TURNSERVER_PORT__",
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp"
         ],
         "username": "__APP__",
-        "credential": "__TURNSERVER_PWD__",
-        "credentialType": "hmac-sha1"
+        "credential": "__TURNSERVER_PWD__"
     }
 ]
diff --git a/conf/nginx.conf b/conf/nginx.conf
index af8e491..c3be26b 100755
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -1,6 +1,5 @@
-#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
-location __PATH__/ {
-  
+location / {
+
   # Force usage of https
   if ($scheme = http) {
     rewrite ^ https://$server_name$request_uri? permanent;
diff --git a/manifest.json b/manifest.json
index 8df1672..515a000 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3~ynh1",
+    "version": "0.3.1~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 7718614..db70ed4 100755
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -15,145 +15,6 @@ pkg_dependencies="coturn acl"
 # EXPERIMENTAL HELPERS
 #=================================================
 
-# Send an email to inform the administrator
-#
-# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type]
-# | arg: -m --app_message= - The file with the content to send to the administrator.
-# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root
-#       example: "root admin@domain"
-#       If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you
-#       example: "root admin@domain user1 user2"
-# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade'
-ynh_send_readme_to_admin() {
-        # Declare an array to define the options of this helper.
-        declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= )
-        local app_message
-        local recipients
-        local type
-        # Manage arguments with getopts
-
-        ynh_handle_getopts_args "$@"
-        app_message="${app_message:-}"
-        recipients="${recipients:-root}"
-        type="${type:-install}"
-
-        # Get the value of admin_mail_html
-        admin_mail_html=$(ynh_app_setting_get $app admin_mail_html)
-        admin_mail_html="${admin_mail_html:-0}"
-
-        # Retrieve the email of users
-        find_mails () {
-                local list_mails="$1"
-                local mail
-                local recipients=" "
-                # Read each mail in argument
-                for mail in $list_mails
-                do
-                        # Keep root or a real email address as it is
-                        if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@"
-                        then
-                                recipients="$recipients $mail"
-                        else
-                                # But replace an user name without a domain after by its email
-                                if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null)
-                                then
-                                        recipients="$recipients $mail"
-                                fi
-                        fi
-                done
-                echo "$recipients"
-        }
-        recipients=$(find_mails "$recipients")
-
-        # Subject base
-        local mail_subject="☁️🆈🅽🅷☁️: \`$app\`"
-
-        # Adapt the subject according to the type of mail required.
-        if [ "$type" = "backup" ]; then
-                mail_subject="$mail_subject has just been backup."
-        elif [ "$type" = "change_url" ]; then
-                mail_subject="$mail_subject has just been moved to a new URL!"
-        elif [ "$type" = "remove" ]; then
-                mail_subject="$mail_subject has just been removed!"
-        elif [ "$type" = "restore" ]; then
-                mail_subject="$mail_subject has just been restored!"
-        elif [ "$type" = "upgrade" ]; then
-                mail_subject="$mail_subject has just been upgraded!"
-        else    # install
-                mail_subject="$mail_subject has just been installed!"
-        fi
-
-        local mail_message="This is an automated message from your beloved YunoHost server.
-
-Specific information for the application $app.
-
-$(if [ -n "$app_message" ]
-then
-        cat "$app_message"
-else
-        echo "...No specific information..."
-fi)
-
----
-Automatic diagnosis data from YunoHost
-
-__PRE_TAG1__$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')__PRE_TAG2__"
-
-        # Store the message into a file for further modifications.
-        echo "$mail_message" > mail_to_send
-
-        # If a html email is required. Apply html tags to the message.
-        if [ "$admin_mail_html" -eq 1 ]
-        then
-                # Insert 'br' tags at each ending of lines.
-                ynh_replace_string "$" "
" mail_to_send - - # Insert starting HTML tags - sed --in-place '1s@^@\n\n\n\n@' mail_to_send - - # Keep tabulations - ynh_replace_string " " "\ \ " mail_to_send - ynh_replace_string "\t" "\ \ " mail_to_send - - # Insert url links tags - ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "\1" mail_to_send - - # Insert pre tags - ynh_replace_string "__PRE_TAG1__" "
" mail_to_send
-                ynh_replace_string "__PRE_TAG2__" "<\pre>" mail_to_send
-
-                # Insert finishing HTML tags
-                echo -e "\n\n" >> mail_to_send
-
-        # Otherwise, remove tags to keep a plain text.
-        else
-                # Remove URL tags
-                ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send
-                ynh_replace_string "__URL_TAG2__" ": " mail_to_send
-
-                # Remove PRE tags
-                ynh_replace_string "__PRE_TAG[1-2]__" "" mail_to_send
-        fi
-
-        # Define binary to use for mail command
-        if [ -e /usr/bin/bsd-mailx ]
-        then
-                local mail_bin=/usr/bin/bsd-mailx
-        else
-                local mail_bin=/usr/bin/mail.mailutils
-        fi
-
-        if [ "$admin_mail_html" -eq 1 ]
-        then
-                content_type="text/html"
-        else
-                content_type="text/plain"
-        fi
-
-        # Send the email to the recipients
-        cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients"
-}
-
 #=================================================
 # FUTURE OFFICIAL HELPERS
 #=================================================
diff --git a/scripts/change_url b/scripts/change_url
index 0dbac85..e64cc7c 100755
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -70,7 +70,7 @@ fi
 #=================================================
 ynh_script_progression --message="Stopping a systemd service..." --weight=1
 
-ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log"
+ynh_systemd_action --service_name=$app --action=stop --log_path="/var/log/$app/$app.log"
 
 #=================================================
 # MODIFY URL IN NGINX CONF
@@ -106,14 +106,14 @@ fi
 #=================================================
 # START SYSTEMD SERVICE
 #=================================================
-ynh_script_progression --message="Starting a systemd service..." --time --weight=3
+ynh_script_progression --message="Starting a systemd service..." --weight=3
 
-ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log"
+ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log"
 
 #=================================================
 # RELOAD NGINX
 #=================================================
-ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1
+ynh_script_progression --message="Reloading NGINX web server..." --weight=1
 
 ynh_systemd_action --service_name=nginx --action=reload
 
diff --git a/scripts/install b/scripts/install
index 1c3a158..b06fb65 100755
--- a/scripts/install
+++ b/scripts/install
@@ -27,10 +27,7 @@ domain=$YNH_APP_ARG_DOMAIN
 path_url="/"
 admin=$YNH_APP_ARG_ADMIN
 is_public=$YNH_APP_ARG_IS_PUBLIC
-email=$(ynh_user_get_info --username=$admin --key=mail)
-ynh_print_OFF
 password=$YNH_APP_ARG_PASSWORD
-ynh_print_ON
 group_name=$YNH_APP_ARG_GROUP_NAME
 architecture=$(ynh_detect_arch)
 
@@ -55,7 +52,6 @@ ynh_script_progression --message="Storing installation settings..." --weight=4
 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=admin --value=$admin
-ynh_app_setting_set --app=$app --key=is_public --value=$is_public
 ynh_app_setting_set --app=$app --key=group_name --value="$group_name"
 ynh_app_setting_set --app=$app --key=password --value=$password
 
@@ -67,7 +63,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam
@@ -84,21 +80,15 @@ ynh_script_progression --message="Finding an available port..." --weight=3
 
 # Find an available port
 port=$(ynh_find_port --port=8443)
-turnserver_tls_port=$(ynh_find_port --port=5349)
-turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1)))
-cli_port=$(ynh_find_port --port=5766)
+turnserver_port=$(ynh_find_port --port=1194)
 
-ynh_app_setting_set --app=$app --key=port --value=$port
-
-# Open the port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port
+# Open the ports
+ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 # Store opened ports
 ynh_app_setting_set --app=$app --key=port --value=$port
-ynh_app_setting_set --app=$app --key=turnserver_tls_port --value=$turnserver_tls_port
-ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port
-ynh_app_setting_set --app=$app --key=cli_port --value=$cli_port
+ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
 
 #=================================================
 # INSTALL DEPENDENCIES
@@ -187,8 +177,8 @@ ynh_add_config --template="../conf/coturn/turnserver.conf" --destination="$cotur
 
 # Get public IP and set as external IP for coturn
 # note: '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
 then
@@ -248,7 +238,7 @@ chown -R $app:$app $final_path
 chmod -R 755 $final_path
 chown -R $app:root /var/log/$app
 chown -R $app:root /etc/$app
-chown turnserver:root $coturn_config_path
+chown turnserver:root /etc/$app/coturn.conf
 chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
@@ -259,8 +249,8 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
-yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
@@ -269,7 +259,7 @@ ynh_script_progression --message="Starting a systemd service..." --weight=1
 
 # Start a systemd service
 ynh_systemd_action --service_name=$app --action=restart --log_path="/var/log/$app/$app.log"
-ynh_systemd_action --service_name=coturn-$app.service --action=restart
+ynh_systemd_action --service_name=coturn-$app.service --action=restart --log_path="/var/log/$app/turnserver.log"
 
 #=================================================
 # SETUP SSOWAT
@@ -289,23 +279,6 @@ ynh_script_progression --message="Reloading NGINX web server..." --weight=2
 
 ynh_systemd_action --service_name=nginx --action=reload
 
-#=================================================
-# SEND A README FOR THE ADMIN
-#=================================================
-
-# WARNING : theses command are used in INSTALL, RESTORE
-# For any update do it in all files
-
-echo "Galène was successfully installed :)
-
-Galène is now accesible at this adress: https://$domain
-
-Galène implements a TURN server (for VoIP), to have this fully functional please read the 'TURN server' section in the README available here: https://github.com/YunoHost-Apps/galene_ynh .
-
-If you're facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/galene_ynh" > mail_to_send
-
-ynh_send_readme_to_admin --app_message="mail_to_send" --type="install"
-
 #=================================================
 # END OF SCRIPT
 #=================================================
diff --git a/scripts/remove b/scripts/remove
index 220f571..78cdef0 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -19,8 +19,7 @@ app=$YNH_APP_INSTANCE_NAME
 domain=$(ynh_app_setting_get --app=$app --key=domain)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 port=$(ynh_app_setting_get --app=$app --key=port)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
 
 #=================================================
 # STANDARD REMOVE
@@ -86,17 +85,16 @@ ynh_remove_logrotate
 #=================================================
 # CLOSE A PORT
 #=================================================
+ynh_script_progression --message="Closing ports..." --weight=1
 
-if yunohost firewall list | grep -q "\- $turnserver_tls_port$"
+if yunohost firewall list | grep -q "\- $port$"
 then
-    ynh_script_progression --message="Closing port $turnserver_tls_port..." --weight=1
-    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_tls_port 
+	ynh_exec_warn_less yunohost firewall disallow TCP $port
 fi
 
-if yunohost firewall list | grep -q "\- $turnserver_alt_tls_port$"
+if yunohost firewall list | grep -q "\- $turnserver_port$"
 then
-    ynh_script_progression --message="Closing port $turnserver_alt_tls_port..." --weight=1
-    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_alt_tls_port
+    ynh_exec_warn_less yunohost firewall disallow Both $turnserver_port 
 fi
 
 #=================================================
diff --git a/scripts/restore b/scripts/restore
index 2aa98d0..a4c0dd8 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -31,12 +31,9 @@ domain=$(ynh_app_setting_get --app=$app --key=domain)
 path_url=$(ynh_app_setting_get --app=$app --key=path)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
-cli_port=$(ynh_app_setting_get --app=$app --key=cli_port)
-ynh_print_OFF
+port=$(ynh_app_setting_get --app=$app --key=port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
-ynh_print_ON
 
 #=================================================
 # CHECK IF THE APP CAN BE RESTORED
@@ -99,8 +96,8 @@ systemctl enable coturn-$app.service --quiet
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
-yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
@@ -108,7 +105,6 @@ yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port
 ynh_script_progression --message="Starting a systemd service..." --weight=3
 
 ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log"
-yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port
 
 #=================================================
 # CREATE A DH FILE
@@ -118,7 +114,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam
@@ -126,48 +122,13 @@ then
     chmod 640 /etc/ssl/private/dh2048.pem
 fi
 
-# #=================================================
-# # RECONFIGURE THE TURNSERVER
-# #=================================================
-# ynh_script_progression --message="Reconfiguring Coturn..." --weight=23
-
-# # To be sure that at the restoration the IP address in coturn config is the same as the real address we remake the coturn config
-
-# # WARNING : these commands are used in INSTALL, UPGRADE
-# # For any update do it in all files
-
-# coturn_config_path="/etc/$app/coturn.conf"
-
-# cp ../settings/conf/coturn/turnserver.conf "$coturn_config_path"
-
-# ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__DOMAIN__ --replace_string=$domain --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__TLS_PORT__ --replace_string=$turnserver_tls_port --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__TLS_ALT_PORT__ --replace_string=$turnserver_alt_tls_port --target_file="$coturn_config_path"
-# ynh_replace_string --match_string=__CLI_PORT__ --replace_string=$cli_port --target_file="$coturn_config_path"
-# ynh_print_OFF
-# ynh_replace_string --match_string=__TURNPWD__ --replace_string=$turnserver_pwd --target_file="$coturn_config_path"
-# ynh_print_ON
-
-# # Get public IP and set as external IP for coturn
-# # note : '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-# public_ip4="$(curl ip.yunohost.org)" || true
-# public_ip6="$(curl ipv6.yunohost.org)" || true
-
-# if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
-# then
-#     echo "external-ip=${public_ip4}/${public_ip6}" >> "$coturn_config_path"
-# fi
-
-# ynh_store_file_checksum --file="$coturn_config_path"
-
 #=================================================
 # OPEN THE PORT
 #=================================================
 
 # Ouvre le port dans le firewall
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_tls_port
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_alt_tls_port
+ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 #=================================================
 # RESTORE USER RIGHTS
@@ -192,19 +153,6 @@ setfacl -R -m user:turnserver:rwX  /var/log/$app
 
 ynh_restore_file --origin_path="/etc/logrotate.d/$app"
 
-#=================================================
-# SEND A README FOR THE ADMIN
-#=================================================
-
-# WARNING : theses command are used in INSTALL, RESTORE
-# For any update do it in all files
-
-echo "Galène also implements a TURN server (for VoIP), to have this fully functional please read the 'Turnserver' section in the README available here: https://github.com/YunoHost-Apps/galene_ynh .
-
-If you're facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/galene_ynh" > mail_to_send
-
-ynh_send_readme_to_admin --app_message="mail_to_send" --type="restore"
-
 #=================================================
 # GENERIC FINALIZATION
 #=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index d841849..5191df2 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -19,14 +19,11 @@ app=$YNH_APP_INSTANCE_NAME
 domain=$(ynh_app_setting_get --app=$app --key=domain)
 path_url=$(ynh_app_setting_get --app=$app --key=path)
 admin=$(ynh_app_setting_get --app=$app --key=admin)
-is_public=$(ynh_app_setting_get --app=$app --key=is_public)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 password=$(ynh_app_setting_get --app=$app --key=password)
 group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
-turnserver_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_tls_port)
-turnserver_alt_tls_port=$(ynh_app_setting_get --app=$app --key=turnserver_alt_tls_port)
-cli_port=$(ynh_app_setting_get --app=$app --key=cli_port)
+turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
 architecture=$(ynh_detect_arch)
 
@@ -47,6 +44,12 @@ if [ -z "$final_path" ]; then
 	ynh_app_setting_set --app=$app --key=final_path --value=$final_path
 fi
 
+if [ -z "$turnserver_port" ]; then
+    turnserver_port=$(ynh_find_port --port=1194)
+    ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
+    ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+fi
+
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================
@@ -111,8 +114,8 @@ then
 
 	# Recreate certificates
 	pushd "$final_path/data"
-	   ynh_exec_warn_less openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem \
-	   -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress="
+        ynh_exec_warn_less openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem \
+        -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress="
         chmod 640 {key.pem,cert.pem}
     popd
 fi
@@ -137,13 +140,9 @@ then
     ynh_replace_string --match_string="TURNSERVER_ENABLED=1" --replace_string="TURNSERVER_ENABLED=0" --target_file=/etc/default/coturn
 
     # Set a port for each service in turnserver
-    turnserver_alt_tls_port=$(ynh_find_port --port=$((turnserver_tls_port+1)))
-    cli_port=$(ynh_find_port --port=5766)
-
-    ynh_app_setting_set --app=$app --key=turnserver_alt_tls_port --value=$turnserver_alt_tls_port
-    ynh_app_setting_set --app=$app --key=cli_port --value=$cli_port
-
-    yunohost firewall allow Both $turnserver_alt_tls_port > /dev/null 2>&1
+    turnserver_port=$(ynh_find_port --port=1194)
+    ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
+    ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
     #=================================================
     # MAKE A CLEAN LOGROTATE CONFIG
@@ -160,7 +159,7 @@ ynh_script_progression --message="Creating a dhparam file..." --weight=3
 # WARNING : theses command are used in INSTALL, UPGRADE, RESTORE
 # For any update do it in all files
 
-# Make dhparam cert for Galène if it doesn't exist
+# Make dhparam cert for Coturn if it doesn't exist
 if [ ! -e /etc/ssl/private/dh2048.pem ]
 then
     ynh_exec_warn_less openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048 -dsaparam
@@ -184,8 +183,8 @@ ynh_add_config --template="../conf/coturn/turnserver.conf" --destination="$cotur
 
 # Get public IP and set as external IP for coturn
 # note : '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" )
 then
@@ -227,6 +226,7 @@ ynh_script_progression --message="Making sure dedicated system user exists..." -
 
 # Create a dedicated user (if not existing)
 ynh_system_user_create --username=$app
+ynh_system_user_create --username=turnserver
 adduser turnserver ssl-cert
 
 #=================================================
@@ -267,15 +267,15 @@ ynh_use_logrotate --non-append
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
-yunohost service add coturn-$app --needs_exposed_ports $turnserver_tls_port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
 # START SYSTEMD SERVICE
 #=================================================
 ynh_script_progression --message="Starting a systemd service..." --weight=1
 
-ynh_systemd_action --service_name=coturn-$app.service --action=restart
+ynh_systemd_action --service_name=coturn-$app.service --action=restart --log_path="/var/log/$app/turnserver.log"
 ynh_systemd_action --service_name=$app --action=restart --log_path="/var/log/$app/$app.log"
 
 #=================================================
diff --git a/sources/Coturn_config_rotate.sh b/sources/Coturn_config_rotate.sh
index da3fcbe..f03112d 100644
--- a/sources/Coturn_config_rotate.sh
+++ b/sources/Coturn_config_rotate.sh
@@ -4,8 +4,8 @@ source /usr/share/yunohost/helpers
 
 external_IP_line="external-ip=__IPV4__/__IPV6__"
 
-public_ip4="$(curl ip.yunohost.org)" || true
-public_ip6="$(curl ipv6.yunohost.org)" || true
+public_ip4="$(curl -s ip.yunohost.org)" || true
+public_ip6="$(curl -s ipv6.yunohost.org)" || true
 
 if [ -n "$public_ip4" ] && ynh_validate_ip4 --ip_address="$public_ip4"
 then

From 3a2826016e539920c1354a52c261ceb25319dfa2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Wed, 3 Mar 2021 10:44:47 +0100
Subject: [PATCH 26/74] Upgrade to 0.3.2 (#27)

---
 README.md      | 2 +-
 README_fr.md   | 2 +-
 conf/386.src   | 4 ++--
 conf/amd64.src | 4 ++--
 conf/arm6.src  | 4 ++--
 conf/arm64.src | 4 ++--
 conf/arm7.src  | 4 ++--
 manifest.json  | 2 +-
 8 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index 3e4bec5..faeb7ca 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.1
+**Shipped version:** 0.3.2
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index a866fd6..ea3a363 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.1
+**Version incluse :** 0.3.2
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index da84785..6e7b8a0 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_386.tar.gz
-SOURCE_SUM=6e09e7b08baa95c695a482fadf2c0e3cd382ebba440bbe003d36acba6e07f7d8
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_386.tar.gz
+SOURCE_SUM=738349eec0631415478030fd77dac776fd45d71eaeb9083f0f5ae514fb6ad5a6
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 7311926..9cc4176 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_amd64.tar.gz
-SOURCE_SUM=6940bd0ffc8ce2f4f28c0e752e90ca1858e3f527a318cd45d65a803fce134d61
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_amd64.tar.gz
+SOURCE_SUM=7b3fa9ce5c06162f088ce0476815a0bb659f29c47bcd6d326757364062b4796b
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 15f2729..3329d00 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm6.tar.gz
-SOURCE_SUM=da5277e10ab825d03b56bc3ef35f06a99ddcd1852b38964fc7be3b2efe4fd3c1
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm6.tar.gz
+SOURCE_SUM=ee6230be9d9c4541eca9c4666205d2b338bb544877f55f84bc7112a72dbd83f7
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 260971a..1e2252a 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm64.tar.gz
-SOURCE_SUM=0c3b91ba6305cb8e517aeca3989180f670cd33efd928537303a7d8612be210b6
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm64.tar.gz
+SOURCE_SUM=83b915cdcbcc0c6f414ca1ee7b20fc7c4bd9c90e2ee7cb7bb4be4e107de0fd9e
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 114a2a0..782cf97 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm7.tar.gz
-SOURCE_SUM=c7be91c30134bf716562b111f34d5bfe6f8b50f5a298667fa1fec0ebb4fd78c7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm7.tar.gz
+SOURCE_SUM=bdc51c94caf19928cb03d8f43727c47df17d2396fc5d8b4c7532fa0810103c81
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index 515a000..9629fab 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.1~ynh1",
+    "version": "0.3.2~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From 21b0f1e2f109b1a862505cf53f82b0f4b25a63f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Wed, 3 Mar 2021 10:48:24 +0100
Subject: [PATCH 27/74] Testing (#28)

* Upgrade to 0.3.2 (#27)
---
 README.md      | 2 +-
 README_fr.md   | 2 +-
 conf/386.src   | 4 ++--
 conf/amd64.src | 4 ++--
 conf/arm6.src  | 4 ++--
 conf/arm64.src | 4 ++--
 conf/arm7.src  | 4 ++--
 manifest.json  | 2 +-
 8 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index 3e4bec5..faeb7ca 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.1
+**Shipped version:** 0.3.2
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index a866fd6..ea3a363 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.1
+**Version incluse :** 0.3.2
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index da84785..6e7b8a0 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_386.tar.gz
-SOURCE_SUM=6e09e7b08baa95c695a482fadf2c0e3cd382ebba440bbe003d36acba6e07f7d8
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_386.tar.gz
+SOURCE_SUM=738349eec0631415478030fd77dac776fd45d71eaeb9083f0f5ae514fb6ad5a6
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 7311926..9cc4176 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_amd64.tar.gz
-SOURCE_SUM=6940bd0ffc8ce2f4f28c0e752e90ca1858e3f527a318cd45d65a803fce134d61
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_amd64.tar.gz
+SOURCE_SUM=7b3fa9ce5c06162f088ce0476815a0bb659f29c47bcd6d326757364062b4796b
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 15f2729..3329d00 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm6.tar.gz
-SOURCE_SUM=da5277e10ab825d03b56bc3ef35f06a99ddcd1852b38964fc7be3b2efe4fd3c1
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm6.tar.gz
+SOURCE_SUM=ee6230be9d9c4541eca9c4666205d2b338bb544877f55f84bc7112a72dbd83f7
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 260971a..1e2252a 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm64.tar.gz
-SOURCE_SUM=0c3b91ba6305cb8e517aeca3989180f670cd33efd928537303a7d8612be210b6
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm64.tar.gz
+SOURCE_SUM=83b915cdcbcc0c6f414ca1ee7b20fc7c4bd9c90e2ee7cb7bb4be4e107de0fd9e
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 114a2a0..782cf97 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.1/galene_0.3.1_Linux_arm7.tar.gz
-SOURCE_SUM=c7be91c30134bf716562b111f34d5bfe6f8b50f5a298667fa1fec0ebb4fd78c7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm7.tar.gz
+SOURCE_SUM=bdc51c94caf19928cb03d8f43727c47df17d2396fc5d8b4c7532fa0810103c81
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index 515a000..9629fab 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.1~ynh1",
+    "version": "0.3.2~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From ab8c0be3b37668184d4b905970fa26c018bca349 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Mon, 8 Mar 2021 09:52:10 +0100
Subject: [PATCH 28/74] Group description (#29)

* Allow group description on install
---
 README.md           |  2 +-
 README_fr.md        |  2 +-
 conf/groupname.json |  2 +-
 manifest.json       | 14 +++++++++++++-
 scripts/install     |  2 ++
 5 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index faeb7ca..d10fcbc 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@ To check if Galène can connect to the TURN server, connect to Galène as operat
 ## Documentation
 
  * Official documentation: https://galene.org/
- * YunoHost documentation: https://yunohost.org/#/app_galene
+ * YunoHost documentation: https://yunohost.org/en/app_galene
 
 ## YunoHost specific features
 
diff --git a/README_fr.md b/README_fr.md
index ea3a363..4a0c64c 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -58,7 +58,7 @@ Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à G
 ## Documentation
 
  * Documentation officielle : https://galene.org/
- * Documentation YunoHost : https://yunohost.org/#/app_galene_fr
+ * Documentation YunoHost : https://yunohost.org/fr/app_galene
 
 ## Caractéristiques spécifiques YunoHost
 
diff --git a/conf/groupname.json b/conf/groupname.json
index 7a10f63..2051bb0 100644
--- a/conf/groupname.json
+++ b/conf/groupname.json
@@ -1,7 +1,7 @@
 {
     "op": [{"username": "__ADMIN__", "password": "__PASSWORD__"}],
     "presenter": [{}],
-    "description": "a human-readable description of the group; this is displayed on the landing page for public groups.",
+    "description": "__GROUP_DESCRIPTION__",
     "public": true,
     "allow-anonymous": true,
     "allow-recording": true,
diff --git a/manifest.json b/manifest.json
index 9629fab..bb3b5a4 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh1",
+    "version": "0.3.2~ynh2",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
@@ -75,6 +75,18 @@
                 },
                 "default": "public",
                 "example": "public"
+            },
+            {
+                "name": "group_description",
+                "type": "string",
+                "ask": {
+                    "en": "Choose a description for the group you want to create",
+                    "fr": "Décrivez le groupe que vous souhaitez créer"
+                },
+                "help": {
+                    "en": "Add a human-readable description of the group; this is displayed on the landing page for public groups.",
+                    "fr": "Ajoutez une description du groupe; ceci est affiché sur la page de destination des groupes publics."
+                }
             }
         ]
     }
diff --git a/scripts/install b/scripts/install
index b06fb65..f3c6364 100755
--- a/scripts/install
+++ b/scripts/install
@@ -29,6 +29,7 @@ admin=$YNH_APP_ARG_ADMIN
 is_public=$YNH_APP_ARG_IS_PUBLIC
 password=$YNH_APP_ARG_PASSWORD
 group_name=$YNH_APP_ARG_GROUP_NAME
+group_description=$YNH_APP_ARG_GROUP_DESCRIPTION
 architecture=$(ynh_detect_arch)
 
 app=$YNH_APP_INSTANCE_NAME
@@ -53,6 +54,7 @@ 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=admin --value=$admin
 ynh_app_setting_set --app=$app --key=group_name --value="$group_name"
+ynh_app_setting_set --app=$app --key=group_description --value="$group_description"
 ynh_app_setting_set --app=$app --key=password --value=$password
 
 #=================================================

From d37c1e399825dce1050914675b6f92b7168a0c7a Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 8 Mar 2021 10:15:18 +0100
Subject: [PATCH 29/74] Add -turn command-line option in systemd

---
 conf/systemd.service | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conf/systemd.service b/conf/systemd.service
index cff556e..bc82d7d 100644
--- a/conf/systemd.service
+++ b/conf/systemd.service
@@ -8,7 +8,7 @@ Type=simple
 WorkingDirectory=__FINALPATH__/
 User=__APP__
 Group=__APP__
-ExecStart=__FINALPATH__/galene
+ExecStart=__FINALPATH__/galene -turn :__TURNSERVER_PORT__
 LimitNOFILE=65536
 
 [Install]

From 50738f6e1be1717f3394da8dc3b57827561e8a4e Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 8 Mar 2021 10:19:28 +0100
Subject: [PATCH 30/74] Update install

---
 scripts/install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/install b/scripts/install
index f3c6364..fd1f711 100755
--- a/scripts/install
+++ b/scripts/install
@@ -151,7 +151,7 @@ adduser turnserver ssl-cert
 ynh_script_progression --message="Configuring a systemd service..." --weight=1
 
 # Create a dedicated systemd config
-ynh_add_systemd_config
+ynh_add_systemd_config --others_var="$turnserver_port"
 
 mkdir -p /var/log/$app
 mkdir -p /etc/$app

From 92a7699c29fd446becdffe481b388b91375396e4 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 8 Mar 2021 10:25:19 +0100
Subject: [PATCH 31/74] Update install

---
 scripts/install | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/install b/scripts/install
index fd1f711..85b9c20 100755
--- a/scripts/install
+++ b/scripts/install
@@ -150,8 +150,10 @@ adduser turnserver ssl-cert
 #=================================================
 ynh_script_progression --message="Configuring a systemd service..." --weight=1
 
+ynh_replace_string --match_string="__TURNSERVER_PORT__" --replace_string="$turnserver_port" --target_file="../conf/systemd.service"
+
 # Create a dedicated systemd config
-ynh_add_systemd_config --others_var="$turnserver_port"
+ynh_add_systemd_config
 
 mkdir -p /var/log/$app
 mkdir -p /etc/$app

From 45c519aafcd09361907a55adf1caf325b8109309 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 8 Mar 2021 10:35:29 +0100
Subject: [PATCH 32/74] Fix

---
 conf/systemd.service | 2 +-
 scripts/install      | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/conf/systemd.service b/conf/systemd.service
index bc82d7d..cff556e 100644
--- a/conf/systemd.service
+++ b/conf/systemd.service
@@ -8,7 +8,7 @@ Type=simple
 WorkingDirectory=__FINALPATH__/
 User=__APP__
 Group=__APP__
-ExecStart=__FINALPATH__/galene -turn :__TURNSERVER_PORT__
+ExecStart=__FINALPATH__/galene
 LimitNOFILE=65536
 
 [Install]
diff --git a/scripts/install b/scripts/install
index 85b9c20..f3c6364 100755
--- a/scripts/install
+++ b/scripts/install
@@ -150,8 +150,6 @@ adduser turnserver ssl-cert
 #=================================================
 ynh_script_progression --message="Configuring a systemd service..." --weight=1
 
-ynh_replace_string --match_string="__TURNSERVER_PORT__" --replace_string="$turnserver_port" --target_file="../conf/systemd.service"
-
 # Create a dedicated systemd config
 ynh_add_systemd_config
 

From 79ac578940a0789d1b80f2dcff9f273915cbc17d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Mon, 8 Mar 2021 11:09:14 +0100
Subject: [PATCH 33/74] Testing (#30)

* Allow group description on install
---
 README.md           |  2 +-
 README_fr.md        |  2 +-
 conf/groupname.json |  2 +-
 manifest.json       | 14 +++++++++++++-
 scripts/install     |  2 ++
 5 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index faeb7ca..d10fcbc 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@ To check if Galène can connect to the TURN server, connect to Galène as operat
 ## Documentation
 
  * Official documentation: https://galene.org/
- * YunoHost documentation: https://yunohost.org/#/app_galene
+ * YunoHost documentation: https://yunohost.org/en/app_galene
 
 ## YunoHost specific features
 
diff --git a/README_fr.md b/README_fr.md
index ea3a363..4a0c64c 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -58,7 +58,7 @@ Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à G
 ## Documentation
 
  * Documentation officielle : https://galene.org/
- * Documentation YunoHost : https://yunohost.org/#/app_galene_fr
+ * Documentation YunoHost : https://yunohost.org/fr/app_galene
 
 ## Caractéristiques spécifiques YunoHost
 
diff --git a/conf/groupname.json b/conf/groupname.json
index 7a10f63..2051bb0 100644
--- a/conf/groupname.json
+++ b/conf/groupname.json
@@ -1,7 +1,7 @@
 {
     "op": [{"username": "__ADMIN__", "password": "__PASSWORD__"}],
     "presenter": [{}],
-    "description": "a human-readable description of the group; this is displayed on the landing page for public groups.",
+    "description": "__GROUP_DESCRIPTION__",
     "public": true,
     "allow-anonymous": true,
     "allow-recording": true,
diff --git a/manifest.json b/manifest.json
index 9629fab..bb3b5a4 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh1",
+    "version": "0.3.2~ynh2",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
@@ -75,6 +75,18 @@
                 },
                 "default": "public",
                 "example": "public"
+            },
+            {
+                "name": "group_description",
+                "type": "string",
+                "ask": {
+                    "en": "Choose a description for the group you want to create",
+                    "fr": "Décrivez le groupe que vous souhaitez créer"
+                },
+                "help": {
+                    "en": "Add a human-readable description of the group; this is displayed on the landing page for public groups.",
+                    "fr": "Ajoutez une description du groupe; ceci est affiché sur la page de destination des groupes publics."
+                }
             }
         ]
     }
diff --git a/scripts/install b/scripts/install
index b06fb65..f3c6364 100755
--- a/scripts/install
+++ b/scripts/install
@@ -29,6 +29,7 @@ admin=$YNH_APP_ARG_ADMIN
 is_public=$YNH_APP_ARG_IS_PUBLIC
 password=$YNH_APP_ARG_PASSWORD
 group_name=$YNH_APP_ARG_GROUP_NAME
+group_description=$YNH_APP_ARG_GROUP_DESCRIPTION
 architecture=$(ynh_detect_arch)
 
 app=$YNH_APP_INSTANCE_NAME
@@ -53,6 +54,7 @@ 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=admin --value=$admin
 ynh_app_setting_set --app=$app --key=group_name --value="$group_name"
+ynh_app_setting_set --app=$app --key=group_description --value="$group_description"
 ynh_app_setting_set --app=$app --key=password --value=$password
 
 #=================================================

From a44a6cdddcc1ec2e18220ef4c0fc1d909b9ad130 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 8 Mar 2021 11:27:36 +0100
Subject: [PATCH 34/74] Update check_process

---
 check_process | 1 +
 1 file changed, 1 insertion(+)

diff --git a/check_process b/check_process
index a650c76..ba2cc8f 100644
--- a/check_process
+++ b/check_process
@@ -11,6 +11,7 @@
 		is_public=1	(PUBLIC|public=1|private=0)
 		password="pass"
 		group_name="public"
+		group_description="My public group"
 	; Checks
 		pkg_linter=1
 		setup_sub_dir=0

From 031ac1164d39735a923f1823972b754bd3983b3c Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Wed, 10 Mar 2021 09:20:58 +0100
Subject: [PATCH 35/74] Fix

---
 scripts/install | 24 ++++++++++++++----------
 scripts/upgrade |  5 ++---
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/scripts/install b/scripts/install
index f3c6364..d76b357 100755
--- a/scripts/install
+++ b/scripts/install
@@ -153,12 +153,24 @@ ynh_script_progression --message="Configuring a systemd service..." --weight=1
 # Create a dedicated systemd config
 ynh_add_systemd_config
 
-mkdir -p /var/log/$app
 mkdir -p /etc/$app
 # Create systemd service for turnserver
 cp ../conf/coturn/default_coturn /etc/default/coturn-$app
 ynh_add_systemd_config --service=coturn-$app --template=coturn-galene.service
 
+#=================================================
+# SETUP LOGROTATE
+#=================================================
+ynh_script_progression --message="Configuring log rotation..." --weight=1
+
+# Create log directory
+mkdir -p /var/log/$app
+touch /var/log/$app/$app.log
+chown $app -R /var/log/$app
+
+# Setup logrotate
+ynh_use_logrotate --logfile "/var/log/$app"
+
 #=================================================
 # SET COTURN CONFIG
 #=================================================
@@ -211,13 +223,6 @@ ynh_store_file_checksum --file="$final_path/groups/$group_name.json"
 ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
 ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
 
-#=================================================
-# SETUP LOGROTATE
-#=================================================
-ynh_script_progression --message="Configuring log rotation..." --weight=1
-
-ynh_use_logrotate --logfile "/var/log/$app"
-
 #=================================================
 # ADD SCRIPT FOR COTURN CRON AND APP SERVICE
 #=================================================
@@ -236,9 +241,8 @@ chmod +x $final_path/Coturn_config_rotate.sh
 #=================================================
 
 # Set permissions to app files
-chown -R $app:$app $final_path
+chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app:root /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root /etc/$app/coturn.conf
 chmod -R u=rwX,g=rX,o= /etc/$app
diff --git a/scripts/upgrade b/scripts/upgrade
index 5191df2..dee0696 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -21,7 +21,6 @@ path_url=$(ynh_app_setting_get --app=$app --key=path)
 admin=$(ynh_app_setting_get --app=$app --key=admin)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 password=$(ynh_app_setting_get --app=$app --key=password)
-group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
 turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
@@ -244,9 +243,9 @@ ynh_add_systemd_config
 #=================================================
 
 # Set permissions on app files
-chown -R $app:$app $final_path
+chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app:root /var/log/$app
+chown -R $app /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root $coturn_config_path
 chmod -R u=rwX,g=rX,o= /etc/$app

From 6fa6f96276ce2bb42cd24d95741f6d71daffb7f7 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 15 Mar 2021 09:07:27 +0100
Subject: [PATCH 36/74] Update manifest.json

---
 manifest.json | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)

diff --git a/manifest.json b/manifest.json
index bb3b5a4..099effa 100644
--- a/manifest.json
+++ b/manifest.json
@@ -14,7 +14,7 @@
         "email": ""
     },
     "requirements": {
-        "yunohost": ">= 4.0.8"
+        "yunohost": ">= 4.1.7"
     },
     "multi_instance": false,
     "services": [
@@ -25,28 +25,16 @@
             {
                 "name": "domain",
                 "type": "domain",
-                "ask": {
-                    "en": "Choose a domain name for Galène",
-                    "fr": "Choisissez un nom de domaine pour Galène"
-                },
                 "example": "example.com"
             },
             {
                 "name": "admin",
                 "type": "user",
-                "ask": {
-                    "en": "Choose an admin user",
-                    "fr": "Choisissez l'administrateur"
-                },
                 "example": "johndoe"
             },
             {
                 "name": "password",
                 "type": "password",
-                "ask": {
-                    "en": "Set the administrator password",
-                    "fr": "Définissez le mot de passe administrateur"
-                },
                 "help": {
                     "en": "Set the administrator password (between 8 and 30 characters)",
                     "fr": "Définissez le mot de passe administrateur (entre 8 et 30 caractères)"
@@ -56,10 +44,6 @@
             {
                 "name": "is_public",
                 "type": "boolean",
-                "ask": {
-                    "en": "Is it a public application?",
-                    "fr": "Est-ce une application publique ?"
-                },
                 "help": {
                     "en": "If enabled, Galène will be accessible by people who do not have an account. This can be changed later via the webadmin.",
                     "fr": "Si cette case est cochée, Galène sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin."

From 98b973defc30eba855cc6f4d7eacaca0b07c5a5c Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 15 Mar 2021 10:14:32 +0100
Subject: [PATCH 37/74] Update upgrade

---
 scripts/upgrade | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/scripts/upgrade b/scripts/upgrade
index dee0696..9f75f7e 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -49,6 +49,13 @@ if [ -z "$turnserver_port" ]; then
     ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 fi
 
+# Cleaning legacy permissions
+if ynh_legacy_permissions_exists; then
+    ynh_legacy_permissions_delete_all
+
+    ynh_app_setting_delete --app=$app --key=is_public
+fi
+
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================

From 7046a437bec6398f6354d722ee459d1a19bca845 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Tue, 23 Mar 2021 22:48:46 +0100
Subject: [PATCH 38/74] Update manifest.json

---
 manifest.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/manifest.json b/manifest.json
index 099effa..4b01449 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh2",
+    "version": "0.3.2~ynh3",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From e6e321fe1e1e4c63d045fdb8cc19492c87bf665a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Tue, 23 Mar 2021 22:49:51 +0100
Subject: [PATCH 39/74] Testing (#31)

* Cleaning up
---
 manifest.json   | 20 ++------------------
 scripts/install | 24 ++++++++++++++----------
 scripts/upgrade | 12 +++++++++---
 3 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/manifest.json b/manifest.json
index bb3b5a4..4b01449 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh2",
+    "version": "0.3.2~ynh3",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
@@ -14,7 +14,7 @@
         "email": ""
     },
     "requirements": {
-        "yunohost": ">= 4.0.8"
+        "yunohost": ">= 4.1.7"
     },
     "multi_instance": false,
     "services": [
@@ -25,28 +25,16 @@
             {
                 "name": "domain",
                 "type": "domain",
-                "ask": {
-                    "en": "Choose a domain name for Galène",
-                    "fr": "Choisissez un nom de domaine pour Galène"
-                },
                 "example": "example.com"
             },
             {
                 "name": "admin",
                 "type": "user",
-                "ask": {
-                    "en": "Choose an admin user",
-                    "fr": "Choisissez l'administrateur"
-                },
                 "example": "johndoe"
             },
             {
                 "name": "password",
                 "type": "password",
-                "ask": {
-                    "en": "Set the administrator password",
-                    "fr": "Définissez le mot de passe administrateur"
-                },
                 "help": {
                     "en": "Set the administrator password (between 8 and 30 characters)",
                     "fr": "Définissez le mot de passe administrateur (entre 8 et 30 caractères)"
@@ -56,10 +44,6 @@
             {
                 "name": "is_public",
                 "type": "boolean",
-                "ask": {
-                    "en": "Is it a public application?",
-                    "fr": "Est-ce une application publique ?"
-                },
                 "help": {
                     "en": "If enabled, Galène will be accessible by people who do not have an account. This can be changed later via the webadmin.",
                     "fr": "Si cette case est cochée, Galène sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin."
diff --git a/scripts/install b/scripts/install
index f3c6364..d76b357 100755
--- a/scripts/install
+++ b/scripts/install
@@ -153,12 +153,24 @@ ynh_script_progression --message="Configuring a systemd service..." --weight=1
 # Create a dedicated systemd config
 ynh_add_systemd_config
 
-mkdir -p /var/log/$app
 mkdir -p /etc/$app
 # Create systemd service for turnserver
 cp ../conf/coturn/default_coturn /etc/default/coturn-$app
 ynh_add_systemd_config --service=coturn-$app --template=coturn-galene.service
 
+#=================================================
+# SETUP LOGROTATE
+#=================================================
+ynh_script_progression --message="Configuring log rotation..." --weight=1
+
+# Create log directory
+mkdir -p /var/log/$app
+touch /var/log/$app/$app.log
+chown $app -R /var/log/$app
+
+# Setup logrotate
+ynh_use_logrotate --logfile "/var/log/$app"
+
 #=================================================
 # SET COTURN CONFIG
 #=================================================
@@ -211,13 +223,6 @@ ynh_store_file_checksum --file="$final_path/groups/$group_name.json"
 ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
 ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
 
-#=================================================
-# SETUP LOGROTATE
-#=================================================
-ynh_script_progression --message="Configuring log rotation..." --weight=1
-
-ynh_use_logrotate --logfile "/var/log/$app"
-
 #=================================================
 # ADD SCRIPT FOR COTURN CRON AND APP SERVICE
 #=================================================
@@ -236,9 +241,8 @@ chmod +x $final_path/Coturn_config_rotate.sh
 #=================================================
 
 # Set permissions to app files
-chown -R $app:$app $final_path
+chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app:root /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root /etc/$app/coturn.conf
 chmod -R u=rwX,g=rX,o= /etc/$app
diff --git a/scripts/upgrade b/scripts/upgrade
index 5191df2..9f75f7e 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -21,7 +21,6 @@ path_url=$(ynh_app_setting_get --app=$app --key=path)
 admin=$(ynh_app_setting_get --app=$app --key=admin)
 final_path=$(ynh_app_setting_get --app=$app --key=final_path)
 password=$(ynh_app_setting_get --app=$app --key=password)
-group_name=$(ynh_app_setting_get --app=$app --key=group_name)
 port=$(ynh_app_setting_get --app=$app --key=port)
 turnserver_port=$(ynh_app_setting_get --app=$app --key=turnserver_port)
 turnserver_pwd=$(ynh_app_setting_get --app=$app --key=turnserver_pwd)
@@ -50,6 +49,13 @@ if [ -z "$turnserver_port" ]; then
     ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 fi
 
+# Cleaning legacy permissions
+if ynh_legacy_permissions_exists; then
+    ynh_legacy_permissions_delete_all
+
+    ynh_app_setting_delete --app=$app --key=is_public
+fi
+
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================
@@ -244,9 +250,9 @@ ynh_add_systemd_config
 #=================================================
 
 # Set permissions on app files
-chown -R $app:$app $final_path
+chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app:root /var/log/$app
+chown -R $app /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root $coturn_config_path
 chmod -R u=rwX,g=rX,o= /etc/$app

From f7e9ddedb97a0ef71bdd18fd90e64a40881bf801 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Tue, 23 Mar 2021 23:12:12 +0100
Subject: [PATCH 40/74] Set config file permissions

---
 check_process   | 1 -
 scripts/install | 8 +++-----
 scripts/restore | 3 +++
 scripts/upgrade | 9 +++------
 4 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/check_process b/check_process
index ba2cc8f..3ddc082 100644
--- a/check_process
+++ b/check_process
@@ -23,7 +23,6 @@
 		upgrade=1	from_commit=c06f6235a93587e16524fa5b124e4d9e138a8109
 		backup_restore=1
 		multi_instance=0
-		port_already_use=1
 		change_url=1
 ;;; Options
 Email=
diff --git a/scripts/install b/scripts/install
index d76b357..c32aabc 100755
--- a/scripts/install
+++ b/scripts/install
@@ -215,13 +215,10 @@ mkdir -p "$groups"
 #=================================================
 
 ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"
-ynh_store_file_checksum --file="$final_path/data/passwd"
 
 ynh_add_config --template="../conf/groupname.json" --destination="$final_path/groups/$group_name.json"
-ynh_store_file_checksum --file="$final_path/groups/$group_name.json"
 
 ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
-ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
 
 #=================================================
 # ADD SCRIPT FOR COTURN CRON AND APP SERVICE
@@ -230,8 +227,7 @@ ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
 
-cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
-ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
+ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================
@@ -249,6 +245,8 @@ chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
 setfacl -R -m user:turnserver:rwX  /var/log/$app
+chmod 600 $final_path/data/passwd
+chmod 600 $final_path/data/ice-servers.json
 
 #=================================================
 # INTEGRATE SERVICE IN YUNOHOST
diff --git a/scripts/restore b/scripts/restore
index a4c0dd8..98a4eac 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -146,6 +146,9 @@ chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
 setfacl -R -m user:turnserver:rwX  /var/log/$app
+# Set permissions on config files
+chmod 600 $final_path/data/passwd
+chmod 600 $final_path/data/ice-servers.json
 
 #=================================================
 # RESTORE THE LOGROTATE CONFIGURATION
diff --git a/scripts/upgrade b/scripts/upgrade
index 9f75f7e..56a25d0 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -110,13 +110,11 @@ then
 	# Remove the tmp directory securely
 	ynh_secure_remove --file="$tmpdir"
 
-    ynh_backup_if_checksum_is_different --file="$final_path/data/passwd"
     ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"
-    ynh_store_file_checksum --file="$final_path/data/passwd"
+    chmod 600 $final_path/data/passwd
 
-    ynh_backup_if_checksum_is_different --file="$final_path/data/ice-servers.json"
     ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
-    ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
+    chmod 600 $final_path/data/ice-servers.json
 
 	# Recreate certificates
 	pushd "$final_path/data"
@@ -206,8 +204,7 @@ ynh_store_file_checksum --file="$coturn_config_path"
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
 
-cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
-ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
+ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================

From debb915ac111e74aefa350725256b61cf5d45246 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Fri, 26 Mar 2021 14:17:33 +0100
Subject: [PATCH 41/74] Update upgrade

---
 scripts/upgrade | 1 -
 1 file changed, 1 deletion(-)

diff --git a/scripts/upgrade b/scripts/upgrade
index 56a25d0..827ad6c 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -249,7 +249,6 @@ ynh_add_systemd_config
 # Set permissions on app files
 chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root $coturn_config_path
 chmod -R u=rwX,g=rX,o= /etc/$app

From 0b62caa480079ce353b6d31b7bf9309ce45dc4ed Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Thu, 1 Apr 2021 10:27:23 +0200
Subject: [PATCH 42/74] Set new_path to root

---
 scripts/change_url | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/change_url b/scripts/change_url
index e64cc7c..5ccf665 100755
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -17,7 +17,7 @@ old_domain=$YNH_APP_OLD_DOMAIN
 old_path=$YNH_APP_OLD_PATH
 
 new_domain=$YNH_APP_NEW_DOMAIN
-new_path=$YNH_APP_NEW_PATH
+new_path="/"
 
 app=$YNH_APP_INSTANCE_NAME
 

From 8a73adc5411009536f50190f6ea5da52bbac332e Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Thu, 1 Apr 2021 14:34:41 +0200
Subject: [PATCH 43/74] Update install

---
 scripts/install | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/install b/scripts/install
index c32aabc..b191bbd 100755
--- a/scripts/install
+++ b/scripts/install
@@ -227,7 +227,8 @@ ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
 
-ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
+cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
+ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================

From 427221050ae4cae75b2f71a81d6494dc641b69ad Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Thu, 1 Apr 2021 17:31:39 +0200
Subject: [PATCH 44/74] Update upgrade

---
 scripts/upgrade | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/upgrade b/scripts/upgrade
index 827ad6c..287ddd2 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -204,7 +204,8 @@ ynh_store_file_checksum --file="$coturn_config_path"
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
 
-ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
+cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
+ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================

From b727db65636bab48c36802ce538ab3b3b1b9cdb3 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 3 Apr 2021 18:09:58 +0200
Subject: [PATCH 45/74] Fix badges

---
 README.md    | 4 ++--
 README_fr.md | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index d10fcbc..e2e1095 100644
--- a/README.md
+++ b/README.md
@@ -69,8 +69,8 @@ To check if Galène can connect to the TURN server, connect to Galène as operat
 
 #### Supported architectures
 
-* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
-* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
+* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
+* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
 
 ## Limitations
 
diff --git a/README_fr.md b/README_fr.md
index 4a0c64c..70ed87a 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -69,8 +69,8 @@ Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à G
 
 #### Supported architectures
 
-* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
-* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
+* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
+* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
 
 ## Limitations
 

From 824143672c8aa5c64522a43636d4d369820a893b Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sun, 4 Apr 2021 18:31:04 +0200
Subject: [PATCH 46/74] Update manifest.json

---
 manifest.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/manifest.json b/manifest.json
index 4b01449..6a25fe0 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh3",
+    "version": "0.3.2~ynh4",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From a4531a8816b763eba5cd55879d2ddbc101f75c0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Fri, 9 Apr 2021 15:56:10 +0200
Subject: [PATCH 47/74] Remove firewall allow for 8443 (#35)

* remove firewall allow for 8443
---
 scripts/install | 3 +--
 scripts/remove  | 5 -----
 scripts/restore | 3 +--
 scripts/upgrade | 8 +++++++-
 4 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/scripts/install b/scripts/install
index b191bbd..a978443 100755
--- a/scripts/install
+++ b/scripts/install
@@ -85,7 +85,6 @@ port=$(ynh_find_port --port=8443)
 turnserver_port=$(ynh_find_port --port=1194)
 
 # Open the ports
-ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 # Store opened ports
@@ -254,7 +253,7 @@ chmod 600 $final_path/data/ice-servers.json
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
diff --git a/scripts/remove b/scripts/remove
index 78cdef0..1035d54 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -87,11 +87,6 @@ ynh_remove_logrotate
 #=================================================
 ynh_script_progression --message="Closing ports..." --weight=1
 
-if yunohost firewall list | grep -q "\- $port$"
-then
-	ynh_exec_warn_less yunohost firewall disallow TCP $port
-fi
-
 if yunohost firewall list | grep -q "\- $turnserver_port$"
 then
     ynh_exec_warn_less yunohost firewall disallow Both $turnserver_port 
diff --git a/scripts/restore b/scripts/restore
index 98a4eac..8b77157 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -96,7 +96,7 @@ systemctl enable coturn-$app.service --quiet
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
@@ -127,7 +127,6 @@ fi
 #=================================================
 
 # Ouvre le port dans le firewall
-ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 #=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index 287ddd2..dcf9e1d 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -37,6 +37,12 @@ upgrade_type=$(ynh_check_app_version_changed)
 #=================================================
 ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
 
+# If open, close direct access to $port in firewall
+if yunohost firewall list | grep -q "\- $port$"
+then
+    ynh_exec_warn_less yunohost firewall disallow TCP $port
+fi
+
 # If final_path doesn't exist, create it
 if [ -z "$final_path" ]; then
 	final_path=/opt/yunohost/$app
@@ -270,7 +276,7 @@ ynh_use_logrotate --non-append
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================

From d89a3fd3d40ecd006abf899d0e28d29726ed0714 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Fri, 9 Apr 2021 19:35:58 +0200
Subject: [PATCH 48/74] Testing (#33)

* remove firewall allow for 8443
---
 README.md          |  4 ++--
 README_fr.md       |  4 ++--
 check_process      |  1 -
 manifest.json      |  2 +-
 scripts/change_url |  2 +-
 scripts/install    |  8 +++-----
 scripts/remove     |  5 -----
 scripts/restore    |  6 ++++--
 scripts/upgrade    | 15 +++++++++------
 9 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/README.md b/README.md
index d10fcbc..e2e1095 100644
--- a/README.md
+++ b/README.md
@@ -69,8 +69,8 @@ To check if Galène can connect to the TURN server, connect to Galène as operat
 
 #### Supported architectures
 
-* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
-* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
+* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
+* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
 
 ## Limitations
 
diff --git a/README_fr.md b/README_fr.md
index 4a0c64c..70ed87a 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -69,8 +69,8 @@ Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à G
 
 #### Supported architectures
 
-* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
-* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
+* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/)
+* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/)
 
 ## Limitations
 
diff --git a/check_process b/check_process
index ba2cc8f..3ddc082 100644
--- a/check_process
+++ b/check_process
@@ -23,7 +23,6 @@
 		upgrade=1	from_commit=c06f6235a93587e16524fa5b124e4d9e138a8109
 		backup_restore=1
 		multi_instance=0
-		port_already_use=1
 		change_url=1
 ;;; Options
 Email=
diff --git a/manifest.json b/manifest.json
index 4b01449..6a25fe0 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh3",
+    "version": "0.3.2~ynh4",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
diff --git a/scripts/change_url b/scripts/change_url
index e64cc7c..5ccf665 100755
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -17,7 +17,7 @@ old_domain=$YNH_APP_OLD_DOMAIN
 old_path=$YNH_APP_OLD_PATH
 
 new_domain=$YNH_APP_NEW_DOMAIN
-new_path=$YNH_APP_NEW_PATH
+new_path="/"
 
 app=$YNH_APP_INSTANCE_NAME
 
diff --git a/scripts/install b/scripts/install
index d76b357..a978443 100755
--- a/scripts/install
+++ b/scripts/install
@@ -85,7 +85,6 @@ port=$(ynh_find_port --port=8443)
 turnserver_port=$(ynh_find_port --port=1194)
 
 # Open the ports
-ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 # Store opened ports
@@ -215,13 +214,10 @@ mkdir -p "$groups"
 #=================================================
 
 ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"
-ynh_store_file_checksum --file="$final_path/data/passwd"
 
 ynh_add_config --template="../conf/groupname.json" --destination="$final_path/groups/$group_name.json"
-ynh_store_file_checksum --file="$final_path/groups/$group_name.json"
 
 ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
-ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
 
 #=================================================
 # ADD SCRIPT FOR COTURN CRON AND APP SERVICE
@@ -249,13 +245,15 @@ chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
 setfacl -R -m user:turnserver:rwX  /var/log/$app
+chmod 600 $final_path/data/passwd
+chmod 600 $final_path/data/ice-servers.json
 
 #=================================================
 # INTEGRATE SERVICE IN YUNOHOST
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
diff --git a/scripts/remove b/scripts/remove
index 78cdef0..1035d54 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -87,11 +87,6 @@ ynh_remove_logrotate
 #=================================================
 ynh_script_progression --message="Closing ports..." --weight=1
 
-if yunohost firewall list | grep -q "\- $port$"
-then
-	ynh_exec_warn_less yunohost firewall disallow TCP $port
-fi
-
 if yunohost firewall list | grep -q "\- $turnserver_port$"
 then
     ynh_exec_warn_less yunohost firewall disallow Both $turnserver_port 
diff --git a/scripts/restore b/scripts/restore
index a4c0dd8..8b77157 100755
--- a/scripts/restore
+++ b/scripts/restore
@@ -96,7 +96,7 @@ systemctl enable coturn-$app.service --quiet
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================
@@ -127,7 +127,6 @@ fi
 #=================================================
 
 # Ouvre le port dans le firewall
-ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
 
 #=================================================
@@ -146,6 +145,9 @@ chmod -R u=rwX,g=rX,o= /etc/$app
 chmod 770 $final_path/Coturn_config_rotate.sh
 setfacl -R -m user:turnserver:rX  /etc/$app
 setfacl -R -m user:turnserver:rwX  /var/log/$app
+# Set permissions on config files
+chmod 600 $final_path/data/passwd
+chmod 600 $final_path/data/ice-servers.json
 
 #=================================================
 # RESTORE THE LOGROTATE CONFIGURATION
diff --git a/scripts/upgrade b/scripts/upgrade
index 9f75f7e..dcf9e1d 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -37,6 +37,12 @@ upgrade_type=$(ynh_check_app_version_changed)
 #=================================================
 ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
 
+# If open, close direct access to $port in firewall
+if yunohost firewall list | grep -q "\- $port$"
+then
+    ynh_exec_warn_less yunohost firewall disallow TCP $port
+fi
+
 # If final_path doesn't exist, create it
 if [ -z "$final_path" ]; then
 	final_path=/opt/yunohost/$app
@@ -110,13 +116,11 @@ then
 	# Remove the tmp directory securely
 	ynh_secure_remove --file="$tmpdir"
 
-    ynh_backup_if_checksum_is_different --file="$final_path/data/passwd"
     ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"
-    ynh_store_file_checksum --file="$final_path/data/passwd"
+    chmod 600 $final_path/data/passwd
 
-    ynh_backup_if_checksum_is_different --file="$final_path/data/ice-servers.json"
     ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/data/ice-servers.json"
-    ynh_store_file_checksum --file="$final_path/data/ice-servers.json"
+    chmod 600 $final_path/data/ice-servers.json
 
 	# Recreate certificates
 	pushd "$final_path/data"
@@ -252,7 +256,6 @@ ynh_add_systemd_config
 # Set permissions on app files
 chown -R $app: $final_path
 chmod -R 755 $final_path
-chown -R $app /var/log/$app
 chown -R $app:root /etc/$app
 chown turnserver:root $coturn_config_path
 chmod -R u=rwX,g=rX,o= /etc/$app
@@ -273,7 +276,7 @@ ynh_use_logrotate --non-append
 #=================================================
 ynh_script_progression --message="Integrating service in YunoHost..." --weight=2
 
-yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log" --needs_exposed_ports $port
+yunohost service add $app --description="Videoconferencing server" --log="/var/log/$app/$app.log"
 yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $turnserver_port
 
 #=================================================

From 1ed77d96c5452fed09d679511a0985f6bd738874 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sun, 11 Apr 2021 08:50:02 +0200
Subject: [PATCH 49/74] Update Coturn_config_rotate.sh

---
 sources/Coturn_config_rotate.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sources/Coturn_config_rotate.sh b/sources/Coturn_config_rotate.sh
index f03112d..9298b0d 100644
--- a/sources/Coturn_config_rotate.sh
+++ b/sources/Coturn_config_rotate.sh
@@ -21,9 +21,9 @@ else
     external_IP_line="${external_IP_line/'/__IPV6__'/}"
 fi
 
-old_config_line=$(egrep "^external-ip=.*\$" "/etc/$app/coturn.conf")
-ynh_replace_string "^external-ip=.*\$" "$external_IP_line" "/etc/$app/coturn.conf"
-new_config_line=$(egrep "^external-ip=.*\$" "/etc/$app/coturn.conf")
+old_config_line=$(egrep "^external-ip=.*\$" "/etc/__APP__/coturn.conf")
+ynh_replace_string "^external-ip=.*\$" "$external_IP_line" "/etc/__APP__/coturn.conf"
+new_config_line=$(egrep "^external-ip=.*\$" "/etc/__APP__/coturn.conf")
 
 setfacl -R -m user:turnserver:rX  /etc/__APP__
 

From d6c50311e514cc0e9249cd3185960c9ee58df395 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Tue, 13 Apr 2021 11:24:28 +0200
Subject: [PATCH 50/74] Update ice-servers.json

---
 conf/ice-servers.json | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index da74c0b..7b3ec3d 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -2,8 +2,7 @@
     {
         "urls": [
             "turn:__DOMAIN__:__TURNSERVER_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp"
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp"
         ],
         "username": "__APP__",
         "credential": "__TURNSERVER_PWD__"

From 3bbe399176f3591f5dbe61de340e2eea0c75ee1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Fri, 16 Apr 2021 23:50:00 +0200
Subject: [PATCH 51/74] Upgrade to version 0.3.3 (#39)

---
 README.md      | 2 +-
 README_fr.md   | 2 +-
 conf/386.src   | 4 ++--
 conf/amd64.src | 4 ++--
 conf/arm6.src  | 4 ++--
 conf/arm64.src | 4 ++--
 conf/arm7.src  | 4 ++--
 manifest.json  | 2 +-
 8 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index e2e1095..d23cdb3 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.2
+**Shipped version:** 0.3.3
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index 70ed87a..bf758ca 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.2
+**Version incluse :** 0.3.3
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index 6e7b8a0..a9faaf2 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_386.tar.gz
-SOURCE_SUM=738349eec0631415478030fd77dac776fd45d71eaeb9083f0f5ae514fb6ad5a6
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_386.tar.gz
+SOURCE_SUM=ac43d7308d8bc749e45a2d5aee6477958452ef2b84c9c51ef380de952776f37d
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 9cc4176..dbacd24 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_amd64.tar.gz
-SOURCE_SUM=7b3fa9ce5c06162f088ce0476815a0bb659f29c47bcd6d326757364062b4796b
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_amd64.tar.gz
+SOURCE_SUM=a86c00328237426c90baa075fcb94905f0c07a34f667a7c696d4ca39c4f1ff12
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 3329d00..357a5f4 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm6.tar.gz
-SOURCE_SUM=ee6230be9d9c4541eca9c4666205d2b338bb544877f55f84bc7112a72dbd83f7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm6.tar.gz
+SOURCE_SUM=10461e32f1ce1428519b368069eac1ecd48e96c953ed4aba24bbea61c1c6cb58
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 1e2252a..83f29b2 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm64.tar.gz
-SOURCE_SUM=83b915cdcbcc0c6f414ca1ee7b20fc7c4bd9c90e2ee7cb7bb4be4e107de0fd9e
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm64.tar.gz
+SOURCE_SUM=43b920468a6ac6ccf3b4caaf4f792c32ec95788c38a88cabd7f00eb589e13833
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 782cf97..8c57d0d 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm7.tar.gz
-SOURCE_SUM=bdc51c94caf19928cb03d8f43727c47df17d2396fc5d8b4c7532fa0810103c81
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm7.tar.gz
+SOURCE_SUM=f6c42031540e3edbd5457c0af8572ada65a1f468b6c69b9d3c35d52b39e2d5a1
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index 6a25fe0..cd36004 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh4",
+    "version": "0.3.3~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From 588cdf52ffec5b5f6631f2bb55d1ce4a2ba05e95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Sat, 17 Apr 2021 08:18:36 +0200
Subject: [PATCH 52/74] Testing (#37)

* Fix $app var not being replaced in Coturn_config_rotate.shscript #36
* Upgrade to version 0.3.3 (#39)
---
 README.md                       | 2 +-
 README_fr.md                    | 2 +-
 conf/386.src                    | 4 ++--
 conf/amd64.src                  | 4 ++--
 conf/arm6.src                   | 4 ++--
 conf/arm64.src                  | 4 ++--
 conf/arm7.src                   | 4 ++--
 conf/ice-servers.json           | 3 +--
 manifest.json                   | 2 +-
 sources/Coturn_config_rotate.sh | 6 +++---
 10 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/README.md b/README.md
index e2e1095..d23cdb3 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.2
+**Shipped version:** 0.3.3
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index 70ed87a..bf758ca 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.2
+**Version incluse :** 0.3.3
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index 6e7b8a0..a9faaf2 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_386.tar.gz
-SOURCE_SUM=738349eec0631415478030fd77dac776fd45d71eaeb9083f0f5ae514fb6ad5a6
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_386.tar.gz
+SOURCE_SUM=ac43d7308d8bc749e45a2d5aee6477958452ef2b84c9c51ef380de952776f37d
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 9cc4176..dbacd24 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_amd64.tar.gz
-SOURCE_SUM=7b3fa9ce5c06162f088ce0476815a0bb659f29c47bcd6d326757364062b4796b
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_amd64.tar.gz
+SOURCE_SUM=a86c00328237426c90baa075fcb94905f0c07a34f667a7c696d4ca39c4f1ff12
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 3329d00..357a5f4 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm6.tar.gz
-SOURCE_SUM=ee6230be9d9c4541eca9c4666205d2b338bb544877f55f84bc7112a72dbd83f7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm6.tar.gz
+SOURCE_SUM=10461e32f1ce1428519b368069eac1ecd48e96c953ed4aba24bbea61c1c6cb58
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 1e2252a..83f29b2 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm64.tar.gz
-SOURCE_SUM=83b915cdcbcc0c6f414ca1ee7b20fc7c4bd9c90e2ee7cb7bb4be4e107de0fd9e
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm64.tar.gz
+SOURCE_SUM=43b920468a6ac6ccf3b4caaf4f792c32ec95788c38a88cabd7f00eb589e13833
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 782cf97..8c57d0d 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.2/galene_0.3.2_Linux_arm7.tar.gz
-SOURCE_SUM=bdc51c94caf19928cb03d8f43727c47df17d2396fc5d8b4c7532fa0810103c81
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm7.tar.gz
+SOURCE_SUM=f6c42031540e3edbd5457c0af8572ada65a1f468b6c69b9d3c35d52b39e2d5a1
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/ice-servers.json b/conf/ice-servers.json
index da74c0b..7b3ec3d 100644
--- a/conf/ice-servers.json
+++ b/conf/ice-servers.json
@@ -2,8 +2,7 @@
     {
         "urls": [
             "turn:__DOMAIN__:__TURNSERVER_PORT__",
-            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp",
-            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=udp"
+            "turn:__DOMAIN__:__TURNSERVER_PORT__?transport=tcp"
         ],
         "username": "__APP__",
         "credential": "__TURNSERVER_PWD__"
diff --git a/manifest.json b/manifest.json
index 6a25fe0..cd36004 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.2~ynh4",
+    "version": "0.3.3~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
diff --git a/sources/Coturn_config_rotate.sh b/sources/Coturn_config_rotate.sh
index f03112d..9298b0d 100644
--- a/sources/Coturn_config_rotate.sh
+++ b/sources/Coturn_config_rotate.sh
@@ -21,9 +21,9 @@ else
     external_IP_line="${external_IP_line/'/__IPV6__'/}"
 fi
 
-old_config_line=$(egrep "^external-ip=.*\$" "/etc/$app/coturn.conf")
-ynh_replace_string "^external-ip=.*\$" "$external_IP_line" "/etc/$app/coturn.conf"
-new_config_line=$(egrep "^external-ip=.*\$" "/etc/$app/coturn.conf")
+old_config_line=$(egrep "^external-ip=.*\$" "/etc/__APP__/coturn.conf")
+ynh_replace_string "^external-ip=.*\$" "$external_IP_line" "/etc/__APP__/coturn.conf"
+new_config_line=$(egrep "^external-ip=.*\$" "/etc/__APP__/coturn.conf")
 
 setfacl -R -m user:turnserver:rX  /etc/__APP__
 

From b153e72ca5e04393f2f0c39e071993c9510b2906 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 17 Apr 2021 08:55:55 +0200
Subject: [PATCH 53/74] Update install

---
 scripts/install | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/scripts/install b/scripts/install
index a978443..af0c440 100755
--- a/scripts/install
+++ b/scripts/install
@@ -82,15 +82,17 @@ ynh_script_progression --message="Finding an available port..." --weight=3
 
 # Find an available port
 port=$(ynh_find_port --port=8443)
-turnserver_port=$(ynh_find_port --port=1194)
-
-# Open the ports
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
-
-# Store opened ports
 ynh_app_setting_set --app=$app --key=port --value=$port
+
+# Find an available port for TURN
+turnserver_port=$(ynh_find_port --port=1194)
 ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
 
+# Open TURN port
+ynh_script_progression --message="Configuring firewall..." --weight=1
+
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+
 #=================================================
 # INSTALL DEPENDENCIES
 #=================================================
@@ -210,7 +212,7 @@ groups="$final_path/groups"
 mkdir -p "$groups"
 
 #=================================================
-# MODIFY A CONFIG FILE
+# MODIFY A CONFIG FILES
 #=================================================
 
 ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"

From e27d3ed2812b596dfd5b672b61f050d9cc76f5fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Tue, 27 Apr 2021 16:56:00 +0200
Subject: [PATCH 54/74] Upgrade to version 0.3.4 (#40)

---
 README.md      | 2 +-
 README_fr.md   | 2 +-
 conf/386.src   | 4 ++--
 conf/amd64.src | 4 ++--
 conf/arm6.src  | 4 ++--
 conf/arm64.src | 4 ++--
 conf/arm7.src  | 4 ++--
 manifest.json  | 2 +-
 8 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index d23cdb3..f07d386 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.3
+**Shipped version:** 0.3.4
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index bf758ca..a6b9a96 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.3
+**Version incluse :** 0.3.4
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index a9faaf2..115abfa 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_386.tar.gz
-SOURCE_SUM=ac43d7308d8bc749e45a2d5aee6477958452ef2b84c9c51ef380de952776f37d
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_386.tar.gz
+SOURCE_SUM=96ce6a7170141c12df51218caf76cff5624a05b4652a83f2e1d099f5ce8a7634
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index dbacd24..4706f11 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_amd64.tar.gz
-SOURCE_SUM=a86c00328237426c90baa075fcb94905f0c07a34f667a7c696d4ca39c4f1ff12
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_amd64.tar.gz
+SOURCE_SUM=57aaae00d79fc4c82036697cfda5f4440fba634e716314fad330108e53e226b4
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 357a5f4..f7a1d81 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm6.tar.gz
-SOURCE_SUM=10461e32f1ce1428519b368069eac1ecd48e96c953ed4aba24bbea61c1c6cb58
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm6.tar.gz
+SOURCE_SUM=55a95f87761a79098bdf015b5faf4a1f72137bb8aefe78fcb186ecbea8f812a7
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 83f29b2..00a8b84 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm64.tar.gz
-SOURCE_SUM=43b920468a6ac6ccf3b4caaf4f792c32ec95788c38a88cabd7f00eb589e13833
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm64.tar.gz
+SOURCE_SUM=053d7999e5cfa619544b937daafa07a477b34f024b2dfdf70f939672935c1162
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 8c57d0d..60e733c 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm7.tar.gz
-SOURCE_SUM=f6c42031540e3edbd5457c0af8572ada65a1f468b6c69b9d3c35d52b39e2d5a1
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm7.tar.gz
+SOURCE_SUM=418e328e3942a6fee0d46675a7e45b8fcf823862688c856c35a352df307a0f71
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index cd36004..bebf2f1 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.3~ynh1",
+    "version": "0.3.4~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From ddc8620a511fdfb3041521f40d8d9af6221a2888 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Tue, 27 Apr 2021 19:00:29 +0200
Subject: [PATCH 55/74] Testing (#41)

* Upgrade to version 0.3.4 (#40)
---
 README.md       |  2 +-
 README_fr.md    |  2 +-
 conf/386.src    |  4 ++--
 conf/amd64.src  |  4 ++--
 conf/arm6.src   |  4 ++--
 conf/arm64.src  |  4 ++--
 conf/arm7.src   |  4 ++--
 manifest.json   |  2 +-
 scripts/install | 16 +++++++++-------
 9 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/README.md b/README.md
index d23cdb3..f07d386 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.3
+**Shipped version:** 0.3.4
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index bf758ca..a6b9a96 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.3
+**Version incluse :** 0.3.4
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index a9faaf2..115abfa 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_386.tar.gz
-SOURCE_SUM=ac43d7308d8bc749e45a2d5aee6477958452ef2b84c9c51ef380de952776f37d
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_386.tar.gz
+SOURCE_SUM=96ce6a7170141c12df51218caf76cff5624a05b4652a83f2e1d099f5ce8a7634
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index dbacd24..4706f11 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_amd64.tar.gz
-SOURCE_SUM=a86c00328237426c90baa075fcb94905f0c07a34f667a7c696d4ca39c4f1ff12
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_amd64.tar.gz
+SOURCE_SUM=57aaae00d79fc4c82036697cfda5f4440fba634e716314fad330108e53e226b4
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index 357a5f4..f7a1d81 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm6.tar.gz
-SOURCE_SUM=10461e32f1ce1428519b368069eac1ecd48e96c953ed4aba24bbea61c1c6cb58
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm6.tar.gz
+SOURCE_SUM=55a95f87761a79098bdf015b5faf4a1f72137bb8aefe78fcb186ecbea8f812a7
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 83f29b2..00a8b84 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm64.tar.gz
-SOURCE_SUM=43b920468a6ac6ccf3b4caaf4f792c32ec95788c38a88cabd7f00eb589e13833
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm64.tar.gz
+SOURCE_SUM=053d7999e5cfa619544b937daafa07a477b34f024b2dfdf70f939672935c1162
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 8c57d0d..60e733c 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.3/galene_0.3.3_Linux_arm7.tar.gz
-SOURCE_SUM=f6c42031540e3edbd5457c0af8572ada65a1f468b6c69b9d3c35d52b39e2d5a1
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm7.tar.gz
+SOURCE_SUM=418e328e3942a6fee0d46675a7e45b8fcf823862688c856c35a352df307a0f71
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index cd36004..bebf2f1 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.3~ynh1",
+    "version": "0.3.4~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
diff --git a/scripts/install b/scripts/install
index a978443..af0c440 100755
--- a/scripts/install
+++ b/scripts/install
@@ -82,15 +82,17 @@ ynh_script_progression --message="Finding an available port..." --weight=3
 
 # Find an available port
 port=$(ynh_find_port --port=8443)
-turnserver_port=$(ynh_find_port --port=1194)
-
-# Open the ports
-ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
-
-# Store opened ports
 ynh_app_setting_set --app=$app --key=port --value=$port
+
+# Find an available port for TURN
+turnserver_port=$(ynh_find_port --port=1194)
 ynh_app_setting_set --app=$app --key=turnserver_port --value=$turnserver_port
 
+# Open TURN port
+ynh_script_progression --message="Configuring firewall..." --weight=1
+
+ynh_exec_warn_less yunohost firewall allow Both $turnserver_port
+
 #=================================================
 # INSTALL DEPENDENCIES
 #=================================================
@@ -210,7 +212,7 @@ groups="$final_path/groups"
 mkdir -p "$groups"
 
 #=================================================
-# MODIFY A CONFIG FILE
+# MODIFY A CONFIG FILES
 #=================================================
 
 ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd"

From abbd56625e9b0429761bda36abfe19a66aef35ad Mon Sep 17 00:00:00 2001
From: YunoHost Bot 
Date: Tue, 11 May 2021 07:30:10 +0200
Subject: [PATCH 56/74] [autopatch] Update issue and PR templates (#45)

Co-authored-by: Yunohost-Bot <>
---
 issue_template.md        | 55 ----------------------------------------
 pull_request_template.md | 16 ------------
 2 files changed, 71 deletions(-)
 delete mode 100644 issue_template.md
 delete mode 100644 pull_request_template.md

diff --git a/issue_template.md b/issue_template.md
deleted file mode 100644
index d40ff1e..0000000
--- a/issue_template.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-name: Bug report
-about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently.
-
----
-
-**How to post a meaningful bug report**
-1. *Read this whole template first.*
-2. *Determine if you are on the right place:*
-   - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!*
-   - *Otherwise, the issue may be due to Galène itself. Refer to its documentation or repository for help.*
-   - *When in doubt, post here and we will figure it out together.*
-3. *Delete the italic comments as you write over them below, and remove this guide.*
---- 
-
-### Describe the bug
-
-*A clear and concise description of what the bug is.*
-
-### Context
-
-- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...*
-- YunoHost version: x.x.x
-- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...*
-- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes*
-  - If yes, please explain:
-- Using, or trying to install package version/branch:
-- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`*
-
-### Steps to reproduce
-
-- *If you performed a command from the CLI, the command itself is enough. For example:*
-    ```sh
-    sudo yunohost app install galene
-    ```
-- *If you used the webadmin, please perform the equivalent command from the CLI first.*
-- *If the error occurs in your browser, explain what you did:*
-   1. *Go to '...'*
-   2. *Click on '...'*
-   3. *Scroll down to '...'*
-   4. *See error*
-
-### Expected behavior
-
-*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.*
-
-### Logs
-
-*When an operation fails, YunoHost provides a simple way to share the logs.*
-- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.*
-- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.*
-
-*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)*
-
-*If applicable and useful, add screenshots to help explain your problem.*
diff --git a/pull_request_template.md b/pull_request_template.md
deleted file mode 100644
index 6c28fc5..0000000
--- a/pull_request_template.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## Problem
-- *Description of why you made this PR*
-
-## Solution
-- *And how do you fix that problem*
-
-## PR Status
-- [ ] Code finished.
-- [ ] Tested with Package_check.
-- [ ] Fix or enhancement tested.
-- [ ] Upgrade from last version tested.
-- [ ] Can be reviewed and tested.
-
-## Package_check results
----
-* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"*

From 7ac4a4e1d5b166c3771bc97de65e479bb7530aba Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Wed, 12 May 2021 11:19:22 +0200
Subject: [PATCH 57/74] Update check_process

---
 check_process | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/check_process b/check_process
index 3ddc082..14c9851 100644
--- a/check_process
+++ b/check_process
@@ -5,10 +5,10 @@
 
 ;; Test complet
 	; Manifest
-		domain="domain.tld"	(DOMAIN)
-		path="/path"	(PATH)
-		admin="john"	(USER)
-		is_public=1	(PUBLIC|public=1|private=0)
+		domain="domain.tld"
+		path="/path"
+		admin="john"
+		is_public=1
 		password="pass"
 		group_name="public"
 		group_description="My public group"

From 0bf83c070238c3c6abd18ae5a51d3909aaf476ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Wed, 12 May 2021 18:12:51 +0200
Subject: [PATCH 58/74] Upgrade to version 0.3.5 (#47)

---
 .github/ISSUE_TEMPLATE.md        | 55 ++++++++++++++++++++++++++++++++
 .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++
 README.md                        |  2 +-
 README_fr.md                     |  2 +-
 conf/386.src                     |  4 +--
 conf/amd64.src                   |  4 +--
 conf/arm6.src                    |  4 +--
 conf/arm64.src                   |  4 +--
 conf/arm7.src                    |  4 +--
 manifest.json                    |  2 +-
 10 files changed, 84 insertions(+), 13 deletions(-)
 create mode 100644 .github/ISSUE_TEMPLATE.md
 create mode 100644 .github/PULL_REQUEST_TEMPLATE.md

diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..2729a6b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,55 @@
+---
+name: Bug report
+about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently.
+
+---
+
+**How to post a meaningful bug report**
+1. *Read this whole template first.*
+2. *Determine if you are on the right place:*
+   - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!*
+   - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.*
+   - *When in doubt, post here and we will figure it out together.*
+3. *Delete the italic comments as you write over them below, and remove this guide.*
+--- 
+
+### Describe the bug
+
+*A clear and concise description of what the bug is.*
+
+### Context
+
+- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...*
+- YunoHost version: x.x.x
+- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...*
+- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes*
+  - If yes, please explain:
+- Using, or trying to install package version/branch:
+- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`*
+
+### Steps to reproduce
+
+- *If you performed a command from the CLI, the command itself is enough. For example:*
+    ```sh
+    sudo yunohost app install the_app
+    ```
+- *If you used the webadmin, please perform the equivalent command from the CLI first.*
+- *If the error occurs in your browser, explain what you did:*
+   1. *Go to '...'*
+   2. *Click on '...'*
+   3. *Scroll down to '...'*
+   4. *See error*
+
+### Expected behavior
+
+*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.*
+
+### Logs
+
+*When an operation fails, YunoHost provides a simple way to share the logs.*
+- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.*
+- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.*
+
+*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)*
+
+*If applicable and useful, add screenshots to help explain your problem.*
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..ef70e18
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,16 @@
+## Problem
+
+- *Description of why you made this PR*
+
+## Solution
+
+- *And how do you fix that problem*
+
+## PR Status
+
+- [ ] Code finished and ready to be reviewed/tested
+- [ ] The fix/enhancement were manually tested (if applicable)
+
+## Automatic tests
+
+Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization)
diff --git a/README.md b/README.md
index f07d386..4b23e15 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.4
+**Shipped version:** 0.3.5
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index a6b9a96..0c3341c 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.4
+**Version incluse :** 0.3.5
 
 ## Captures d'écran
 
diff --git a/conf/386.src b/conf/386.src
index 115abfa..8160d9e 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_386.tar.gz
-SOURCE_SUM=96ce6a7170141c12df51218caf76cff5624a05b4652a83f2e1d099f5ce8a7634
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_386.tar.gz
+SOURCE_SUM=3b0df8926284a3aec5eb9b1bffca18e3ffbdb8749a72bfd839b75775fd48f392
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 4706f11..d2e7356 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_amd64.tar.gz
-SOURCE_SUM=57aaae00d79fc4c82036697cfda5f4440fba634e716314fad330108e53e226b4
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_amd64.tar.gz
+SOURCE_SUM=bf98a50ae9d906f6b330844dee298b1b853c9b27f4b5a54bded180a02778b7a6
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index f7a1d81..bec45ea 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm6.tar.gz
-SOURCE_SUM=55a95f87761a79098bdf015b5faf4a1f72137bb8aefe78fcb186ecbea8f812a7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm6.tar.gz
+SOURCE_SUM=12ff36deab3040587b35c6faab77a42831f6fc0cb79764410a6beb6fa32fd7c9
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 00a8b84..fe6b2bb 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm64.tar.gz
-SOURCE_SUM=053d7999e5cfa619544b937daafa07a477b34f024b2dfdf70f939672935c1162
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm64.tar.gz
+SOURCE_SUM=1dcac2a4f35d1402d4208541773237b46bc9f75d242b763b21c56c5ae1317fff
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 60e733c..357f0f1 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm7.tar.gz
-SOURCE_SUM=418e328e3942a6fee0d46675a7e45b8fcf823862688c856c35a352df307a0f71
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm7.tar.gz
+SOURCE_SUM=819794367ec2abaedb1209839047f7a7749391fd9f12f25c65db4f30a4c34e0f
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index bebf2f1..e2471e7 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.4~ynh1",
+    "version": "0.3.5~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {

From 573bc18e4e4e784de406936dcd16c2cf54391c2e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89ric=20Gaspar?=
 <46165813+ericgaspar@users.noreply.github.com>
Date: Wed, 12 May 2021 18:41:02 +0200
Subject: [PATCH 59/74] Testing (#48)

* Upgrade to version 0.3.5
---
 issue_template.md => .github/ISSUE_TEMPLATE.md |  4 ++--
 .github/PULL_REQUEST_TEMPLATE.md               | 16 ++++++++++++++++
 README.md                                      |  2 +-
 README_fr.md                                   |  2 +-
 check_process                                  |  8 ++++----
 conf/386.src                                   |  4 ++--
 conf/amd64.src                                 |  4 ++--
 conf/arm6.src                                  |  4 ++--
 conf/arm64.src                                 |  4 ++--
 conf/arm7.src                                  |  4 ++--
 manifest.json                                  |  2 +-
 pull_request_template.md                       | 16 ----------------
 12 files changed, 35 insertions(+), 35 deletions(-)
 rename issue_template.md => .github/ISSUE_TEMPLATE.md (96%)
 create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
 delete mode 100644 pull_request_template.md

diff --git a/issue_template.md b/.github/ISSUE_TEMPLATE.md
similarity index 96%
rename from issue_template.md
rename to .github/ISSUE_TEMPLATE.md
index d40ff1e..2729a6b 100644
--- a/issue_template.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -8,7 +8,7 @@ about: When creating a bug report, please use the following template to provide
 1. *Read this whole template first.*
 2. *Determine if you are on the right place:*
    - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!*
-   - *Otherwise, the issue may be due to Galène itself. Refer to its documentation or repository for help.*
+   - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.*
    - *When in doubt, post here and we will figure it out together.*
 3. *Delete the italic comments as you write over them below, and remove this guide.*
 --- 
@@ -31,7 +31,7 @@ about: When creating a bug report, please use the following template to provide
 
 - *If you performed a command from the CLI, the command itself is enough. For example:*
     ```sh
-    sudo yunohost app install galene
+    sudo yunohost app install the_app
     ```
 - *If you used the webadmin, please perform the equivalent command from the CLI first.*
 - *If the error occurs in your browser, explain what you did:*
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..ef70e18
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,16 @@
+## Problem
+
+- *Description of why you made this PR*
+
+## Solution
+
+- *And how do you fix that problem*
+
+## PR Status
+
+- [ ] Code finished and ready to be reviewed/tested
+- [ ] The fix/enhancement were manually tested (if applicable)
+
+## Automatic tests
+
+Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization)
diff --git a/README.md b/README.md
index f07d386..4b23e15 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
 ## Overview
 Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). 
 
-**Shipped version:** 0.3.4
+**Shipped version:** 0.3.5
 
 ## Screenshots
 
diff --git a/README_fr.md b/README_fr.md
index a6b9a96..0c3341c 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install
 ## Vue d'ensemble
 Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres).
 
-**Version incluse :** 0.3.4
+**Version incluse :** 0.3.5
 
 ## Captures d'écran
 
diff --git a/check_process b/check_process
index 3ddc082..14c9851 100644
--- a/check_process
+++ b/check_process
@@ -5,10 +5,10 @@
 
 ;; Test complet
 	; Manifest
-		domain="domain.tld"	(DOMAIN)
-		path="/path"	(PATH)
-		admin="john"	(USER)
-		is_public=1	(PUBLIC|public=1|private=0)
+		domain="domain.tld"
+		path="/path"
+		admin="john"
+		is_public=1
 		password="pass"
 		group_name="public"
 		group_description="My public group"
diff --git a/conf/386.src b/conf/386.src
index 115abfa..8160d9e 100644
--- a/conf/386.src
+++ b/conf/386.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_386.tar.gz
-SOURCE_SUM=96ce6a7170141c12df51218caf76cff5624a05b4652a83f2e1d099f5ce8a7634
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_386.tar.gz
+SOURCE_SUM=3b0df8926284a3aec5eb9b1bffca18e3ffbdb8749a72bfd839b75775fd48f392
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/amd64.src b/conf/amd64.src
index 4706f11..d2e7356 100644
--- a/conf/amd64.src
+++ b/conf/amd64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_amd64.tar.gz
-SOURCE_SUM=57aaae00d79fc4c82036697cfda5f4440fba634e716314fad330108e53e226b4
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_amd64.tar.gz
+SOURCE_SUM=bf98a50ae9d906f6b330844dee298b1b853c9b27f4b5a54bded180a02778b7a6
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm6.src b/conf/arm6.src
index f7a1d81..bec45ea 100644
--- a/conf/arm6.src
+++ b/conf/arm6.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm6.tar.gz
-SOURCE_SUM=55a95f87761a79098bdf015b5faf4a1f72137bb8aefe78fcb186ecbea8f812a7
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm6.tar.gz
+SOURCE_SUM=12ff36deab3040587b35c6faab77a42831f6fc0cb79764410a6beb6fa32fd7c9
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm64.src b/conf/arm64.src
index 00a8b84..fe6b2bb 100644
--- a/conf/arm64.src
+++ b/conf/arm64.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm64.tar.gz
-SOURCE_SUM=053d7999e5cfa619544b937daafa07a477b34f024b2dfdf70f939672935c1162
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm64.tar.gz
+SOURCE_SUM=1dcac2a4f35d1402d4208541773237b46bc9f75d242b763b21c56c5ae1317fff
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/conf/arm7.src b/conf/arm7.src
index 60e733c..357f0f1 100644
--- a/conf/arm7.src
+++ b/conf/arm7.src
@@ -1,5 +1,5 @@
-SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.4/galene_0.3.4_Linux_arm7.tar.gz
-SOURCE_SUM=418e328e3942a6fee0d46675a7e45b8fcf823862688c856c35a352df307a0f71
+SOURCE_URL=https://github.com/YunoHost-Apps/galene_ynh/releases/download/v0.3.5/galene_0.3.5_Linux_arm7.tar.gz
+SOURCE_SUM=819794367ec2abaedb1209839047f7a7749391fd9f12f25c65db4f30a4c34e0f
 SOURCE_SUM_PRG=sha256sum
 SOURCE_FORMAT=tar.gz
 SOURCE_IN_SUBDIR=true
diff --git a/manifest.json b/manifest.json
index bebf2f1..e2471e7 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.4~ynh1",
+    "version": "0.3.5~ynh1",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
diff --git a/pull_request_template.md b/pull_request_template.md
deleted file mode 100644
index 6c28fc5..0000000
--- a/pull_request_template.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## Problem
-- *Description of why you made this PR*
-
-## Solution
-- *And how do you fix that problem*
-
-## PR Status
-- [ ] Code finished.
-- [ ] Tested with Package_check.
-- [ ] Fix or enhancement tested.
-- [ ] Upgrade from last version tested.
-- [ ] Can be reviewed and tested.
-
-## Package_check results
----
-* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"*

From 1d934797663de9cfffa0ca48851a74bcac8a5c79 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Wed, 12 May 2021 18:42:07 +0200
Subject: [PATCH 60/74] Add add_config

---
 scripts/install | 4 +---
 scripts/upgrade | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/scripts/install b/scripts/install
index af0c440..69a7435 100755
--- a/scripts/install
+++ b/scripts/install
@@ -227,9 +227,7 @@ ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/
 
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
-
-cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
-ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
+ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index dcf9e1d..dd4f8e4 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -209,9 +209,7 @@ ynh_store_file_checksum --file="$coturn_config_path"
 
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
-
-cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
-ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
+ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================

From a32248a7cac2ea234ec6b4ce2cd4b74686302753 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Wed, 12 May 2021 19:25:57 +0200
Subject: [PATCH 61/74] Check if a cron job is present and remove it

---
 scripts/remove | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/scripts/remove b/scripts/remove
index 1035d54..8845489 100755
--- a/scripts/remove
+++ b/scripts/remove
@@ -82,6 +82,16 @@ ynh_script_progression --message="Removing logrotate configuration..." --weight=
 # Remove the app-specific logrotate config
 ynh_remove_logrotate
 
+#=================================================
+# REMOVE THE CRON FILE
+#=================================================
+ynh_script_progression --message="Removing the cron file..." --weight=1
+
+if [[ ! -f "/etc/cron.d/coturn_config_rotate" ]]; then
+	# If a cron job as been add by user, remove it
+	ynh_secure_remove --file="/etc/cron.d/coturn_config_rotate"
+fi
+
 #=================================================
 # CLOSE A PORT
 #=================================================

From 43f427614e8c4e2724d053b11e76a717aca83752 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 15 May 2021 08:51:26 +0200
Subject: [PATCH 62/74] Update manifest.json

---
 manifest.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/manifest.json b/manifest.json
index e2471e7..c6e959d 100644
--- a/manifest.json
+++ b/manifest.json
@@ -14,7 +14,7 @@
         "email": ""
     },
     "requirements": {
-        "yunohost": ">= 4.1.7"
+        "yunohost": ">= 4.2.4"
     },
     "multi_instance": false,
     "services": [

From 85a6ad46cfb77e72ab879a3edff9b253761e980f Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Sat, 22 May 2021 18:43:00 +0200
Subject: [PATCH 63/74] Update check_process

---
 check_process | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/check_process b/check_process
index 14c9851..6c729d5 100644
--- a/check_process
+++ b/check_process
@@ -1,8 +1,3 @@
-# See here for more information
-# https://github.com/YunoHost/package_check#syntax-check_process-file
-
-# Move this file from check_process.default to check_process when you have filled it.
-
 ;; Test complet
 	; Manifest
 		domain="domain.tld"
@@ -31,4 +26,3 @@ Notification=none
 	; commit=c06f6235a93587e16524fa5b124e4d9e138a8109
 		name=Allow naming groups with spaces (#21) 
 		manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
-

From 15253e46f62b20d8d9c995f00c6a701cffd0137e Mon Sep 17 00:00:00 2001
From: tituspijean 
Date: Mon, 24 May 2021 19:34:13 +0200
Subject: [PATCH 64/74] Add new line in passwd file for user:password parsing
 (#52)

* Add new line in passwd file for user:password parsing
---
 conf/passwd   | 3 ++-
 manifest.json | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/conf/passwd b/conf/passwd
index 61a88b3..fdcf9ba 100644
--- a/conf/passwd
+++ b/conf/passwd
@@ -1 +1,2 @@
-__ADMIN__:__PASSWORD__
\ No newline at end of file
+__ADMIN__:__PASSWORD__
+
diff --git a/manifest.json b/manifest.json
index c6e959d..2b409bf 100644
--- a/manifest.json
+++ b/manifest.json
@@ -6,7 +6,7 @@
         "en": "Videoconferencing server that is easy to deploy",
         "fr": "Serveur de visioconférence facile à déployer"
     },
-    "version": "0.3.5~ynh1",
+    "version": "0.3.5~ynh2",
     "url": "https://galene.org/",
     "license": "MIT",
     "maintainer": {
@@ -14,7 +14,7 @@
         "email": ""
     },
     "requirements": {
-        "yunohost": ">= 4.2.4"
+        "yunohost": ">= 4.1.7"
     },
     "multi_instance": false,
     "services": [

From cf8cac8e705f06a44e8219388047698fc6ef8c47 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 24 May 2021 23:13:12 +0200
Subject: [PATCH 65/74] Fix

---
 scripts/install | 3 ++-
 scripts/upgrade | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/scripts/install b/scripts/install
index 69a7435..c069d7f 100755
--- a/scripts/install
+++ b/scripts/install
@@ -227,7 +227,8 @@ ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/
 
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
-ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
+cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
+ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index dd4f8e4..883c6e0 100755
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -209,7 +209,8 @@ ynh_store_file_checksum --file="$coturn_config_path"
 
 # WARNING : theses command are used in INSTALL, UPGRADE
 # For any update do it in all files
-ynh_add_config --template="../sources/Coturn_config_rotate.sh" --destination="$final_path/Coturn_config_rotate.sh"
+cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh
+ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh"
 chmod +x $final_path/Coturn_config_rotate.sh
 
 #=================================================

From ebc0acb2bcc2ab25e9298451828d86906a495156 Mon Sep 17 00:00:00 2001
From: ericgaspar 
Date: Mon, 24 May 2021 23:16:19 +0200
Subject: [PATCH 66/74] Create screenshot.png

---
 doc/screenshots/screenshot.png | Bin 0 -> 208258 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 doc/screenshots/screenshot.png

diff --git a/doc/screenshots/screenshot.png b/doc/screenshots/screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a55dfa2f12e9d307c75288383cfd78738e908b6
GIT binary patch
literal 208258
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%0A7hDU(L4LXXFX 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

)z_2h{5xO0+2#>;x}S&T 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­0++}!jBJIVPsF8- z$#%Z2&(~L>>jCK#{g*S3~0lB7bN7eVxhLyOxS#mJuU3ynV(dzXVIctvsnvs*&HH zdqp?4F3T!H7Q_GsK1|@*{IEUk2hVI5>G-o*ufTu}i2l1_`Gc{=DjSJ=ak49d*Xl!M zT~Jp&ot-U;#KOR3qnbv{_04z499$k888a~Wuy66*T@!vJ+iYhsP)ucB_qo$Vf$w6_^p(COUPsZhxWe~LF-LYU+h@)jt|pae^x@J0i29?uFjD^P!XWyL zCC;;)?EajzvfS{a?z1&$|FZ&7f9u!G5N@KY+Uv#6CTSuqz81RjS(ZGyX0aNT%8b1* zQ(drQqjT0?^1RJTOD+A~<^^JK);0?5^OnYe?u)EB3B%y7tS6(O8)1)8U1zX5&b9Uh*vbXl0V$_Iof+R|};RbcU5fp<6q# zlTC&7W)eb|imT>HMxLiTU82TM)(Mrw(h(=*JImza%~pc;1!8!3doFIvqV?)SS2<(w z^CyB)!TaOH9ZR%*DpwEKT#bGuMldN;L%;k&jp=!3HItMH_B3C`5RSu{E z9`V8a3fDw*D$xi%dmC&ZPH>xl8f&tn|I#Ez4F zZHb|ufA%~zW~EW`=D2wId;4>u$e>#Djv913YzrQ8;p&7&8hzsS-)%Lo^yF45r^6^o ziC-&R6oQ#tWu`$W{Bqpb*c?hWYVdPX*vidd3B_LGR}|@x>N=Or$)Hl5sgnq%Ju}^L zNg-F1mPJ>ur6k~4ksjg*^5nVK;6ksh*4Yu~UX#tH&K81=t8m^68$ok47L%*x(baP9 z;_~5-wQe=?%~lw9v2zN&l$E2+%juo^zI^)PJdKZ6P!I~|+EvR|CIDjc)6-LseLh0k z@$ew$Z#P%VyKEJS{NeX!$aM!wv$9xnoC?g$0n@^~r|eNY317ebj_+vKDRa^(Q3DZd z5oY}-A&$?*{5JOMu0f&9RM!o{ogItNs^I(&p0GnQ5b}2siUvd5li-QC{UB3b5E$0CKtw{{WFLkW<(4PH&TOWF#>+J7U(!Hxe?eqnj zFNhz6yP&h{2=7kg7O(|7SU)~9x+Ab>Cy(yFQ1iOq8xn=xZ3BLNzQ|l1Ry(;UInQJr zXl%4$nF7#)vyYy%=?5KBKk{$c^$8dEw%wUOb>haitC!U7JOUc^I&ik!waO!KN>>+` zRTaa5-VN^;=l?37dE=sn(yp2&oa)t{g;Y-@LM6ErUqNK56 z`qiw`{RYjaFMKk&(j$F&kN@7kZ%?}NyIrd>|JD9Q#%5Le|HR1jOWSMzKHWFJK5*&| z@Jb#N-saN`3nbtE`F?MA+TF|NDvmnMHC*F;r$w)DvHqVL6X0NHe$XaP;F>pvhO{HI zfodabXH2?&LF@ds{X5f7{M|2qh8x`XGtsW%e+WDk`b6u&)QrltyH+lW>)>Diy>Era zAIrBV?p>W7yyGIs%_hdcVay9PZ1!e4A>rvWRezTp+a_;!yL{3Ikn9di(5!Var=-~% zzyGuHMVHzyUn&!~w@|(jT+kIylsm-xQ0QJvo7lZovoGwCuYV%97?@0dw_bi}UH>EJ z_R09YURrv>K$9BOzyZGKy7R<)uI}I8#O}+}KM1m-z#EuEqz}8kSKRU;>~03T{qNfc zrE3=#P6SDsumV@cEqI;*oaTSHcGtJA=x1(^wLn&9aG5HC6aZOg5o5DFdWU%rJ}}zy zBdoUar*6sO!l@t?AVW;f2W$7Q&B#PEgblbZ2L!fc0T&GM1}+b71}@QAebV)j*|QQW z$rwaUP@EtSit*#SBRGAb#U5P-*nG;hvKV}EDe3_t1oS?NbycQ`1Zuh zf+0TEzNhr8 z|L1?dc=(Y=50u3o^vz0dZ~Nq;RhM|Ix8PTbm7~M!iBqc|cKb%_hGiT7aSdG=;?|t_ z<-?B+6SkFxX|6k6|Kk1L?{Vw6ftnlI zSncs%c2F=}B Date: Mon, 24 May 2021 23:19:26 +0200 Subject: [PATCH 67/74] Add templates --- doc/DISCLAIMER.md | 31 +++++++++++++++++++++++++++++++ doc/DISCLAIMER_fr.md | 33 +++++++++++++++++++++++++++++++++ manifest.json | 9 ++++++++- screenshot.png | Bin 208258 -> 0 bytes 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md delete mode 100644 screenshot.png diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..d751025 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,31 @@ +### How to creat groups + +Groups are defined by files in the `/opt/yunohost/galene/groups` directory. Various options are available (see https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file) + +### TURN server + +For VoIP and video conferencing a TURN server is also installed and configured. The TURN server listens on two UDP and TCP ports. You can get them with these commands: + +``` +sudo yunohost app setting galene turnserver_port +``` + +The TURN server will also choose a port dynamically when a new call starts. The range is between 49152 - 65535. + +For security reason the ports range (49152 - 65535) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command: + +``` +sudo yunohost firewall allow Both 49152:65535 +``` + +You might also need to open these ports (if it is not automatically done) on your ISP box. + +To prevent the situation when the server is behind a NAT, the public IP is written in the TURN server config. By this the TURN server can send its real public IP to the client. For more information see the [Coturn example config file](https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf#L56-L62). So if your IP changes, you could run the script `/opt/yunohost/galene/Coturn_config_rotate.sh` to update your config. + +If you have a dynamic IP address, you also might need to update this config automatically. To do that just edit a file named `/etc/cron.d/coturn_config_rotate` and add the following content. + +``` +*/15 * * * * root bash /opt/yunohost/galene/Coturn_config_rotate.sh; +``` + +To check if Galène can connect to the TURN server, connect to Galène as operator and type `/relay-test` in the chat box; if the TURN server is properly configured, you should see a message saying that the relay test has been successful. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..6383949 --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,33 @@ +## Configuration + +### Comment créer des groupes + +Les groupes sont définis par des fichiers dans le répertoire `/opt/yunohost/galene/groups`. Différentes options sont disponibles (voir https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file) + +### Serveur TURN + +Pour la VoIP et la visioconférence, un serveur TURN est également installé et configuré. Le serveur TURN écoute sur deux ports UDP et TCP. Vous pouvez les obtenir avec ces commandes : + +``` +sudo yunohost app setting galene turnserver_port +``` + +Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49152 et 65535. + +Par sécurité, la plage de ports (49152 - 65535) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande : + +``` +sudo yunohost firewall allow Both 49152:65535 +``` + +Vous devrez peut-être également ouvrir ces ports (si ce n'est pas fait automatiquement) sur votre box. + +Pour éviter la situation où le serveur est derrière un NAT, l'adresse IP publique est écrite dans la configuration du serveur TURN. De cette manière, le serveur TURN peut envoyer sa véritable adresse IP publique au client. Pour plus d'informations, consultez [le fichier de configuration d'exemple Coturn](https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf#L56-L62). Donc, si votre adresse IP change, vous pouvez exécuter le script `/opt/yunohost/galene/Coturn_config_rotate.sh` pour mettre à jour votre configuration. + +Si vous avez une adresse IP dynamique, vous devrez peut-être également mettre à jour cette configuration automatiquement. Pour ce faire, éditez simplement un fichier nommé `/etc/cron.d/coturn_config_rotate` et ajoutez le contenu suivant. + +``` +* / 15 * * * * root bash /opt/yunohost/galene/Coturn_config_rotate.sh; +``` + +Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à Galène en tant qu'opérateur et tapez `/relay-test` dans la boîte de dialogue chat; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relais a réussi. diff --git a/manifest.json b/manifest.json index 2b409bf..b2a8e88 100644 --- a/manifest.json +++ b/manifest.json @@ -7,7 +7,14 @@ "fr": "Serveur de visioconférence facile à déployer" }, "version": "0.3.5~ynh2", - "url": "https://galene.org/", + "url": "https://galene.org", + "upstream": { + "license": "free", + "website": "https://galene.org", + "demo": "https://galene.org:8443/", + "admindoc": "https://galene.org/", + "code": "https://github.com/jech/galene" + }, "license": "MIT", "maintainer": { "name": "eric_G", diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 2a55dfa2f12e9d307c75288383cfd78738e908b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208258 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%0A7hDU(L4LXXFX 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

)z_2h{5xO0+2#>;x}S&T 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­0++}!jBJIVPsF8- z$#%Z2&(~L>>jCK#{g*S3~0lB7bN7eVxhLyOxS#mJuU3ynV(dzXVIctvsnvs*&HH zdqp?4F3T!H7Q_GsK1|@*{IEUk2hVI5>G-o*ufTu}i2l1_`Gc{=DjSJ=ak49d*Xl!M zT~Jp&ot-U;#KOR3qnbv{_04z499$k888a~Wuy66*T@!vJ+iYhsP)ucB_qo$Vf$w6_^p(COUPsZhxWe~LF-LYU+h@)jt|pae^x@J0i29?uFjD^P!XWyL zCC;;)?EajzvfS{a?z1&$|FZ&7f9u!G5N@KY+Uv#6CTSuqz81RjS(ZGyX0aNT%8b1* zQ(drQqjT0?^1RJTOD+A~<^^JK);0?5^OnYe?u)EB3B%y7tS6(O8)1)8U1zX5&b9Uh*vbXl0V$_Iof+R|};RbcU5fp<6q# zlTC&7W)eb|imT>HMxLiTU82TM)(Mrw(h(=*JImza%~pc;1!8!3doFIvqV?)SS2<(w z^CyB)!TaOH9ZR%*DpwEKT#bGuMldN;L%;k&jp=!3HItMH_B3C`5RSu{E z9`V8a3fDw*D$xi%dmC&ZPH>xl8f&tn|I#Ez4F zZHb|ufA%~zW~EW`=D2wId;4>u$e>#Djv913YzrQ8;p&7&8hzsS-)%Lo^yF45r^6^o ziC-&R6oQ#tWu`$W{Bqpb*c?hWYVdPX*vidd3B_LGR}|@x>N=Or$)Hl5sgnq%Ju}^L zNg-F1mPJ>ur6k~4ksjg*^5nVK;6ksh*4Yu~UX#tH&K81=t8m^68$ok47L%*x(baP9 z;_~5-wQe=?%~lw9v2zN&l$E2+%juo^zI^)PJdKZ6P!I~|+EvR|CIDjc)6-LseLh0k z@$ew$Z#P%VyKEJS{NeX!$aM!wv$9xnoC?g$0n@^~r|eNY317ebj_+vKDRa^(Q3DZd z5oY}-A&$?*{5JOMu0f&9RM!o{ogItNs^I(&p0GnQ5b}2siUvd5li-QC{UB3b5E$0CKtw{{WFLkW<(4PH&TOWF#>+J7U(!Hxe?eqnj zFNhz6yP&h{2=7kg7O(|7SU)~9x+Ab>Cy(yFQ1iOq8xn=xZ3BLNzQ|l1Ry(;UInQJr zXl%4$nF7#)vyYy%=?5KBKk{$c^$8dEw%wUOb>haitC!U7JOUc^I&ik!waO!KN>>+` zRTaa5-VN^;=l?37dE=sn(yp2&oa)t{g;Y-@LM6ErUqNK56 z`qiw`{RYjaFMKk&(j$F&kN@7kZ%?}NyIrd>|JD9Q#%5Le|HR1jOWSMzKHWFJK5*&| z@Jb#N-saN`3nbtE`F?MA+TF|NDvmnMHC*F;r$w)DvHqVL6X0NHe$XaP;F>pvhO{HI zfodabXH2?&LF@ds{X5f7{M|2qh8x`XGtsW%e+WDk`b6u&)QrltyH+lW>)>Diy>Era zAIrBV?p>W7yyGIs%_hdcVay9PZ1!e4A>rvWRezTp+a_;!yL{3Ikn9di(5!Var=-~% zzyGuHMVHzyUn&!~w@|(jT+kIylsm-xQ0QJvo7lZovoGwCuYV%97?@0dw_bi}UH>EJ z_R09YURrv>K$9BOzyZGKy7R<)uI}I8#O}+}KM1m-z#EuEqz}8kSKRU;>~03T{qNfc zrE3=#P6SDsumV@cEqI;*oaTSHcGtJA=x1(^wLn&9aG5HC6aZOg5o5DFdWU%rJ}}zy zBdoUar*6sO!l@t?AVW;f2W$7Q&B#PEgblbZ2L!fc0T&GM1}+b71}@QAebV)j*|QQW z$rwaUP@EtSit*#SBRGAb#U5P-*nG;hvKV}EDe3_t1oS?NbycQ`1Zuh zf+0TEzNhr8 z|L1?dc=(Y=50u3o^vz0dZ~Nq;RhM|Ix8PTbm7~M!iBqc|cKb%_hGiT7aSdG=;?|t_ z<-?B+6SkFxX|6k6|Kk1L?{Vw6ftnlI zSncs%c2F=}B Date: Mon, 24 May 2021 21:19:34 +0000 Subject: [PATCH 68/74] Auto-update README --- README.md | 70 +++++++++++++++++++++++----------------------------- README_fr.md | 68 ++++++++++++++++++++------------------------------ 2 files changed, 58 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 4b23e15..ce19418 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,40 @@ -# Galène for YunoHost -[![Integration level](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) -[![Install Galène with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) + +--- + + + +# Galene for YunoHost + +[![Integration level](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) +[![Install galene with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Galène quickly and simply on a YunoHost server. +> *This package allows you to install galene quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). -**Shipped version:** 0.3.5 +Videoconferencing server that is easy to deploy + +**Shipped version:** 0.3.5~ynh2 + +**Demo:** https://galene.org:8443/ + ## Screenshots -![](screenshot.png) -## Demo + ![](./doc/screenshots/screenshot.png) -* [Official demo](https://galene.org:8443/) -## Configuration + + +## Disclaimers / important information ### How to creat groups @@ -55,39 +68,16 @@ If you have a dynamic IP address, you also might need to update this config auto To check if Galène can connect to the TURN server, connect to Galène as operator and type `/relay-test` in the chat box; if the TURN server is properly configured, you should see a message saying that the relay test has been successful. -## Documentation - * Official documentation: https://galene.org/ - * YunoHost documentation: https://yunohost.org/en/app_galene -## YunoHost specific features +## Documentation and resources -#### Multi-user support +* Official app website: https://galene.org - * Are LDAP and HTTP auth supported? **No** - * Can the app be used by multiple users? **Yes** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/) - -## Limitations - -* Any known limitations. - -## Additional information - -* Other info you would like to add about this app. - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/galene_ynh/issues - * App website: https://galene.org/ - * Upstream app repository: https://github.com/jech/galene - * YunoHost website: https://yunohost.org/ - ---- +* Official admin documentation: https://galene.org/ +* Upstream app code repository: https://github.com/jech/galene +* YunoHost documentation for this app: https://yunohost.org/app_galene +* Report a bug: https://github.com/YunoHost-Apps/galene_ynh/issues ## Developer info @@ -99,3 +89,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/galene_ynh/tree/testi or sudo yunohost app upgrade galene -u https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index 0c3341c..a7b6fd4 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,25 +1,32 @@ -# Galène pour YunoHost +# Galene pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) -[![Installer Galène avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) +[![Niveau d'intégration](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) +[![Installer galene avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer Galène rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +> *This package allows you to install galene quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Vue d'ensemble -Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres). -**Version incluse :** 0.3.5 +Serveur de visioconférence facile à déployer + +**Version incluse:** 0.3.5~ynh2 + +**Démo:** https://galene.org:8443/ + ## Captures d'écran -![](screenshot.png) -## Démo + ![](./doc/screenshots/screenshot.png) -* [Démo officielle](https://galene.org:8443/) + + + +## Avertissements / informations importantes ## Configuration @@ -55,39 +62,16 @@ Si vous avez une adresse IP dynamique, vous devrez peut-être également mettre Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à Galène en tant qu'opérateur et tapez `/relay-test` dans la boîte de dialogue chat; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relais a réussi. -## Documentation - * Documentation officielle : https://galene.org/ - * Documentation YunoHost : https://yunohost.org/fr/app_galene -## Caractéristiques spécifiques YunoHost +## Documentations et ressources -#### Support multi-utilisateur +* Site official de l'app : https://galene.org -* L'authentification LDAP est-elle prise en charge ? **Non** -* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/) - -## Limitations - -* Limitations connues. - -## Informations additionnelles - -* Autres informations que vous souhaitez ajouter sur cette application. - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/galene_ynh/issues - * Site de l'application : https://galene.org/ - * Dépôt de l'application principale : https://github.com/jech/galene - * Site web YunoHost : https://yunohost.org/ - ---- +* Documentation officielle de l'admin: https://galene.org/ +* Dépôt de code officiel de l'app: https://github.com/jech/galene +* Documentation YunoHost pour cette app: https://yunohost.org/app_galene +* Signaler un bug: https://github.com/YunoHost-Apps/galene_ynh/issues ## Informations pour les développeurs @@ -96,6 +80,8 @@ Merci de faire vos pull request sur la [branche testing](https://github.com/Yuno Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug -ou +or sudo yunohost app upgrade galene -u https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications:** https://yunohost.org/packaging_apps \ No newline at end of file From 2c4aa90a4574ccac143150eeb7e1854f73393dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 24 May 2021 23:54:52 +0200 Subject: [PATCH 69/74] Testing (#53) * Add new line in passwd file for user:password parsing Co-authored-by: tituspijean --- README.md | 70 ++++++++---------- README_fr.md | 68 +++++++---------- check_process | 6 -- conf/passwd | 3 +- doc/DISCLAIMER.md | 31 ++++++++ doc/DISCLAIMER_fr.md | 33 +++++++++ .../screenshots/screenshot.png | Bin manifest.json | 11 ++- scripts/install | 1 - scripts/remove | 10 +++ scripts/upgrade | 1 - 11 files changed, 143 insertions(+), 91 deletions(-) create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md rename screenshot.png => doc/screenshots/screenshot.png (100%) diff --git a/README.md b/README.md index 4b23e15..ce19418 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,40 @@ -# Galène for YunoHost -[![Integration level](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) -[![Install Galène with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) + +--- + + + +# Galene for YunoHost + +[![Integration level](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) +[![Install galene with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Galène quickly and simply on a YunoHost server. +> *This package allows you to install galene quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other). -**Shipped version:** 0.3.5 +Videoconferencing server that is easy to deploy + +**Shipped version:** 0.3.5~ynh2 + +**Demo:** https://galene.org:8443/ + ## Screenshots -![](screenshot.png) -## Demo + ![](./doc/screenshots/screenshot.png) -* [Official demo](https://galene.org:8443/) -## Configuration + + +## Disclaimers / important information ### How to creat groups @@ -55,39 +68,16 @@ If you have a dynamic IP address, you also might need to update this config auto To check if Galène can connect to the TURN server, connect to Galène as operator and type `/relay-test` in the chat box; if the TURN server is properly configured, you should see a message saying that the relay test has been successful. -## Documentation - * Official documentation: https://galene.org/ - * YunoHost documentation: https://yunohost.org/en/app_galene -## YunoHost specific features +## Documentation and resources -#### Multi-user support +* Official app website: https://galene.org - * Are LDAP and HTTP auth supported? **No** - * Can the app be used by multiple users? **Yes** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/) - -## Limitations - -* Any known limitations. - -## Additional information - -* Other info you would like to add about this app. - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/galene_ynh/issues - * App website: https://galene.org/ - * Upstream app repository: https://github.com/jech/galene - * YunoHost website: https://yunohost.org/ - ---- +* Official admin documentation: https://galene.org/ +* Upstream app code repository: https://github.com/jech/galene +* YunoHost documentation for this app: https://yunohost.org/app_galene +* Report a bug: https://github.com/YunoHost-Apps/galene_ynh/issues ## Developer info @@ -99,3 +89,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/galene_ynh/tree/testi or sudo yunohost app upgrade galene -u https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index 0c3341c..a7b6fd4 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,25 +1,32 @@ -# Galène pour YunoHost +# Galene pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) -[![Installer Galène avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) +[![Niveau d'intégration](https://dash.yunohost.org/integration/galene.svg)](https://dash.yunohost.org/appci/app/galene) ![](https://ci-apps.yunohost.org/ci/badges/galene.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/galene.maintain.svg) +[![Installer galene avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=galene) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer Galène rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +> *This package allows you to install galene quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Vue d'ensemble -Galène est un serveur de visioconférence facile à déployer (il suffit de copier quelques fichiers et d'exécuter le binaire) et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les conférences (où un seul orateur diffuse l'audio et la vidéo à des centaines ou des milliers d'utilisateurs), mais a ensuite évolué pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un quelques dizaines d'utilisateurs interagissent les uns avec les autres). -**Version incluse :** 0.3.5 +Serveur de visioconférence facile à déployer + +**Version incluse:** 0.3.5~ynh2 + +**Démo:** https://galene.org:8443/ + ## Captures d'écran -![](screenshot.png) -## Démo + ![](./doc/screenshots/screenshot.png) -* [Démo officielle](https://galene.org:8443/) + + + +## Avertissements / informations importantes ## Configuration @@ -55,39 +62,16 @@ Si vous avez une adresse IP dynamique, vous devrez peut-être également mettre Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à Galène en tant qu'opérateur et tapez `/relay-test` dans la boîte de dialogue chat; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relais a réussi. -## Documentation - * Documentation officielle : https://galene.org/ - * Documentation YunoHost : https://yunohost.org/fr/app_galene -## Caractéristiques spécifiques YunoHost +## Documentations et ressources -#### Support multi-utilisateur +* Site official de l'app : https://galene.org -* L'authentification LDAP est-elle prise en charge ? **Non** -* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/galene.svg)](https://ci-apps.yunohost.org/ci/apps/galene/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/galene.svg)](https://ci-apps-arm.yunohost.org/ci/apps/galene/) - -## Limitations - -* Limitations connues. - -## Informations additionnelles - -* Autres informations que vous souhaitez ajouter sur cette application. - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/galene_ynh/issues - * Site de l'application : https://galene.org/ - * Dépôt de l'application principale : https://github.com/jech/galene - * Site web YunoHost : https://yunohost.org/ - ---- +* Documentation officielle de l'admin: https://galene.org/ +* Dépôt de code officiel de l'app: https://github.com/jech/galene +* Documentation YunoHost pour cette app: https://yunohost.org/app_galene +* Signaler un bug: https://github.com/YunoHost-Apps/galene_ynh/issues ## Informations pour les développeurs @@ -96,6 +80,8 @@ Merci de faire vos pull request sur la [branche testing](https://github.com/Yuno Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug -ou +or sudo yunohost app upgrade galene -u https://github.com/YunoHost-Apps/galene_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/check_process b/check_process index 14c9851..6c729d5 100644 --- a/check_process +++ b/check_process @@ -1,8 +1,3 @@ -# See here for more information -# https://github.com/YunoHost/package_check#syntax-check_process-file - -# Move this file from check_process.default to check_process when you have filled it. - ;; Test complet ; Manifest domain="domain.tld" @@ -31,4 +26,3 @@ Notification=none ; commit=c06f6235a93587e16524fa5b124e4d9e138a8109 name=Allow naming groups with spaces (#21) manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& - diff --git a/conf/passwd b/conf/passwd index 61a88b3..fdcf9ba 100644 --- a/conf/passwd +++ b/conf/passwd @@ -1 +1,2 @@ -__ADMIN__:__PASSWORD__ \ No newline at end of file +__ADMIN__:__PASSWORD__ + diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..d751025 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,31 @@ +### How to creat groups + +Groups are defined by files in the `/opt/yunohost/galene/groups` directory. Various options are available (see https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file) + +### TURN server + +For VoIP and video conferencing a TURN server is also installed and configured. The TURN server listens on two UDP and TCP ports. You can get them with these commands: + +``` +sudo yunohost app setting galene turnserver_port +``` + +The TURN server will also choose a port dynamically when a new call starts. The range is between 49152 - 65535. + +For security reason the ports range (49152 - 65535) isn't automatically open by default. If you want to use Galène server for VoIP or conferencing you will need to open this port range manually. To do this, just run this command: + +``` +sudo yunohost firewall allow Both 49152:65535 +``` + +You might also need to open these ports (if it is not automatically done) on your ISP box. + +To prevent the situation when the server is behind a NAT, the public IP is written in the TURN server config. By this the TURN server can send its real public IP to the client. For more information see the [Coturn example config file](https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf#L56-L62). So if your IP changes, you could run the script `/opt/yunohost/galene/Coturn_config_rotate.sh` to update your config. + +If you have a dynamic IP address, you also might need to update this config automatically. To do that just edit a file named `/etc/cron.d/coturn_config_rotate` and add the following content. + +``` +*/15 * * * * root bash /opt/yunohost/galene/Coturn_config_rotate.sh; +``` + +To check if Galène can connect to the TURN server, connect to Galène as operator and type `/relay-test` in the chat box; if the TURN server is properly configured, you should see a message saying that the relay test has been successful. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..6383949 --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,33 @@ +## Configuration + +### Comment créer des groupes + +Les groupes sont définis par des fichiers dans le répertoire `/opt/yunohost/galene/groups`. Différentes options sont disponibles (voir https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file) + +### Serveur TURN + +Pour la VoIP et la visioconférence, un serveur TURN est également installé et configuré. Le serveur TURN écoute sur deux ports UDP et TCP. Vous pouvez les obtenir avec ces commandes : + +``` +sudo yunohost app setting galene turnserver_port +``` + +Le serveur TURN choisira également un port de manière dynamique lors du démarrage d'une nouvelle visioconférence. La plage est comprise entre 49152 et 65535. + +Par sécurité, la plage de ports (49152 - 65535) n'est pas automatiquement ouverte par défaut. Si vous souhaitez utiliser Galène pour la VoIP ou la visioconférence, vous devrez ouvrir cette plage de ports manuellement. Pour ce faire, exécutez simplement cette commande : + +``` +sudo yunohost firewall allow Both 49152:65535 +``` + +Vous devrez peut-être également ouvrir ces ports (si ce n'est pas fait automatiquement) sur votre box. + +Pour éviter la situation où le serveur est derrière un NAT, l'adresse IP publique est écrite dans la configuration du serveur TURN. De cette manière, le serveur TURN peut envoyer sa véritable adresse IP publique au client. Pour plus d'informations, consultez [le fichier de configuration d'exemple Coturn](https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf#L56-L62). Donc, si votre adresse IP change, vous pouvez exécuter le script `/opt/yunohost/galene/Coturn_config_rotate.sh` pour mettre à jour votre configuration. + +Si vous avez une adresse IP dynamique, vous devrez peut-être également mettre à jour cette configuration automatiquement. Pour ce faire, éditez simplement un fichier nommé `/etc/cron.d/coturn_config_rotate` et ajoutez le contenu suivant. + +``` +* / 15 * * * * root bash /opt/yunohost/galene/Coturn_config_rotate.sh; +``` + +Pour vérifier si Galène peut se connecter au serveur TURN, connectez-vous à Galène en tant qu'opérateur et tapez `/relay-test` dans la boîte de dialogue chat; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relais a réussi. diff --git a/screenshot.png b/doc/screenshots/screenshot.png similarity index 100% rename from screenshot.png rename to doc/screenshots/screenshot.png diff --git a/manifest.json b/manifest.json index e2471e7..b2a8e88 100644 --- a/manifest.json +++ b/manifest.json @@ -6,8 +6,15 @@ "en": "Videoconferencing server that is easy to deploy", "fr": "Serveur de visioconférence facile à déployer" }, - "version": "0.3.5~ynh1", - "url": "https://galene.org/", + "version": "0.3.5~ynh2", + "url": "https://galene.org", + "upstream": { + "license": "free", + "website": "https://galene.org", + "demo": "https://galene.org:8443/", + "admindoc": "https://galene.org/", + "code": "https://github.com/jech/galene" + }, "license": "MIT", "maintainer": { "name": "eric_G", diff --git a/scripts/install b/scripts/install index af0c440..c069d7f 100755 --- a/scripts/install +++ b/scripts/install @@ -227,7 +227,6 @@ ynh_add_config --template="../conf/ice-servers.json" --destination="$final_path/ # WARNING : theses command are used in INSTALL, UPGRADE # For any update do it in all files - cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh" chmod +x $final_path/Coturn_config_rotate.sh diff --git a/scripts/remove b/scripts/remove index 1035d54..8845489 100755 --- a/scripts/remove +++ b/scripts/remove @@ -82,6 +82,16 @@ ynh_script_progression --message="Removing logrotate configuration..." --weight= # Remove the app-specific logrotate config ynh_remove_logrotate +#================================================= +# REMOVE THE CRON FILE +#================================================= +ynh_script_progression --message="Removing the cron file..." --weight=1 + +if [[ ! -f "/etc/cron.d/coturn_config_rotate" ]]; then + # If a cron job as been add by user, remove it + ynh_secure_remove --file="/etc/cron.d/coturn_config_rotate" +fi + #================================================= # CLOSE A PORT #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index dcf9e1d..883c6e0 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -209,7 +209,6 @@ ynh_store_file_checksum --file="$coturn_config_path" # WARNING : theses command are used in INSTALL, UPGRADE # For any update do it in all files - cp ../sources/Coturn_config_rotate.sh $final_path/Coturn_config_rotate.sh ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file="$final_path/Coturn_config_rotate.sh" chmod +x $final_path/Coturn_config_rotate.sh From 960a2814cb25105f5193db9b58416f0734b1b3db Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 1 Aug 2021 14:07:43 +0000 Subject: [PATCH 70/74] Auto-update README --- README.md | 22 +++++----------------- README_fr.md | 36 ++++++++++++++---------------------- 2 files changed, 19 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index ce19418..c2acbaa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ - - ---- -