#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= # Retrieve arguments app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) redirect_type=$(ynh_app_setting_get --app=$app --key=redirect_type) redirect_path=$(ynh_app_setting_get --app=$app --key=redirect_path) frame_ancestors=$(ynh_app_setting_get --app=$app --key=frame_ancestors) client_max_body_size=$(ynh_app_setting_get --app=$app --key=client_max_body_size) is_public=$(ynh_app_setting_get --app=$app --key=is_public) #================================================= # 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) #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= # 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 #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # Fix is_public as a boolean value # Default value for redirect_type if upgrading from https://github.com/scith/redirect_ynh if [ -z "$redirect_type" ]; then redirect_type="proxy" ynh_app_setting_set $app 'redirect_type' $redirect_type fi # Migrate away from old stuff with 'is_public' and old redirect type names is_public=$(ynh_app_setting_get "$app" is_public) if [ -n "$is_public" ] then if [ "$is_public" = "Yes" ]; then is_public=1 elif [ "$is_public" = "No" ]; then is_public=0 fi if [ "$is_public" = "0" ] && [ "$redirect_type" != "proxy" ]; then echo "WARNING: You previously had a 'supposedly' private 301 or 302 redirection... but it was found that it was public all along and it is not easy to create such a private redirection. Your 301 or 302 redirection will be re-flagged as public..." >&2 is_public=1 fi if [ "$redirect_type" == "visible_302" ] then redirect_type="public_302" elif [ "$redirect_type" == "visible_301" ] then redirect_type="public_301" fi ynh_app_setting_set $app 'redirect_type' $redirect_type ynh_app_setting_set $app 'is_public' $is_public fi # Migrate legacy permissions to new system if ynh_legacy_permissions_exists then ynh_legacy_permissions_delete_all ynh_app_setting_delete --app=$app --key=is_public fi # Introduce frame_ancestors if [ -z "$frame_ancestors" ]; then frame_ancestors="'none'" ynh_app_setting_set $app 'frame_ancestors' $frame_ancestors fi # Introduce client_max_body_size if [ -z "$client_max_body_size" ]; then client_max_body_size="1m" ynh_app_setting_set $app 'client_max_body_size' $client_max_body_size fi # Validate redirect path url_regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]' [[ ! $redirect_path =~ $url_regex ]] && ynh_die "Invalid destination: $redirect_path" 1 #================================================= # CONFIGURE NGINX #================================================= # Nginx configuration cp ../conf/nginx-$redirect_type.conf ../conf/nginx.conf ynh_add_nginx_config #================================================= # CONFIGURE SSOWAT #================================================= # Make app public if necessary if [ $is_public -eq 1 ] then # Everyone can access the app. # The "main" permission is automatically created before the install script. if [[ $redirect_type != "proxy" ]] then ynh_permission_update --permission="main" --add="visitors" --protected=1 else ynh_permission_update --permission="main" --add="visitors" --protected=0 fi 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="Upgrade of $app completed" --last