From 4d83555520930b11feab7f9f5069aad36af312a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 27 Dec 2021 17:10:09 +0100 Subject: [PATCH] Testing (#129) - Fix a bug where the installed plugins where not properly set in the config.inc.php file. - Add config panel - Upgrade plugins version --- README.md | 2 +- README_fr.md | 2 +- check_process | 6 +-- conf/config.inc.php | 1 + config_panel.toml | 25 ++++++++++++ manifest.json | 2 +- scripts/_common.sh | 4 +- scripts/config | 95 +++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 2 +- scripts/remove | 26 ++++--------- scripts/restore | 10 +++-- scripts/upgrade | 19 ++++++++- 12 files changed, 163 insertions(+), 31 deletions(-) create mode 100644 config_panel.toml create mode 100644 scripts/config diff --git a/README.md b/README.md index b498917..6196c2a 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ In addition to Roundcube core features, the following are made available with th * Support for PGP encryption with Enigma plugin by default. -**Shipped version:** 1.5.1~ynh1 +**Shipped version:** 1.5.1~ynh3 **Demo:** https://demo.yunohost.org/webmail/ diff --git a/README_fr.md b/README_fr.md index e205090..a8ec4a7 100644 --- a/README_fr.md +++ b/README_fr.md @@ -24,7 +24,7 @@ En plus des fonctionnalités principales de Roundcube, les éléments suivants s * Prise en charge du chiffrement PGP avec le plugin Enigma installé par default. -**Version incluse :** 1.5.1~ynh1 +**Version incluse :** 1.5.1~ynh3 **Démo :** https://demo.yunohost.org/webmail/ diff --git a/check_process b/check_process index 399421a..318ab66 100644 --- a/check_process +++ b/check_process @@ -12,7 +12,7 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=67cb9813b18254b5f478d9a2974862d0a3af40e5 + upgrade=1 from_commit=f470adac1152482928c90a9c657b968f0907cf8a backup_restore=1 multi_instance=1 change_url=1 @@ -20,5 +20,5 @@ Email= Notification=none ;;; Upgrade options - ; commit=67cb9813b18254b5f478d9a2974862d0a3af40e5 - name=Merge pull request #108 + ; commit=f470adac1152482928c90a9c657b968f0907cf8a + name=Merge pull request #119 diff --git a/conf/config.inc.php b/conf/config.inc.php index 930cdeb..722521b 100644 --- a/conf/config.inc.php +++ b/conf/config.inc.php @@ -140,6 +140,7 @@ $config['plugins'] = array( 'new_user_dialog', 'new_user_identity', 'enigma', + // installed plugins ); // ---------------------------------- diff --git a/config_panel.toml b/config_panel.toml new file mode 100644 index 0000000..61d6b6f --- /dev/null +++ b/config_panel.toml @@ -0,0 +1,25 @@ +version = "1.0" + +[main] +name = "Roundcube configuration" + + [main.php_fpm_config] + name = "PHP-FPM configuration" + + [main.php_fpm_config.fpm_footprint] + ask = "Memory footprint of the service?" + choices = ["low", "medium", "high", "specific"] + default = "low" + help = "low <= 20Mb per pool. medium between 20Mb and 40Mb per pool. high > 40Mb per pool.
Use specific to set a value with the following option." + + [main.php_fpm_config.free_footprint] + ask = "Memory footprint of the service?" + type = "number" + default = "0" + help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values." + + [main.php_fpm_config.fpm_usage] + ask = "Expected usage of the service?" + choices = ["low", "medium", "high"] + default = "low" + help = "low: Personal usage, behind the sso. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." diff --git a/manifest.json b/manifest.json index dc680ba..4471147 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Open Source Webmail software", "fr": "Webmail Open Source" }, - "version": "1.5.1~ynh1", + "version": "1.5.1~ynh3", "url": "https://roundcube.net/", "upstream": { "license": "GPL-3.0-only", diff --git a/scripts/_common.sh b/scripts/_common.sh index aefb5de..7712b9e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -13,9 +13,9 @@ pkg_dependencies="php-pear php${YNH_PHP_VERSION}-ldap php${YNH_PHP_VERSION}-mysq YNH_COMPOSER_VERSION=2.1.1 # Plugins version -contextmenu_version=3.2.1 +contextmenu_version=3.3 automatic_addressbook_version=v0.4.3 -carddav_version=3.0.3 +carddav_version=4.3.0 #================================================= # EXPERIMENTAL HELPERS diff --git a/scripts/config b/scripts/config new file mode 100644 index 0000000..3440bd2 --- /dev/null +++ b/scripts/config @@ -0,0 +1,95 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +current_fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) + +#================================================= +# SPECIFIC GETTERS FOR TOML SHORT KEY +#================================================= + +get__fpm_footprint() { + # Free footprint value for php-fpm + # Check if current_fpm_footprint is an integer + if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null + then + echo "specific" + else + echo "$current_fpm_footprint" + fi +} + +get__free_footprint() { + # Free footprint value for php-fpm + # Check if current_fpm_footprint is an integer + if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null + then + # If current_fpm_footprint is an integer, that's a numeric value for the footprint + echo "$current_fpm_footprint" + else + echo "0" + fi +} + +#================================================= +# SPECIFIC SETTERS FOR TOML SHORT KEYS +#================================================= + +set__fpm_footprint() { + if [ "$fpm_footprint" != "specific" ] + then + ynh_app_setting_set --app=$app --key=fpm_footprint --value="$fpm_footprint" + fi +} + +set__free_footprint() { + if [ "$fpm_footprint" = "specific" ] + then + ynh_app_setting_set --app=$app --key=fpm_footprint --value="$free_footprint" + fi +} + +#================================================= +# GENERIC FINALIZATION +#================================================= + +ynh_app_config_validate() { + _ynh_app_config_validate + + if [ "${changed[fpm_usage]}" == "true" ] || [ "${changed[fpm_footprint]}" == "true" ] || [ "${changed[free_footprint]}" == "true" ]; then + # If fpm_footprint is set to 'specific', use $free_footprint value. + if [ "$fpm_footprint" = "specific" ] + then + fpm_footprint=$free_footprint + fi + + if [ "$fpm_footprint" == "0" ] + then + ynh_print_err --message="When selecting 'specific', you have to set a footprint value into the field below." + + exit 0 + fi + fi +} + +ynh_app_config_apply() { + _ynh_app_config_apply + + ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint +} + +ynh_app_config_run $1 diff --git a/scripts/install b/scripts/install index 1499432..5120e14 100644 --- a/scripts/install +++ b/scripts/install @@ -102,7 +102,7 @@ ynh_add_nginx_config ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --usage=low --footprint=low phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/remove b/scripts/remove index 3f9ed8b..2c7f294 100644 --- a/scripts/remove +++ b/scripts/remove @@ -20,16 +20,6 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -#================================================= -# STANDARD REMOVE -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." --weight=8 - -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - #================================================= # REMOVE THE MYSQL DATABASE #================================================= @@ -38,14 +28,6 @@ ynh_script_progression --message="Removing the MySQL database..." --weight=2 # Remove a database if it exists, along with the associated user ynh_mysql_remove_db --db_user=$db_name --db_name=$db_name -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." --weight=1 - -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - #================================================= # REMOVE APP MAIN DIR #================================================= @@ -70,6 +52,14 @@ ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=3 # Remove the dedicated PHP-FPM config ynh_remove_fpm_config +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." --weight=1 + +# Remove metapackage and its dependencies +ynh_remove_app_dependencies + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/restore b/scripts/restore index ca233ef..8022c1b 100644 --- a/scripts/restore +++ b/scripts/restore @@ -30,13 +30,15 @@ db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) +fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) + #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= ynh_script_progression --message="Validating restoration parameters..." --weight=3 -test ! -d $final_path \ - || ynh_die --message="There is already a directory: $final_path " +test ! -d $final_path || ynh_die --message="There is already a directory: $final_path " #================================================= # STANDARD RESTORATION STEPS @@ -71,7 +73,9 @@ chown -R $app:www-data "$final_path" ynh_script_progression --message="Restoring the PHP-FPM configuration..." --weight=1 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" -ynh_add_fpm_config + +# Recreate a dedicated php-fpm config +ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --phpversion=$phpversion #================================================= # REINSTALL DEPENDENCIES diff --git a/scripts/upgrade b/scripts/upgrade index 00365b3..1877b73 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -26,6 +26,9 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) language=$(ynh_app_setting_get --app=$app --key=language) db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) +fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) + #================================================= # CHECK VERSION #================================================= @@ -80,6 +83,18 @@ fi ynh_app_setting_set --app=$app --key=language --value=$language fi +# If fpm_footprint doesn't exist, create it +if [ -z "$fpm_footprint" ]; then + fpm_footprint=low + ynh_app_setting_set --app=$app --key=fpm_footprint --value=$fpm_footprint +fi + +# If fpm_usage doesn't exist, create it +if [ -z "$fpm_usage" ]; then + fpm_usage=low + ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage +fi + # Cleaning legacy permissions if ynh_legacy_permissions_exists; then ynh_legacy_permissions_delete_all @@ -137,7 +152,7 @@ ynh_install_app_dependencies $pkg_dependencies ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=5 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint #================================================= # SPECIFIC UPGRADE @@ -164,6 +179,8 @@ then if [ -f "$final_path/composer.json" ] then ynh_exec_warn_less ynh_composer_exec --commands="update" + # Update plugin-installer for Composer version 2.0 + ynh_exec_warn_less ynh_composer_exec --commands="require roundcube/plugin-installer:>=0.2.0" else # Install composer.json cp "$final_path/composer.json-dist" "$final_path/composer.json"