From a547abbf7d12226c7d88ea515cc343e8d00882b5 Mon Sep 17 00:00:00 2001 From: Robles Rodolphe Date: Wed, 15 Feb 2023 00:03:55 +0100 Subject: [PATCH] add a message for admins --- scripts/upgrade | 267 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) diff --git a/scripts/upgrade b/scripts/upgrade index 3b25080..79df33b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -183,4 +183,271 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= + +Skip to content +Pull requests +Issues +Codespaces +Marketplace +Explore +@rodinux +YunoHost-Apps / +cryptpad_ynh +Public + +Fork your own copy of YunoHost-Apps/cryptpad_ynh + +Code +Issues 10 +Pull requests 1 +Actions +Projects +Security + + Insights + +cryptpad_ynh/scripts/upgrade +@rodinux +rodinux update +Latest commit fef096a Feb 12, 2023 +History +8 contributors +@ericgaspar +@JimboJoe +@frju365 +@shinenelson +@tituspijean +@rodinux +@Ddataa +@yalh76 +231 lines (183 sloc) 8.51 KB +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +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) +admin=$(ynh_app_setting_get --app=$app --key=admin) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +email=$(ynh_user_get_info --username=$admin --key=mail) +port=$(ynh_app_setting_get --app=$app --key=port) +porti=$(ynh_app_setting_get --app=$app --key=porti) + +#================================================= +# CHECK VERSION +#================================================= +ynh_script_progression --message="Checking version..." + +upgrade_type=$(ynh_check_app_version_changed) + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + ynh_clean_check_starting + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# STANDARD UPGRADE STEPS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." --weight=2 + +# 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 +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." --weight=1 + + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$final_path" --keep="config/config.js customize/" + + chmod 750 "$final_path" + chmod -R o-rwx "$final_path" + chown -R $app:$app "$final_path" +fi + +#================================================= +# APPLY FOLDER GROUP RIGHTS FOR WWW-DATA +#================================================= +chgrp -R www-data $final_path + +#================================================= +# CREATE A SANDBOX DOMAIN +#================================================= +# if the main domain for the app is a root domain, we create a correct sandbox subdomain +if [[ $domain == *"."* ]]; then + sandboxdomain=sandbox.$domain +fi +# if the main domain for the app is already a sub-domain, we create a correct sandbox domain +if [[ $domain == *"."*"."* ]]; then + sandboxdomain=sandbox-$domain +fi +# if the main domain for the app is a .local root domain, we create a correct sandbox subdomain +if [[ $domain == *".local" ]]; then + sandboxdomain=sandbox-$domain +fi + +ynh_script_progression --message="Setting up sandobx domain : $sandboxdomain" --weight=1 + +# We don't test that in CI +if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then + yunohost domain add $sandboxdomain + yunohost domain config set $sandboxdomain -a "mail_in=0&mail_out=0" +fi + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=6 + +ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version + +#================================================= +# INSTALL CRYPTPAD +#================================================= +ynh_script_progression --message="Building $app... (this will take some time and resources!)" --weight=60 + +pushd "$final_path" + ynh_exec_warn_less npm install --allow-root + ynh_exec_warn_less npm install -g bower + ynh_exec_warn_less bower update --allow-root + ynh_exec_warn_less npm i + ynh_exec_warn_less npm run build +popd + +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 + +env_path="$PATH" +# Create a dedicated systemd config +ynh_add_systemd_config + +#================================================= +# GENERIC FINALIZATION +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Zero Knowledge realtime collaborative editor" --log="/var/log/$app/$app.log" + +#================================================= +# ADD UPGRADED CONFIG WITH SANDBOX +#================================================= +ynh_add_config --template="../conf/config.js" --destination="$final_path/config/config.js" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="server available" + +#================================================= +# COPY NGINX CONF IN SANDBOX DOMAIN +#================================================= +# We don't test that in CI +if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then + ynh_add_config --template="/etc/nginx/conf.d/$domain.d/cryptpad.conf" --destination="/etc/nginx/conf.d/$sandboxdomain.d/cryptpad.conf" +fi + +# We authorize access to sandbox domain +# We don't test that in CI +if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then + ynh_permission_url --permission="main" --add_url=$sandboxdomain --auth_header=true +fi + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# SEND A README FOR THE ADMIN +#================================================= +ynh_script_progression --message="Sending a readme for the admin..." --weight=1 + +message="Garradin was successfully upgraded :) +Garradin becomes Paheko. You can now upgrade Garradin with Paheko ! Don't stay with this repository, it will be no more supported. +Take a Look at the Paheko repository and read the instructions how to migrate your application Garradin to Paheko: +https://github.com/YunoHost-Apps/paheko_ynh/ + +This can only be done from the command-line interface - e.g. through SSH. Once you're connected, you simply have to execute the following: +`sudo yunohost app upgrade garradin -u https://github.com/YunoHost-Apps/paheko_ynh --debug` +The --debug option will let you see the full output. If you encounter any issue, please report it aand paste the logs. +Important: After the migration, you'll have to wait a couple of minutes (at most 3 minutes) before you can start using Paheko. + +ynh_send_readme_to_admin "$message" + +#================================================= +# END OF SCRIPT +#================================================= + + ynh_script_progression --message="Upgrade of $app completed" --last