diff --git a/README.md b/README.md index bbc195a..2226cb9 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ In addition to Roundcube core features, the following are made available with th * Allow to install the [CardDAV](https://plugins.roundcube.net/packages/roundcube/carddav) (address book) synchronization plugin at the installation - note that if you have installed Nextcloud or Baïkal, it will automatically add the corresponding and existing address book. #### Multi-users support + * Integrate with YunoHost users and SSO - i.e logout button, YunoHost users search #### Supported architectures diff --git a/README_fr.md b/README_fr.md index 4f6a5cf..2e53f0e 100644 --- a/README_fr.md +++ b/README_fr.md @@ -67,30 +67,29 @@ Si, par exemple, vous voulez installer le plugin [html5_notifier](https://plugin $ ssh admin@1.2.3.4 $ sudo -i ``` - + 2. Connectez-vous en tant qu'utilisateur `roundcube` (qui possède le répertoire roundcube) et naviguez dedans : ``` # su -s /bin/bash - roundcube $ cd /var/www/roundcube ``` -3. Installez le plugin que vous voulez en utilisant Composer - notez que vous devez spécifier - *kitist/html5_notifier* et pas seulement *html5_notifier* : +3. Installez le plugin que vous voulez en utilisant Composer - notez que vous devez spécifier *kitist/html5_notifier* et pas seulement *html5_notifier* : ``` $ COMPOSER_HOME=./.composer php composer.phar require "kitist/html5_notifier" ``` -4. Activez-le dans le fichier de configuration local `conf/local.inc.php` en utilisant un éditeur de texte en ajoutant : +4. Activez-le dans le fichier de configuration local `conf/local.inc.php` en ajoutant : ``` '{baikal_id}', + 'username' => '%u', + 'password' => '%p', + 'url' => '{baikal_url}/card.php/addressbooks/%u/', + + // optional attributes + 'active' => true, + 'readonly' => false, + 'refresh_time' => '00:05:00', + + 'fixed' => array('username', 'password'), + 'hide' => false, +); diff --git a/conf/carddav.config.inc.php b/conf/carddav.config.inc.php deleted file mode 100644 index 13c4509..0000000 --- a/conf/carddav.config.inc.php +++ /dev/null @@ -1,59 +0,0 @@ - 'Baïkal', - 'username' => '%u', - 'password' => '%p', - 'url' => '{baikal_url}/card.php/addressbooks/%u/', - - // optional attributes - 'active' => true, - 'readonly' => false, - 'refresh_time' => '00:05:00', - - 'fixed' => array('username', 'password'), - 'hide' => false, -); -END: baikal */ - -/* PRESET FOR: owncloud -$prefs['ownCloud'] = array( - // required attributes - 'name' => 'ownCloud', - 'username' => '%u', - 'password' => '%p', - 'url' => '{owncloud_url}/remote.php/dav/addressbooks/users/%u/default/', - - // optional attributes - 'active' => true, - 'readonly' => false, - 'refresh_time' => '00:05:00', - - 'fixed' => array('username', 'password'), - 'hide' => false, -); -END: owncloud */ - -/* PRESET FOR: nextcloud -$prefs['NextCloud'] = array( - // required attributes - 'name' => 'nextCloud', - 'username' => '%u', - 'password' => '%p', - 'url' => '{nextcloud_url}/remote.php/dav/addressbooks/users/%u/contacts/', - - // optional attributes - 'active' => true, - 'readonly' => false, - 'refresh_time' => '00:05:00', - - 'fixed' => array('username', 'password'), - 'hide' => false, -); -END: nextcloud */ diff --git a/conf/config.inc.php b/conf/config.inc.php index f1b5959..0c16976 100644 --- a/conf/config.inc.php +++ b/conf/config.inc.php @@ -97,7 +97,22 @@ $config['product_name'] = 'YunoHost Webmail'; $config['des_key'] = '__DESKEY__'; // skin name: folder from skins/ -$config['skin'] = 'larry'; +$config['skin'] = 'elastic'; + +// ---------------------------------- +// USER INTERFACE +// ---------------------------------- + +// the default locale setting (leave empty for auto-detection) +// RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR +$config['language'] = '__LANGUAGE__'; + +// use this format for date display (date or strftime format) +$config['date_format'] = 'd-m-Y'; + +// Make use of the built-in spell checker. It is based on GoogieSpell. +$config['enable_spellcheck'] = false; + // Enable YunoHost users search in the address book. $config['ldap_public']['yunohost'] = array( diff --git a/conf/nextcloud.inc.php b/conf/nextcloud.inc.php new file mode 100644 index 0000000..46d3158 --- /dev/null +++ b/conf/nextcloud.inc.php @@ -0,0 +1,16 @@ + +$prefs['{nextcloud_id}'] = array( + // required attributes + 'name' => '{nextcloud_id}', + 'username' => '%u', + 'password' => '%p', + 'url' => '{nextcloud_url}/remote.php/dav/addressbooks/users/%u/contacts/', + + // optional attributes + 'active' => true, + 'readonly' => false, + 'refresh_time' => '00:05:00', + + 'fixed' => array('username', 'password'), + 'hide' => false, +); diff --git a/conf/nginx.conf b/conf/nginx.conf index 5dc0acc..7247307 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -17,7 +17,7 @@ location __PATH__/ { location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_index index.php; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $fastcgi_path_info; @@ -39,6 +39,7 @@ location __PATH__/favicon.ico { location ~ ^__PATH__/(config|temp|logs)/ { deny all; } + location ~ ^__PATH__/(.+/|)\. { deny all; } diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 2b5d7b2..61b251f 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -33,7 +33,7 @@ group = __USER__ ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) diff --git a/manifest.json b/manifest.json index 502b8cb..2942b6e 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Open Source Webmail software", "fr": "Webmail Open Source" }, - "version": "1.4.9~ynh1", + "version": "1.4.9~ynh2", "url": "https://roundcube.net/", "license": "GPL-3.0-only", "maintainer": { @@ -14,7 +14,7 @@ "email": "apps@yunohost.org" }, "requirements": { - "yunohost": ">= 3.5.0" + "yunohost": ">= 4.0.7" }, "multi_instance": true, "services": [ @@ -43,6 +43,16 @@ "example": "/webmail", "default": "/webmail" }, + { + "name": "language", + "type": "string", + "ask": { + "en": "Choose the application language", + "fr": "Choisissez la langue de l'application" + }, + "choices": ["fr_FR", "en_GB", "de_DE"], + "default": "en_GB" + }, { "name": "with_carddav", "type": "boolean", diff --git a/scripts/_common.sh b/scripts/_common.sh index 16d78b9..45bb9ec 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,8 +4,13 @@ # COMMON VARIABLES #================================================= +YNH_PHP_VERSION="7.3" + # Package dependencies -pkg_dependencies="php-cli php-common php-intl php-json php-pear php-auth-sasl php-mail-mime php-patchwork-utf8 php-net-smtp php-net-socket php-zip php-gd php-mbstring php-curl" +extra_php_dependencies="php-pear php${YNH_PHP_VERSION}-ldap php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-cli php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-json php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-gd php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-dom php${YNH_PHP_VERSION}-curl" + +# Composer version +composer_version=1.10.17 # Plugins version contextmenu_version=2.3 @@ -16,9 +21,15 @@ carddav_version=3.0.3 # EXPERIMENTAL HELPERS #================================================= +readonly YNH_DEFAULT_COMPOSER_VERSION=1.10.17 +# Declare the actual composer version to use. +# A packager willing to use another version of composer can override the variable into its _common.sh. +YNH_COMPOSER_VERSION=${YNH_COMPOSER_VERSION:-$YNH_DEFAULT_COMPOSER_VERSION} + # Execute a command with Composer # -# usage: ynh_composer_exec --phpversion=phpversion [--workdir=$final_path] --commands="commands" +# usage: ynh_composer_exec [--phpversion=phpversion] [--workdir=$final_path] --commands="commands" +# | arg: -v, --phpversion - PHP version to use with composer # | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. # | arg: -c, --commands - Commands to execute. ynh_composer_exec () { @@ -31,7 +42,7 @@ ynh_composer_exec () { # Manage arguments with getopts ynh_handle_getopts_args "$@" workdir="${workdir:-$final_path}" - phpversion="${phpversion:-7.0}" + phpversion="${phpversion:-$YNH_PHP_VERSION}" COMPOSER_HOME="$workdir/.composer" \ php${phpversion} "$workdir/composer.phar" $commands \ @@ -40,25 +51,33 @@ ynh_composer_exec () { # Install and initialize Composer in the given directory # -# usage: ynh_install_composer --phpversion=phpversion [--workdir=$final_path] +# usage: ynh_install_composer [--phpversion=phpversion] [--workdir=$final_path] [--install_args="--optimize-autoloader"] [--composerversion=composerversion] +# | arg: -v, --phpversion - PHP version to use with composer # | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. +# | arg: -a, --install_args - Additional arguments provided to the composer install. Argument --no-dev already include +# | arg: -c, --composerversion - Composer version to install ynh_install_composer () { # Declare an array to define the options of this helper. - local legacy_args=vw - declare -Ar args_array=( [v]=phpversion= [w]=workdir= ) + local legacy_args=vwa + declare -Ar args_array=( [v]=phpversion= [w]=workdir= [a]=install_args= [c]=composerversion=) local phpversion local workdir + local install_args + local composerversion # Manage arguments with getopts ynh_handle_getopts_args "$@" workdir="${workdir:-$final_path}" - phpversion="${phpversion:-7.0}" + phpversion="${phpversion:-$YNH_PHP_VERSION}" + install_args="${install_args:-}" + composerversion="${composerversion:-$YNH_COMPOSER_VERSION}" curl -sS https://getcomposer.org/installer \ | COMPOSER_HOME="$workdir/.composer" \ - php${phpversion} -- --quiet --install-dir="$workdir" \ + php${phpversion} -- --quiet --install-dir="$workdir" --version=$composerversion \ || ynh_die "Unable to install Composer." # update dependencies to create composer.lock - ynh_composer_exec --phpversion="${phpversion}" --workdir="$workdir" --commands="install --no-dev" \ + ynh_composer_exec --phpversion="${phpversion}" --workdir="$workdir" --commands="install --no-dev $install_args" \ || ynh_die "Unable to update core dependencies with Composer." } + diff --git a/scripts/backup b/scripts/backup index a1d85d7..6f4f9c1 100644 --- a/scripts/backup +++ b/scripts/backup @@ -19,41 +19,42 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_print_info --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_script_progression --message="Backing up the main app directory..." ynh_backup --src_path="$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Backing up nginx web server configuration..." ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Backing up php-fpm configuration..." -ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # BACKUP THE MYSQL DATABASE #================================================= -ynh_script_progression --message="Backing up the MySQL database..." +ynh_print_info --message="Backing up the MySQL database..." ynh_mysql_dump_db --database="$db_name" > db.sql @@ -61,4 +62,4 @@ ynh_mysql_dump_db --database="$db_name" > db.sql # END OF SCRIPT #================================================= -ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index 14c221d..8ae2680 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -24,7 +24,7 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_script_progression --message="Loading installation settings..." --weight=2 # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) @@ -50,23 +50,23 @@ fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating nginx web server configuration..." --weight=2 +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2 nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# Change the path in the NGINX config file if [ $change_path -eq 1 ] then - # Make a backup of the original nginx config file if modified + # Make a backup of the original NGINX config file if modified ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for nginx helper + # Set global variables for NGINX helper domain="$old_domain" path_url="$new_path" - # Create a dedicated nginx config + # Create a dedicated NGINX config ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location @@ -81,7 +81,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." --weight=2 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index 38d9854..f9a2132 100644 --- a/scripts/install +++ b/scripts/install @@ -24,13 +24,14 @@ domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH with_carddav=$YNH_APP_ARG_WITH_CARDDAV with_enigma=$YNH_APP_ARG_WITH_ENIGMA +language=$YNH_APP_ARG_LANGUAGE app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -ynh_script_progression --message="Validating installation parameters..." +ynh_script_progression --message="Validating installation parameters..." --weight=1 final_path=/var/www/$app test ! -e "$final_path" || ynh_die --message="This path already contains a folder" @@ -47,16 +48,10 @@ 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=with_carddav --value=$with_carddav ynh_app_setting_set --app=$app --key=with_enigma --value=$with_enigma +ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # STANDARD MODIFICATIONS -#================================================= -# INSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Installing dependencies..." - -ynh_install_app_dependencies "$pkg_dependencies" - #================================================= # CREATE A MYSQL DATABASE #================================================= @@ -78,9 +73,9 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." +ynh_script_progression --message="Configuring NGINX web server..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -94,17 +89,18 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." --weight=2 +ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP #================================================= # INSTALL AND INITIALIZE COMPOSER #================================================= -ynh_script_progression --message="Installing roundcube with composer..." --weight=30 +ynh_script_progression --message="Installing Roundcube with Composer..." --weight=30 # Install composer.json cp "$final_path/composer.json-dist" "$final_path/composer.json" @@ -123,16 +119,17 @@ ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name #================================================= # CONFIGURE ROUNDCUBE #================================================= -ynh_script_progression --message="Configuring roundcube..." +ynh_script_progression --message="Configuring $app..." rc_conf="$final_path/config/config.inc.php" cp ../conf/config.inc.php "$rc_conf" ynh_replace_string --match_string="__DESKEY__" --replace_string="$(ynh_string_random --length=24)" --target_file="$rc_conf" -ynh_replace_string --match_string="__DBUSER__" --replace_string=$db_name --target_file="$rc_conf" +ynh_replace_string --match_string="__DBUSER__" --replace_string="$db_name" --target_file="$rc_conf" ynh_replace_string --match_string="__DBPASS__" --replace_string="$db_pwd" --target_file="$rc_conf" -ynh_replace_string --match_string="__DBNAME__" --replace_string=$db_name --target_file="$rc_conf" +ynh_replace_string --match_string="__DBNAME__" --replace_string="$db_name" --target_file="$rc_conf" +ynh_replace_string --match_string="__LANGUAGE__" --replace_string="$language" --target_file="$rc_conf" #================================================= # INSTALL ADDITIONAL PLUGINS @@ -162,27 +159,27 @@ then carddav_tmp_config="../conf/carddav.config.inc.php" carddav_server=0 + # Copy the plugin configuration file + cp $final_path/plugins/carddav/config.inc.php{.dist,} + # Look for installed and supported CardDAV servers - for carddav_app in "owncloud" "nextcloud" "baikal" + for carddav_app in "nextcloud" "baikal" do - carddav_app_id=$(yunohost app list --installed -f $carddav_app \ - --output-as json | grep -Po '"id":[ ]?"\K.*?(?=")' | head -1) - if [ -n "$carddav_app_id" ] - then + carddav_app_ids=$(yunohost app list | grep "id: $carddav_app" | grep -Po 'id: \K(.*)' || echo "") + for carddav_app_id in $carddav_app_ids + do carddav_server=1 + # Append preset configuration to the config file + cat "../conf/${carddav_app}.inc.php" >> $final_path/plugins/carddav/config.inc.php # Retrieve app settings and enable relevant preset carddav_domain=$(ynh_app_setting_get --app=$carddav_app_id --key=domain) carddav_path=$(ynh_app_setting_get --app=$carddav_app_id --key=path) carddav_url="https://${carddav_domain}${carddav_path%/}" - ynh_replace_string --match_string="{${carddav_app}_url}" --replace_string="$carddav_url" --target_file="$carddav_tmp_config" - ynh_replace_string --match_string="/* PRESET FOR: $carddav_app" --replace_string="" --target_file="$carddav_tmp_config" - ynh_replace_string --match_string="END: $carddav_app */" --replace_string="" --target_file="$carddav_tmp_config" - fi + ynh_replace_string --match_string="{${carddav_app}_id}" --replace_string="$carddav_app_id" --target_file="$final_path/plugins/carddav/config.inc.php" + ynh_replace_string --match_string="{${carddav_app}_url}" --replace_string="$carddav_url" --target_file="$final_path/plugins/carddav/config.inc.php" + done done - # Copy the plugin configuration file - cp "$carddav_tmp_config" ""$final_path/plugins/carddav/config.inc.php"" - # Do not actualy add the carddav plugin if there's no carddav server available... if [ $carddav_server -eq 1 ] then @@ -205,7 +202,7 @@ fi #================================================= # UPDATE ROUNDCUBE CONFIGURATION #================================================= -ynh_script_progression --message="Updating roundcube configuration..." --weight=3 +ynh_script_progression --message="Updating Roundcube configuration..." --weight=3 ynh_replace_string --match_string="^\s*// installed plugins" --replace_string="&\n $installed_plugins" --target_file="$rc_conf" @@ -230,7 +227,7 @@ chown -R $app: "$final_path/"{temp,logs,plugins/enigma/home} #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." --weight=2 +ynh_script_progression --message="Reloading NGINX web server..." --weight=2 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index f01641b..c409dac 100644 --- a/scripts/remove +++ b/scripts/remove @@ -41,7 +41,7 @@ ynh_mysql_remove_db --db_user=$db_name --db_name=$db_name #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory..." --weight=3 +ynh_script_progression --message="Removing $app main directory..." --weight=3 # Remove the app directory securely ynh_secure_remove --file="$final_path" @@ -49,17 +49,17 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration..." --weight=2 +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=2 -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration..." --weight=3 +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=3 -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config #================================================= diff --git a/scripts/restore b/scripts/restore index 7fa57b8..a7cd2b5 100644 --- a/scripts/restore +++ b/scripts/restore @@ -27,6 +27,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) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -49,7 +50,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." +ynh_script_progression --message="Restoring $app main directory..." ynh_restore_file --origin_path="$final_path" @@ -74,18 +75,12 @@ chown -R $app: "$final_path/"{temp,logs,plugins/enigma/home} # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" + +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Reinstalling dependencies..." --weight=30 - -# Define and install dependencies -ynh_install_app_dependencies "$pkg_dependencies" - #================================================= # RESTORE THE MYSQL DATABASE #================================================= @@ -100,9 +95,9 @@ ynh_mysql_connect_as --user=$db_name --password=$db_pwd --database=$db_name < ./ #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." -ynh_systemd_action --service_name=php7.0-fpm --action=reload +ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 748deb0..4fa6690 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -22,6 +22,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) with_carddav=$(ynh_app_setting_get --app=$app --key=with_carddav) with_enigma=$(ynh_app_setting_get --app=$app --key=with_enigma) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +language=$(ynh_app_setting_get --app=$app --key=language) #================================================= # CHECK VERSION @@ -68,10 +70,16 @@ if [ -z "$with_enigma" ]; then ynh_app_setting_set --app=$app --key=with_enigma --value=$with_enigma fi + # If language doesn't exist, create it + if [ -z "$language" ]; then + language="en_GB" + ynh_app_setting_set --app=$app --key=language --value=$language +fi + #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=30 +ynh_script_progression --message="Backing up $app before upgrading (may take a while)..." --weight=30 # Backup the current version of the app ynh_backup_before_upgrade @@ -109,18 +117,11 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." +ynh_script_progression --message="Upgrading NGINX web server configuration..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=25 - -ynh_install_app_dependencies "$pkg_dependencies" - #================================================= # CREATE DEDICATED USER #================================================= @@ -132,10 +133,10 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=5 +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=5 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC UPGRADE @@ -145,7 +146,7 @@ ynh_add_fpm_config if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Reconfiguring roundcube..." + ynh_script_progression --message="Reconfiguring Roundcube..." rc_conf="$final_path/config/config.inc.php" @@ -158,17 +159,18 @@ then ynh_replace_string --match_string="__DBUSER__" --replace_string=$db_name --target_file="$rc_conf" db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) ynh_replace_string --match_string="__DBPASS__" --replace_string="$db_pwd" --target_file="$rc_conf" - ynh_replace_string --match_string="__DBNAME__" --replace_string=$db_name --target_file="$rc_conf" + ynh_replace_string --match_string="__DBNAME__" --replace_string="$db_name" --target_file="$rc_conf" + ynh_replace_string --match_string="__LANGUAGE__" --replace_string="$language" --target_file="$rc_conf" #================================================= # UPDATE DEPENDENCIES WITH COMPOSER #================================================= - ynh_script_progression --message="Updating dependencies with composer..." --weight=30 + ynh_script_progression --message="Updating dependencies with Composer..." --weight=30 # Upgrade composer itself ynh_install_composer - # Check if dependencies need to be updated with composer + # Check if dependencies need to be updated with Composer if [ -f "$final_path/composer.json" ] then ynh_exec_warn_less ynh_composer_exec --commands=\"update --no-dev --prefer-dist\" @@ -204,27 +206,27 @@ then carddav_tmp_config="../conf/carddav.config.inc.php" carddav_server=0 + # Copy the plugin configuration file + cp $final_path/plugins/carddav/config.inc.php{.dist,} + # Look for installed and supported CardDAV servers - for carddav_app in "owncloud" "nextcloud" "baikal" + for carddav_app in "nextcloud" "baikal" do - carddav_app_id=$(yunohost app list --installed -f $carddav_app \ - --output-as json | grep -Po '"id":[ ]?"\K.*?(?=")' | head -1) - if [ -n "$carddav_app_id" ] - then + carddav_app_ids=$(yunohost app list | grep "id: $carddav_app" | grep -Po 'id: \K(.*)' || echo "") + for carddav_app_id in $carddav_app_ids + do carddav_server=1 + # Append preset configuration to the config file + cat "../conf/${carddav_app}.inc.php" >> $final_path/plugins/carddav/config.inc.php # Retrieve app settings and enable relevant preset carddav_domain=$(ynh_app_setting_get --app=$carddav_app_id --key=domain) carddav_path=$(ynh_app_setting_get --app=$carddav_app_id --key=path) carddav_url="https://${carddav_domain}${carddav_path%/}" - ynh_replace_string --match_string="{${carddav_app}_url}" --replace_string="$carddav_url" --target_file="$carddav_tmp_config" - ynh_replace_string --match_string="\/\* PRESET FOR: $carddav_app" --replace_string="" --target_file="$carddav_tmp_config" - ynh_replace_string --match_string="END: $carddav_app \*\/" --replace_string="" --target_file="$carddav_tmp_config" - fi + ynh_replace_string --match_string="{${carddav_app}_id}" --replace_string="$carddav_app_id" --target_file="$final_path/plugins/carddav/config.inc.php" + ynh_replace_string --match_string="{${carddav_app}_url}" --replace_string="$carddav_url" --target_file="$final_path/plugins/carddav/config.inc.php" + done done - # Copy the plugin configuration file - cp "$carddav_tmp_config" ""$final_path/plugins/carddav/config.inc.php"" - # Do not actually add the carddav plugin if there's no carddav server available... if [ $carddav_server -eq 1 ] then @@ -247,11 +249,11 @@ then #================================================= # UPDATE ROUNDCUBE CONFIGURATION #================================================= - ynh_script_progression --message="Updating roundcube configuration..." --weight=4 + ynh_script_progression --message="Updating $app configuration..." --weight=4 ynh_replace_string --match_string="^\s*// installed plugins" --replace_string="&\n $installed_plugins" --target_file="$rc_conf" - # Update javascript dependencies + # Update JavaScript dependencies (cd "$final_path" /usr/bin/php -q ./bin/install-jsdeps.sh) @@ -261,7 +263,7 @@ then #================================================= # UPDATE ROUNDCUBE CORE #================================================= - ynh_script_progression --message="Updating roundcube core..." --weight=4 + ynh_script_progression --message="Updating $app core..." --weight=4 ( cd "$final_path" ynh_exec_warn ./bin/update.sh --version=$oldversion -y) @@ -281,7 +283,7 @@ chown -R $app: "$final_path/"{temp,logs,plugins/enigma/home} #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload