From 0349d57cb03a7b80d57cf9cecd885c22f4903df2 Mon Sep 17 00:00:00 2001 From: Rafi59 Date: Sat, 14 Oct 2017 16:28:52 +0200 Subject: [PATCH] Update upgrade --- scripts/upgrade | 176 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 164 insertions(+), 12 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index af5a271..85c2139 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,18 +1,170 @@ #!/bin/bash -# Exit on command errors and treat unset variables as an error -set -eu +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Load common variables and functions -source ./_common.sh +source _common.sh +source /usr/share/yunohost/helpers -# Retrieve arguments -domain=$(ynh_app_setting_get "$app" domain) -path=$(ynh_app_setting_get "$app" path) -is_public=$(ynh_app_setting_get "$app" is_public) +#================================================= +# LOAD SETTINGS +#================================================= -# Install the app -install_haste $domain $path $is_public +app=$YNH_APP_INSTANCE_NAME -# Start Haste -sudo systemctl restart "$app".service +domain=$(ynh_app_setting_get $app domain) +path_url=$(ynh_app_setting_get $app path) +is_public=$(ynh_app_setting_get $app is_public) +final_path=$(ynh_app_setting_get $app final_path) +port=$(ynh_app_setting_get $app port) + +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= + +# Fix is_public as a boolean value +if [ "$is_public" = "Yes" ]; then + ynh_app_setting_set $app is_public 1 + is_public=1 +elif [ "$is_public" = "No" ]; then + ynh_app_setting_set $app is_public 0 + is_public=0 +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 + +# 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 + +#================================================= +# 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 + +#================================================= +# CHECK THE PATH +#================================================= + +# Normalize the URL path syntax +path_url=$(ynh_normalize_url_path $path_url) + +#================================================= +# INSTALL NODEJS +#================================================= + +ynh_install_nodejs 4 +#================================================= +# STANDARD UPGRADE STEPS +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source "$final_path" +# Set files ownership during installation +chown $app: $final_path -R +chmod 755 $final_path -R + +#================================================= +# NGINX CONFIGURATION +#================================================= + +# Create a dedicated nginx config +ynh_add_nginx_config + +#================================================= +# CREATE DEDICATED USER +#================================================= + +# Create a system user +ynh_system_user_create $app + +#================================================= +# INSTALL HASTEBIN +#================================================= + +ynh_use_nodejs +script_dir="$PWD" +pushd "$final_path" +chown -R $app: $final_path +npm install +DATA_PATH="/home/yunohost.app/"$app +mkdir -p $DATA_PATH +chown -R "$app":"$app" $final_path $DATA_PATH + +#================================================= +# Configure haste with config.js file +#================================================= + + ynh_replace_string "YNH_DATA_PATH" "$DATA_PATH" "$final_path/config.js" + + +# Verify the checksum and backup the file if it's different +ynh_backup_if_checksum_is_different "$final_path/config.js" +# Recalculate and store the config file checksum into the app settings +ynh_store_file_checksum "$final_path/config.js" + +#================================================= +# SETUP LOGROTATE +#================================================= + +# Use logrotate to manage app-specific logfile(s) +ynh_use_logrotate + +#================================================= +# ADD SYSTEMD SERVICE +#================================================= + +ynh_replace_string "__NODE__" "$nodejs_path" "../conf/systemd.service" +ynh_replace_string "__NODEJS__" "$nodejs_use_version" "../conf/systemd.service" +ynh_replace_string "__ENV_PATH__" "$PATH" "../conf/systemd.service" +ynh_add_systemd_config + + +#================================================= +# GENERIC FINALIZATION +#================================================= +# SECURE FILES AND DIRECTORIES +#================================================= + +# Set right permissions for curl installation +chown -R root: $final_path + +#================================================= +# SETUP SSOWAT +#================================================= + +if [ $is_public -eq 0 ] +then # Remove the public access + ynh_app_setting_delete $app skipped_uris +fi +# Make app public if necessary +if [ $is_public -eq 1 ] +then + # unprotected_uris allows SSO credentials to be passed anyway + ynh_app_setting_set $app unprotected_uris "/" +fi + +#================================================= +# RELOAD NGINX +#================================================= + +systemctl reload nginx