mirror of
https://github.com/YunoHost-Apps/hextris_ynh.git
synced 2024-09-03 19:16:05 +02:00
8b5b77ce42
Changed warn message to something more ~~complicated complex~~ comprehensive.
142 lines
5.2 KiB
Bash
142 lines
5.2 KiB
Bash
#!/bin/bash
|
|
|
|
#=================================================
|
|
# GENERIC START
|
|
#=================================================
|
|
# IMPORT GENERIC HELPERS
|
|
#=================================================
|
|
|
|
source /usr/share/yunohost/helpers
|
|
|
|
#=================================================
|
|
# 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)
|
|
|
|
#=================================================
|
|
# CHECK VERSION
|
|
#=================================================
|
|
|
|
### 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.
|
|
upgrade_type=$(ynh_check_app_version_changed)
|
|
|
|
#=================================================
|
|
# ENSURE DOWNWARD COMPATIBILITY
|
|
#=================================================
|
|
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
|
|
|
|
# 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
|
|
|
|
# Cleaning legacy permissions
|
|
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
|
skipped_uris=$(ynh_app_setting_get --app=$app --key=skipped_uris)
|
|
unprotected_uris=$(ynh_app_setting_get --app=$app --key=unprotected_uris)
|
|
protected_uris=$(ynh_app_setting_get --app=$app --key=protected_uris)
|
|
|
|
# Remove skipped_uris if exists
|
|
# /!\ 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
|
|
|
|
# Remove unprotected_uris if exists
|
|
ynh_app_setting_delete --app=$app --key=unprotected_uris
|
|
|
|
# Remove protected_uris if exists
|
|
ynh_app_setting_delete --app=$app --key=protected_uris
|
|
|
|
# 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
|
|
ynh_permission_update --permission "main" --add "visitors"
|
|
show_warning="1"
|
|
else
|
|
show_warning="0"
|
|
fi
|
|
ynh_app_setting_delete --app=$app --key=is_public
|
|
fi
|
|
|
|
|
|
#=================================================
|
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
|
#=================================================
|
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=5
|
|
|
|
# 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
|
|
|
|
#=================================================
|
|
# CHECK THE PATH
|
|
#=================================================
|
|
|
|
# Normalize the URL path syntax
|
|
path_url=$(ynh_normalize_url_path --path_url=$path_url)
|
|
|
|
#=================================================
|
|
# STANDARD UPGRADE STEPS
|
|
#=================================================
|
|
# COPY SOURCES
|
|
#=================================================
|
|
|
|
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
|
|
|
|
#=================================================
|
|
# NGINX CONFIGURATION
|
|
#=================================================
|
|
ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2
|
|
|
|
# Create a dedicated nginx config
|
|
ynh_add_nginx_config
|
|
|
|
#=================================================
|
|
# GENERIC FINALIZATION
|
|
#=================================================
|
|
# SECURE FILES AND DIRECTORIES
|
|
#=================================================
|
|
|
|
# Set permissions to app files
|
|
chown -R root: $final_path
|
|
|
|
#=================================================
|
|
# RELOAD NGINX
|
|
#=================================================
|
|
ynh_script_progression --message="Reloading nginx web server..." --weight=1
|
|
|
|
ynh_systemd_action --service_name=nginx --action=reload
|
|
|
|
#=================================================
|
|
# END OF SCRIPT
|
|
#=================================================
|
|
|
|
if [ -n "$show_warning" ]; then
|
|
if [ $show_warning -eq 1 ]; then
|
|
ynh_print_warn --message="In order to make this package compatible with Yunohost's new permission management system, we had to revert back any change to package's permissions made since the 3.7.0 release. If you edited permissions of this package between Yunohost 3.7.0 upgrade and this upgrade these changes have been discarded and will need to be made again. If you do not have made any modifications to permissions of this package since Yunohost 3.7.0 release, forget about that. We are sorry for that, this will only happen once."
|
|
fi
|
|
fi
|
|
|
|
ynh_script_progression --message="Upgrade of $app completed" --last
|