2014-08-18 18:37:19 +02:00
#!/bin/bash
2017-09-28 18:02:52 +02:00
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
2014-08-18 18:37:19 +02:00
2017-09-28 18:02:52 +02:00
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Loading installation settings..." --weight=1
2017-09-28 18:02:52 +02:00
app=$YNH_APP_INSTANCE_NAME
2019-05-06 13:40:41 +02:00
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)
#=================================================
# CHECK VERSION
#=================================================
2020-03-30 14:00:17 +02:00
### This helper will compare the version of the currently installed app and the version of the upstream package.
### $upgrade_type can have 2 different values
### - UPGRADE_APP if the upstream app version has changed
### - UPGRADE_PACKAGE if only the YunoHost package has changed
### ynh_check_app_version_changed will stop the upgrade if the app is up to date.
### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do.
2019-05-06 13:40:41 +02:00
upgrade_type=$(ynh_check_app_version_changed)
2017-09-28 18:02:52 +02:00
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
2020-03-30 14:00:17 +02:00
# If final_path doesn't exist, create it
if [ -z "$final_path" ]; then
final_path=/var/www/$app
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
fi
2017-09-28 18:02:52 +02:00
2020-03-30 13:00:23 +02:00
# Cleaning legacy permissions
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
2020-03-30 11:27:11 +02:00
skipped_uris=$(ynh_app_setting_get --app=$app --key=skipped_uris)
2020-03-30 13:00:23 +02:00
unprotected_uris=$(ynh_app_setting_get --app=$app --key=unprotected_uris)
protected_uris=$(ynh_app_setting_get --app=$app --key=protected_uris)
2020-03-30 11:27:11 +02:00
2020-03-30 13:00:23 +02:00
# Remove skipped_uris if exists
2020-03-30 16:17:33 +02:00
# /!\ This commands also remove the "main" permission from "visitor" groups, that's why I made the trick with is_public and the warn at the end.
ynh_app_setting_delete --app=$app --key=skipped_uris
2020-03-30 13:00:23 +02:00
# Remove unprotected_uris if exists
2020-03-30 16:17:33 +02:00
ynh_app_setting_delete --app=$app --key=unprotected_uris
2020-03-30 13:00:23 +02:00
# Remove protected_uris if exists
2020-03-30 16:17:33 +02:00
ynh_app_setting_delete --app=$app --key=protected_uris
2020-03-30 11:27:11 +02:00
2020-03-30 16:17:33 +02:00
# Remove is_public if exists and trick about what I said 8 lines before.
if [ -n "$is_public" ]; then
if [ $is_public -eq 1 ]; then
2020-03-30 14:49:05 +02:00
ynh_permission_update --permission "main" --add "visitors"
show_warning="1"
2020-03-30 14:57:50 +02:00
else
show_warning="0"
2020-03-30 14:49:05 +02:00
fi
ynh_app_setting_delete --app=$app --key=is_public
fi
2017-09-28 18:02:52 +02:00
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=5
2017-09-28 18:02:52 +02:00
2019-02-13 18:38:44 +01:00
# Backup the current version of the app
ynh_backup_before_upgrade
2017-09-28 18:02:52 +02:00
ynh_clean_setup () {
2019-02-13 18:38:44 +01:00
# restore it if the upgrade fails
ynh_restore_upgradebackup
2017-09-28 18:02:52 +02:00
}
2019-02-13 18:38:44 +01:00
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
2017-09-28 18:02:52 +02:00
#=================================================
# CHECK THE PATH
#=================================================
# Normalize the URL path syntax
2019-05-06 13:40:41 +02:00
path_url=$(ynh_normalize_url_path --path_url=$path_url)
2017-09-28 18:02:52 +02:00
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
# COPY SOURCES
#=================================================
2014-08-18 18:37:19 +02:00
2019-05-06 13:40:41 +02:00
if [ "$upgrade_type" == "UPGRADE_APP" ]
then
ynh_script_progression --message="Upgrading source files..."
# Copy files to the right place
cp -a ../sources/. $final_path
fi
2017-09-28 18:02:52 +02:00
#=================================================
# NGINX CONFIGURATION
#=================================================
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2
2017-09-28 18:02:52 +02:00
# Create a dedicated nginx config
ynh_add_nginx_config
#=================================================
# GENERIC FINALIZATION
#=================================================
# SECURE FILES AND DIRECTORIES
#=================================================
# Set permissions to app files
2019-02-13 18:38:44 +01:00
chown -R root: $final_path
2017-09-28 18:02:52 +02:00
#=================================================
# RELOAD NGINX
#=================================================
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Reloading nginx web server..." --weight=1
2017-09-28 18:02:52 +02:00
2019-05-06 13:40:41 +02:00
ynh_systemd_action --service_name=nginx --action=reload
2019-02-17 20:54:53 +01:00
#=================================================
# END OF SCRIPT
#=================================================
2020-03-30 16:17:33 +02:00
if [ -n "$show_warning" ]; then
if [ $show_warning -eq 1 ]; then
2020-03-30 14:49:05 +02:00
ynh_print_warn --message="Due to the fact that Yunohost resets permissions when upgrading a package from the old permissions system to the new one, we had to define your instance of Hextris as public. If you want to make it private, you can do it via webmin."
fi
fi
2020-03-30 14:17:05 +02:00
ynh_script_progression --message="Upgrade of $app completed" --last