#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= #source _common.sh source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= ynh_print_info "Loading installation settings..." app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) path_url=$(ynh_app_setting_get $app path) final_path=$(ynh_app_setting_get $app final_path) db_name=$(ynh_app_setting_get $app db_name) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= ynh_print_info "Ensuring downward compatibility..." # If final_path doesn't exist, create it if [ -z $final_path ]; then final_path=/var/www/$app ynh_app_setting_set $app final_path $final_path fi # If db_name doesn't exist, create it if [ -z $db_name ]; then db_name=$(ynh_sanitize_dbid $app) ynh_app_setting_set $app db_name $db_name fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= ynh_print_info "Backing up the app before upgrading (may take a while)..." # 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) #================================================= # STANDARD UPGRADE STEPS #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_print_info "Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source "$final_path" #================================================= # NGINX CONFIGURATION #================================================= ynh_print_info "Upgrading nginx web server configuration..." # Create a dedicated nginx config ynh_add_nginx_config #================================================= # CREATE DEDICATED USER #================================================= ynh_print_info "Making sure dedicated system user exists..." # Create a dedicated user (if not existing) ynh_system_user_create $app #================================================= # PHP-FPM CONFIGURATION #================================================= ynh_print_info "Upgrading php-fpm configuration..." # Create a dedicated php-fpm config ynh_add_fpm_config #================================================= # SPECIFIC UPGRADE #================================================= # UPGRADE BAIKAL #================================================= ynh_print_info "Upgrading baikal..." # Run Baikal upgrade php "${final_path}/bin/upgrade.sh" # Cleanup old baikal-admin sessions # since we may have changed owner of the session file grep --files-with-matches --recursive "CSRF_TOKEN|s:" /var/lib/php/sessions | xargs rm -f #================================================= # UPGRADE BAIKAL CONFIGURATION #================================================= ynh_print_info "Upgrading baikal configuration..." bk_conf="${final_path}/Specific/config.php" # Verify the checksum and backup the file if it's different ynh_backup_if_checksum_is_different "$bk_conf" cp ../conf/config.php "$bk_conf" ynh_replace_string "__TIMEZONE__" "$(cat /etc/timezone)" "$bk_conf" password_hash=$(ynh_app_setting_get $app password_hash) # If the password_hash is not in the app's config, recreate it from the password. if [ -z "$password_hash" ]; then password=$(ynh_app_setting_get $app password) password_hash=$(echo -n admin:BaikalDAV:$password | md5sum | cut -d ' ' -f 1) ynh_app_setting_set $app password_hash $password_hash fi ynh_replace_string "__PASSWORDHASH__" "${password_hash}" "$bk_conf" # Store the config file checksum into the app settings ynh_store_file_checksum "$bk_conf" bk_conf="${final_path}/Specific/config.system.php" # Verify the checksum and backup the file if it's different ynh_backup_if_checksum_is_different "$bk_conf" cp ../conf/config.system.php "$bk_conf" ynh_replace_string "__PATH__" "$path_url" "$bk_conf" ynh_replace_string "__DBNAME__" "$db_name" "$bk_conf" ynh_replace_string "__DBUSER__" "$db_name" "$bk_conf" db_pwd=$(ynh_app_setting_get $app mysqlpwd) ynh_replace_string "__DBPASS__" "$db_pwd" "$bk_conf" deskey=$(ynh_app_setting_get $app deskey) ynh_replace_string "__DESKEY__" "$deskey" "$bk_conf" # Store the config file checksum into the app settings ynh_store_file_checksum "$bk_conf" #================================================= # GENERIC FINALIZATION #================================================= # SECURE FILES AND DIRECTORIES #================================================= # Set permissions chown -R root: "$final_path" chown $app "$final_path/Specific/"{config.php,config.system.php} chmod 640 "$final_path/Specific/"{config.php,config.system.php} #================================================= # SETUP SSOWAT #================================================= ynh_print_info "Upgrading SSOwat configuration..." # Allow public access on / ynh_app_setting_set $app skipped_uris "/" # But restrain on /admin ynh_app_setting_set $app protected_uris "/admin/" #================================================= # RELOAD NGINX #================================================= ynh_print_info "Reloading nginx web server..." systemctl reload nginx #================================================= # END OF SCRIPT #================================================= ynh_print_info "Upgrade of $app completed"