From 23c19d79e98f4840e19ddf77685348a1332647b8 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 13 Sep 2021 23:49:07 +0200 Subject: [PATCH] Apply example_ynh --- .kateproject | 6 - check_process | 25 ++-- conf/app.src | 6 - conf/config.json | 2 +- conf/nginx.conf | 2 + doc/DESCRIPTION.md | 1 + doc/DISCLAIMER.md | 30 +++++ .../homepage-all-platforms-1_1.png | Bin 0 -> 114701 bytes manifest.json | 26 ++-- scripts/_common.sh | 25 ++-- scripts/backup | 46 ++++--- scripts/change_url | 114 ++++++++++++++---- scripts/experimental_helper.sh | 0 scripts/install | 97 ++++++++++----- scripts/remove | 44 ++++--- scripts/restore | 76 ++++++++---- scripts/upgrade | 104 ++++++++++------ 17 files changed, 403 insertions(+), 201 deletions(-) create mode 100644 doc/DESCRIPTION.md create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/screenshots/homepage-all-platforms-1_1.png delete mode 100644 scripts/experimental_helper.sh diff --git a/.kateproject b/.kateproject index 757cbe5..d945148 100644 --- a/.kateproject +++ b/.kateproject @@ -2,9 +2,3 @@ "name": "Element_ynh" , "files": [ { "git": 1 } ] } - - - - - - diff --git a/check_process b/check_process index 9fbfa5f..79e24c6 100644 --- a/check_process +++ b/check_process @@ -1,11 +1,9 @@ -;; General - auto_remove=1 -# Commentaire ignoré +;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) + domain="domain.tld" + path="/path" default_home_server="matrix.org" - is_public=1 (PUBLIC|public=1|private=0) + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=1 @@ -14,14 +12,15 @@ setup_private=1 setup_public=1 upgrade=1 + upgrade=1 from_commit=CommitHash backup_restore=1 multi_instance=1 - wrong_user=0 - wrong_path=1 - incorrect_path=1 - corrupt_source=1 - fail_download_source=1 - port_already_use=0 (XXXX) - final_path_already_use=1 + port_already_use=0 change_url=1 ;;; Upgrade options +;;; Upgrade options + ; commit=CommitHash + name=Name and date of the commit. + manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& + + \ No newline at end of file diff --git a/conf/app.src b/conf/app.src index 543a56c..0023a20 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,11 +1,5 @@ SOURCE_URL=https://github.com/vector-im/element-web/releases/download/v1.8.4/element-v1.8.4.tar.gz SOURCE_SUM=5787a44ace859920a95059408a94f2add7b8cfe12b4026fdcf392d6d7f18b42f -# (Optional) Program to check the integrity (sha256sum, md5sum...) -# default: sha256 SOURCE_SUM_PRG=sha256sum -# (Optional) Archive format -# default: tar.gz SOURCE_FORMAT=tar.gz -# (Optional) Put false if sources are directly in the archive root -# default: true SOURCE_IN_SUBDIR=true diff --git a/conf/config.json b/conf/config.json index a9220ed..fb0a558 100644 --- a/conf/config.json +++ b/conf/config.json @@ -1,5 +1,5 @@ { - "default_hs_url": "https://__DEFAULT_SERVER__", + "default_hs_url": "https://__DEFAULT_HOME_SERVER__", "default_is_url": "https://vector.im", "brand": "Element", "integrations_ui_url": "https://scalar.vector.im/", diff --git a/conf/nginx.conf b/conf/nginx.conf index 9ae1053..c3eb079 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,10 +1,12 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { + alias __FINALPATH__/; if ($scheme = http) { rewrite ^ https://$server_name$request_uri? permanent; } + index index.html; # Include SSOWAT user panel. diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..762c76b --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +Element is a new type of messaging app. You choose where your messages are stored, putting you in control of your data. It gives you access to the Matrix open network, so you can talk to anyone. Element provides a new level of security, adding cross-signed device verification to default end-to-end encryption. \ No newline at end of file diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..08f2579 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,30 @@ + +## YunoHost specific features + +### Multi-users support + +Now this application support the SSO. If you want to use the sso you need to define the path to the default homeserver as your homeserver witch is installed on your YunoHost instance. + +## Additional informations + +### Important Security Note + +We do not recommend running Element from the same domain name as your Matrix +homeserver (synapse). The reason is the risk of XSS (cross-site-scripting) +vulnerabilities that could occur if someone caused Element to load and render +malicious user generated content from a Matrix API which then had trusted +access to Element (or other apps) due to sharing the same domain. + +We have put some coarse mitigations into place to try to protect against this +situation, but it's still not good practice to do it in the first place. See +https://github.com/vector-im/riot-web/issues/1977 for more details. + +### Migration from old app name "Riot" + +As this app don't contains any data on the server side no migration was made to migrate from "Riot" to "Element". +So you just will need to remove Riot and install Element on the same domain (you can change the path) to be able to keep the data on your web browser. +So the process to migrate to element is the following: + +1. Get the domain of "Riot": `yunohost app setting riot domain` +2. Remove Riot: `yunohost app remove riot` +3. Install Element: `yunohost app install element` diff --git a/doc/screenshots/homepage-all-platforms-1_1.png b/doc/screenshots/homepage-all-platforms-1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..40238a1c9891a15e412f921defba9a3795a72674 GIT binary patch literal 114701 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

GPuoK+BvI3zHu%m#TQn$7QuhNdJU3d|hq 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%0D4Rxd=`3=xqDfs}6awRU&={z0?2Wqf^g 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 Q)&Kwi07*qoM6N<$f*C}hQvd(} literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 27b84da..ae362fe 100644 --- a/manifest.json +++ b/manifest.json @@ -6,16 +6,26 @@ "yunohost": ">= 4.2.6.1" }, "description": { - "en": "A web client for matrix", - "fr": "Un client web pour matrix" + "en": "Web client for matrix", + "fr": "Client web pour matrix" }, "version": "1.8.4~ynh1", "url": "https://element.io", + "upstream": { + "license": "Apache-2.0", + "website": "https://element.io", + "demo": "https://app.element.io/", + "admindoc": "https://element.io/help", + "code": "https://github.com/vector-im/element-web/" + }, "license": "Apache-2.0", "maintainer": { "name": "Josué Tille", "email": "josue@tille.ch" }, + "requirements": { + "yunohost": ">= 4.2.6.1" + }, "multi_instance": true, "services": [ "nginx" @@ -25,19 +35,11 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain for Element", - "fr": "Choisissez un domaine pour Element" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for Element", - "fr": "Choisissez un chemin pour Element" - }, "example": "/element", "default": "/element" }, @@ -54,10 +56,6 @@ { "name": "is_public", "type": "boolean", - "ask": { - "en": "Is it a public application?", - "fr": "Est-ce une application publique ?" - }, "help": { "en": "A public application means that anyone can access it. Note that this application provides just files (html, javascript, images, etc.)", "fr": "Une application publique signifie que n'importe qui peut y accéder. Notez que cette application ne fournit que des fichiers (html, javascript, images, etc.)" diff --git a/scripts/_common.sh b/scripts/_common.sh index 4834a45..944a65e 100755 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,26 +1,17 @@ #!/bin/bash #================================================= -# SET ALL CONSTANTS +# COMMON VARIABLES #================================================= -app=$YNH_APP_INSTANCE_NAME -final_path="/var/www/$app" - #================================================= -# DEFINE ALL COMMON FONCTIONS +# PERSONAL HELPERS #================================================= -config_element() { - cp ../conf/config.json $final_path/config.json - ynh_replace_string --match_string __DEFAULT_SERVER__ --replace_string $default_home_server --target_file $final_path/config.json -} +#================================================= +# EXPERIMENTAL HELPERS +#================================================= -install_source() { - ynh_setup_source --dest_dir $final_path/ -} - -set_permission() { - chown www-data:root -R $final_path - chmod u=rX,g=rX,o= -R $final_path -} +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index 9a60af7..8f87a63 100644 --- a/scripts/backup +++ b/scripts/backup @@ -3,32 +3,48 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ../settings/scripts/experimental_helper.sh +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh - -# Source YunoHost helpers source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= -# STANDARD BACKUP STEPS +# LOAD SETTINGS +#================================================= +ynh_print_info --message="Loading installation settings..." + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) + +#================================================= +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + +#================================================= +# BACKUP THE APP MAIN DIR #================================================= -# Retrieve arguments -ynh_print_info --message="Loading installation settings..." -domain=$(ynh_app_setting_get --app $app --key domain) +ynh_backup --src_path="$final_path" -ynh_print_info --message="Backing configuration..." +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= -# Copy Nginx config -ynh_backup --src_path "/etc/nginx/conf.d/${domain}.d/${app}.conf" +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -# Backup element files -ynh_print_info --message="Backing up the main app directory..." -ynh_backup --src_path "/var/www/$app" +#================================================= +# END OF SCRIPT +#================================================= 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 3a95905..4d5a344 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,42 +1,104 @@ #!/bin/bash #================================================= -# GENERIC START +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS #================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +old_domain=$YNH_APP_OLD_DOMAIN +old_path=$YNH_APP_OLD_PATH + +new_domain=$YNH_APP_NEW_DOMAIN +new_path=$YNH_APP_NEW_PATH + +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +# Needed for helper "ynh_add_nginx_config" +final_path=$(ynh_app_setting_get --app=$app --key=final_path) + +#================================================= +# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Retrive arguments -ynh_script_progression --message="Loading installation settings..." -old_domain=$YNH_APP_OLD_DOMAIN -path_url=$(ynh_normalize_url_path --path_url ${YNH_APP_NEW_PATH:-'/'}) -domain=$YNH_APP_NEW_DOMAIN - #================================================= -# STANDARD MODIFICATIONS +# CHECK WHICH PARTS SHOULD BE CHANGED #================================================= -ynh_script_progression --message="Updating configuration..." - -# Update nginx config -if [ "$old_domain" != "$domain" ] +change_domain=0 +if [ "$old_domain" != "$new_domain" ] then - # Delete file checksum for the old conf file location - ynh_delete_file_checksum --file "/etc/nginx/conf.d/$old_domain.d/$app.conf" - - mv "/etc/nginx/conf.d/$old_domain.d/$app.conf" "/etc/nginx/conf.d/$domain.d/$app.conf" - - # Store file checksum for the new config file location - ynh_store_file_checksum --file "/etc/nginx/conf.d/$domain.d/$app.conf" + change_domain=1 fi -ynh_add_nginx_config + +change_path=0 +if [ "$old_path" != "$new_path" ] +then + change_path=1 +fi + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 + +nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf + +# 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 + ynh_backup_if_checksum_is_different --file="$nginx_conf_path" + # Set global variables for NGINX helper + domain="$old_domain" + path_url="$new_path" + # Create a dedicated NGINX config + ynh_add_nginx_config +fi + +# Change the domain for NGINX +if [ $change_domain -eq 1 ] +then + # Delete file checksum for the old conf file location + ynh_delete_file_checksum --file="$nginx_conf_path" + mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf + # Store file checksum for the new config file location + ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +fi +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/experimental_helper.sh b/scripts/experimental_helper.sh deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/install b/scripts/install index 40a7bae..b6a6102 100644 --- a/scripts/install +++ b/scripts/install @@ -3,18 +3,22 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script ynh_abort_if_errors -ynh_script_progression --message="Validating installation parameters..." +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= # Retrieve arguments domain=$YNH_APP_ARG_DOMAIN @@ -22,47 +26,84 @@ path_url=$YNH_APP_ARG_PATH is_public=$YNH_APP_ARG_IS_PUBLIC default_home_server=$YNH_APP_ARG_DEFAULT_HOME_SERVER +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS +#================================================= +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" + # Register (book) web path -ynh_webpath_register --app $app --domain $domain --path_url $path_url +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url -# Check Final Path availability -test ! -e "$final_path" || ynh_die --message "This path already contains a folder" +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= +ynh_script_progression --message="Storing installation settings..." --weight=1 -# Enregistre les infos dans la config YunoHost -ynh_script_progression --message="Storing installation settings..." ynh_app_setting_set --app $app --key is_public --value $is_public ynh_app_setting_set --app $app --key default_home_server --value $default_home_server ynh_app_setting_set --app $app --key final_path --value $final_path #================================================= -# STANDARD MODIFICATIONS +# CREATE DEDICATED USER #================================================= +ynh_script_progression --message="Configuring system user..." --weight=1 -# Get source and install in source dir -ynh_script_progression --message="Installing sources files..." --weight=10 -install_source +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" -# Update Element config -config_element +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= +ynh_script_progression --message="Setting up source files..." --weight=4 -# Config nginx +ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source --dest_dir="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring NGINX web server..." --weight=1 + +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= -# GENERIC FINALIZATION +# ADD A CONFIGURATION #================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 -# Set final permission -ynh_script_progression --message="Protecting directory" -set_permission +ynh_add_config --template="../conf/config.json" --destination="$final_path/config.json" -ynh_script_progression --message="Configuring permissions" -if [ "$is_public" == '1' ]; +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Configuring permissions..." --weight=1 + +# Make app public if necessary +if [ $is_public -eq 1 ] then - ynh_permission_update --permission "main" --add "visitors" + ynh_permission_update --permission="main" --add="visitors" fi -# Recharge la configuration Nginx -systemctl reload nginx.service +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove index ea3e66d..894b04e 100755 --- a/scripts/remove +++ b/scripts/remove @@ -3,28 +3,36 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers #================================================= -# STANDARD REMOVE +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) + +#================================================= +# REMOVE APP MAIN DIR +#================================================= +ynh_script_progression --message="Removing app main directory..." --weight=1 + +# Remove the app directory securely +ynh_secure_remove --file="$final_path" + +#================================================= +# REMOVE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 + +#================================================= +# END OF SCRIPT #================================================= -# Retrieve arguments -ynh_script_progression --message="Loading installation settings..." -domain=$(ynh_app_setting_get --app $app --key domain) - -# Remove all files -ynh_script_progression --message="Removing app main directory..." --weight=4 -ynh_secure_remove --file="/var/www/$app" - -# Suppression de la configuration nginx -ynh_script_progression --message="Removing configuration..." -ynh_remove_nginx_config - ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore index 47c7be4..16fa9f7 100644 --- a/scripts/restore +++ b/scripts/restore @@ -3,47 +3,79 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ../settings/scripts/experimental_helper.sh +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh - -# Source YunoHost helpers source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + # Stop script if errors ynh_abort_if_errors -# Retrieve arguments -ynh_script_progression --message="Loading settings..." -domain=$(ynh_app_setting_get --app $app --key domain) -path_url=$(ynh_app_setting_get --app $app --key path) +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 -# Check domain/path availability -ynh_webpath_available --domain $domain --path_url $path_url || ynh_die --message "$domain/$path_url is not available, please use an other domain or path." +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) + + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +ynh_script_progression --message="Validating restoration parameters..." --weight=1 + +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " #================================================= # STANDARD RESTORATION STEPS #================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1 -# Create a system user -ynh_script_progression --message="Recreating the dedicated system user..." -ynh_system_user_create --username $app +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" -# Restore all config and data -ynh_script_progression --message="Restoring files..." --weight=10 -ynh_restore +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." --weight=1 + +ynh_restore_file --origin_path="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # GENERIC FINALIZATION #================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 -# Set final permission -ynh_script_progression --message="Protecting directory..." -set_permission +ynh_systemd_action --service_name=php$phpversion-fpm --action=reload +ynh_systemd_action --service_name=nginx --action=reload -# Reload nginx -ynh_script_progression --message="Reloading services..." -systemctl reload nginx.service +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade index 7bf9fe0..04a0f34 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -3,58 +3,92 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +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) +default_home_server=$(ynh_app_setting_get --app=$app --key=default_home_server) + +#================================================= +# CHECK VERSION +#================================================= + +upgrade_type=$(ynh_check_app_version_changed) + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Retrieve arguments -ynh_script_progression --message="Loading installation settings..." -domain=$(ynh_app_setting_get --app $app --key domain) -path_url=$(ynh_normalize_url_path --path_url $(ynh_app_setting_get --app $app --key path)) -is_public=$(ynh_app_setting_get --app $app --key is_public) -final_path=$(ynh_app_setting_get --app $app --key final_path) -default_home_server=$(ynh_app_setting_get --app $app --key default_home_server) +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= -# STANDARD UPGRADE STEPS +# DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -# Get source and install in source dir -ynh_script_progression --message="Upgrading source files..." --weight=6 -ynh_secure_remove --file=$final_path -install_source +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." --weight=1 -ynh_script_progression --message="Configuring application..." + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$final_path" +fi -# Update Element config -config_element +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" -# Remove the dedicated php-fpm config -ynh_remove_fpm_config +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 -# Delete a system user -ynh_script_progression --message="Removing apps user..." -ynh_system_user_delete --username $app +ynh_add_config --template="../conf/config.json" --destination="$final_path/config.json" -# Update nginx config +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 + +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= -# GENERIC FINALIZATION +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT #================================================= -# Set final permission -ynh_script_progression --message="Protecting directory..." -set_permission - -# Recharge la configuration Nginx -systemctl reload nginx.service - ynh_script_progression --message="Upgrade of $app completed" --last