From 047dbbdf0cbb07bd463f4058fb90034d21eba953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Wed, 24 Jan 2024 12:38:53 +0100 Subject: [PATCH] Continue manifestv2 --- scripts/backup | 17 ---- scripts/change_url | 102 ++---------------------- scripts/install | 6 +- scripts/remove | 58 +------------- scripts/restore | 87 ++++----------------- scripts/upgrade | 188 +++++++++------------------------------------ 6 files changed, 64 insertions(+), 394 deletions(-) diff --git a/scripts/backup b/scripts/backup index 078d66a..7189d8c 100755 --- a/scripts/backup +++ b/scripts/backup @@ -10,23 +10,6 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_print_info --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) - #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= diff --git a/scripts/change_url b/scripts/change_url index fec4375..45029e7 100755 --- a/scripts/change_url +++ b/scripts/change_url @@ -9,68 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# RETRIEVE ARGUMENTS -#================================================= - -#REMOVEME? old_domain=$YNH_APP_OLD_DOMAIN -#REMOVEME? old_path=$YNH_APP_OLD_PATH - -#REMOVEME? new_domain=$YNH_APP_NEW_DOMAIN -#REMOVEME? new_path=$YNH_APP_NEW_PATH - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." --weight=1 - -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) - -if [[ $path = "/" ]] -then - nodes_url="/" - admin_url="/admin" -else - nodes_url="$path" - admin_url="$path/admin" -fi - -#================================================= -# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP -#================================================= -#REMOVEME? ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1 - -# Backup the current version of the app -#REMOVEME? ynh_backup_before_upgrade -#REMOVEME? ynh_clean_setup () { - # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. -#REMOVEME? ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" - - # Restore it if the upgrade fails -#REMOVEME? ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# CHECK WHICH PARTS SHOULD BE CHANGED -#================================================= - -#REMOVEME? change_domain=0 -#REMOVEME? if [ "$old_domain" != "$new_domain" ] -then - #REMOVEME? change_domain=1 -fi - -#REMOVEME? change_path=0 -#REMOVEME? if [ "$old_path" != "$new_path" ] -then - #REMOVEME? change_path=1 -fi - #================================================= # STANDARD MODIFICATIONS #================================================= @@ -87,40 +25,17 @@ ynh_script_progression --message="Updating NGINX web server configuration..." -- ynh_change_url_nginx_config -#REMOVEME? nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf - -# Change the path in the NGINX config file -if [ $change_path -eq 1 ] -then - # Make a backup of the original NGINX config file if modified -#REMOVEME? ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for NGINX helper -#REMOVEME? domain="$old_domain" -#REMOVEME? path="$new_path" - # Create a dedicated NGINX config -#REMOVEME? ynh_add_nginx_config -fi - -# Change the domain for NGINX -if [ $change_domain -eq 1 ] -then - # Delete file checksum for the old conf file location -#REMOVEME? ynh_delete_file_checksum --file="$nginx_conf_path" -#REMOVEME? mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf - # Store file checksum for the new config file location -#REMOVEME? ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" -fi - #================================================= # SPECIFIC MODIFICATIONS #================================================= # ALTERED NODERED SETTINGS FILE #================================================= -ynh_add_config --template="../conf/settings.js" --destination="$install_dir/data/settings.js" +chmod 660 "$install_dir/data/settings.js" +ynh_add_config --template="settings.js" --destination="$install_dir/data/settings.js" -chmod o-rwx "$install_dir/data/settings.js" -chown -R $app: "$install_dir/data/settings.js" +chown "$app:" "$install_dir/data/settings.js" +chmod 400 "$install_dir/data/settings.js" #================================================= # GENERIC FINALISATION @@ -130,14 +45,7 @@ chown -R $app: "$install_dir/data/settings.js" ynh_script_progression --message="Starting a systemd service..." --weight=1 # Start a systemd service -ynh_systemd_action --service_name=$app --action="start" - -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." --weight=1 - -#REMOVEME? #REMOVEME? ynh_systemd_action --service_name=nginx --action=reload +ynh_systemd_action --service_name="$app" --action="start" #================================================= # END OF SCRIPT diff --git a/scripts/install b/scripts/install index 21da605..9c53102 100755 --- a/scripts/install +++ b/scripts/install @@ -49,12 +49,12 @@ ynh_script_progression --message="Adding a configuration file..." # Set up the settings file mkdir -p "$install_dir/data" -ynh_add_config --template="../conf/settings.js" --destination="$install_dir/data/settings.js" -ynh_add_config --template="../conf/settings.user.js" --destination="$install_dir/data/settings.user.js" +ynh_add_config --template="settings.js" --destination="$install_dir/data/settings.js" +ynh_add_config --template="settings.user.js" --destination="$install_dir/data/settings.user.js" # Small hack to have the "/" path answer with a 200 code to satisfy the CI if [[ "${PACKAGE_CHECK_EXEC:-}" = "1" ]] ; then - ynh_add_config --template="../conf/flows.json" --destination="$install_dir/data/flows.json" + ynh_add_config --template="flows.json" --destination="$install_dir/data/flows.json" fi chmod 400 "$install_dir/data/settings.js" diff --git a/scripts/remove b/scripts/remove index e5e0e84..3a92ca9 100755 --- a/scripts/remove +++ b/scripts/remove @@ -10,74 +10,24 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# LOAD SETTINGS +# REMOVE SYSTEM CONFIGURATIONS #================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." --weight=1 +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) - -#================================================= -# STANDARD REMOVE -#================================================= -# REMOVE SERVICE INTEGRATION IN YUNOHOST -#================================================= # Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -if ynh_exec_warn_less yunohost service status $app >/dev/null -then - ynh_script_progression --message="Removing $app service..." --weight=1 - yunohost service remove $app +if ynh_exec_warn_less yunohost service status "$app" >/dev/null; then + yunohost service remove "$app" fi -#================================================= -# STOP AND REMOVE SERVICE -#================================================= -ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 - # Remove the dedicated systemd config ynh_remove_systemd_config -#================================================= -# REMOVE APP MAIN DIR -#================================================= -#REMOVEME? ynh_script_progression --message="Removing app main directory..." --weight=2 - -# Remove the app directory securely -#REMOVEME? ynh_secure_remove --file="$install_dir" - -#================================================= -# REMOVE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 - # Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# REMOVE DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Removing dependencies..." --weight=4 - ynh_remove_nodejs -#================================================= -# SPECIFIC REMOVE -#================================================= - -#================================================= -# GENERIC FINALIZATION -#================================================= -# REMOVE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." --weight=1 - -# Delete a system user -#REMOVEME? ynh_system_user_delete --username=$app - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/restore b/scripts/restore index 8d5a93e..93e81a7 100755 --- a/scripts/restore +++ b/scripts/restore @@ -11,47 +11,11 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #================================================= -# MANAGE SCRIPT FAILURE +# REINSTALL NODEJS #================================================= +ynh_script_progression --message="Reinstalling NodeJS..." -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -ynh_script_progression --message="Loading settings..." --weight=1 - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) - -#================================================= -# CHECK IF THE APP CAN BE RESTORED -#================================================= -#REMOVEME? ynh_script_progression --message="Validating restoration parameters..." --weight=1 - -#REMOVEME? test ! -d $install_dir \ - || ynh_die --message="There is already a directory: $install_dir " - -#================================================= -# STANDARD RESTORATION STEPS -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the NGINX web server configuration..." - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" - -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 - -# Create the dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir=$install_dir +ynh_install_nodejs --nodejs_version="$nodejs_version" #================================================= # RESTORE THE APP MAIN DIR @@ -64,47 +28,26 @@ chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R $app: "$install_dir" -# Create log directory and apply permissions -mkdir -p /var/log/$app -chown -R $app: /var/log/$app +#================================================= +# RESTORE SYSTEM CONFIGURATIONS +#================================================= +ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 -#================================================= -# SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." - -ynh_install_nodejs --nodejs_version=$nodejs_version - -#================================================= -# RESTORE SYSTEMD -#================================================= -ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/systemd/system/$app.service" -systemctl enable $app.service --quiet - -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." - -yunohost service add $app --description="Low-code programming for event-driven applications" - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=3 - -ynh_systemd_action --service_name=$app --action="start" +systemctl enable "$app.service" --quiet +yunohost service add "$app" --description="Low-code programming for event-driven applications" #================================================= # GENERIC FINALIZATION #================================================= -# RELOAD NGINX +# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE #================================================= -ynh_script_progression --message="Reloading NGINX web server..." --weight=1 +ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 + +### Typically you only have either $app or php-fpm but not both at the same time... +ynh_systemd_action --service_name="$app" --action="start" ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index 357b8b5..f11b86c 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,39 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." --weight=1 - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) - -#================================================= -# CHECK VERSION -#================================================= -ynh_script_progression --message="Checking version..." - -upgrade_type=$(ynh_check_app_version_changed) - -#================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP -#================================================= -#REMOVEME? ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=5 - -# Backup the current version of the app -#REMOVEME? ynh_backup_before_upgrade -#REMOVEME? ynh_clean_setup () { - # Restore it if the upgrade fails -#REMOVEME? ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -56,108 +23,48 @@ ynh_systemd_action --service_name=$app --action="stop" #================================================= ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 -# If install_dir doesn't exist, create it -if [ -z "$install_dir" ]; then -#REMOVEME? install_dir=/var/www/$app -#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir -fi - -# Cleaning legacy permissions -#REMOVEME? if ynh_legacy_permissions_exists; then -#REMOVEME? ynh_legacy_permissions_delete_all - - ynh_app_setting_delete --app=$app --key=is_public -fi - -# After 1.3.5~ynh2, permissions have been reworked -#REMOVEME? if ynh_permission_exists --permission="admin"; then - # Delete the admin permission - ynh_permission_delete --permission="admin" - # We use main as admin permission - ynh_permission_url --permission="main" --url="/admin" -fi - -#REMOVEME? if ! ynh_permission_exists --permission="ui"; then - # Create ui permission, for the dashboard -#REMOVEME? ynh_permission_create --permission="ui" --url="/ui" --show_tile=true -fi - -#REMOVEME? if ! ynh_permission_exists --permission="endpoints"; then - # Create endpoints permission -#REMOVEME? ynh_permission_create --permission="endpoints" --url="/" --show_tile=false -fi - -# Transfer the publicness of the app to ui and endpoints -if ynh_permission_has_user --permission=main --user=visitors; then -#REMOVEME? ynh_permission_update --permission="ui" --add="visitors" -#REMOVEME? ynh_permission_update --permission="endpoints" --add="visitors" - # Remove visitor access to the admin panel -#REMOVEME? ynh_permission_update --permission="main" --remove="visitors" -fi - # Flows were stored in file named after the hostname. # Not very portable. Let's fix that. -if [[ ! -f "$install_dir/data/flows.json" && -f "$install_dir/data/flows_$(hostname).json" ]]; then - mv "$install_dir/data/flows_$(hostname)_cred.json" "$install_dir/data/flows_cred.json" - mv "$install_dir/data/flows_$(hostname).json" "$install_dir/data/flows.json" -# Flows could be stored in a file named '>>'. -# Definitely weird, let's fix that. -elif [[ ! -f "$install_dir/data/flows.json" && -f "$install_dir/data/>>" ]]; then - mv "$install_dir/data/>>_cred" "$install_dir/data/flows_cred.json" - mv "$install_dir/data/>>" "$install_dir/data/flows.json" +if [[ ! -f "$install_dir/data/flows.json" ]]; then + if [[ -f "$install_dir/data/flows_$(hostname).json" ]]; then + mv "$install_dir/data/flows_$(hostname)_cred.json" "$install_dir/data/flows_cred.json" + mv "$install_dir/data/flows_$(hostname).json" "$install_dir/data/flows.json" + elif [[ -f "$install_dir/data/>>" ]]; then + mv "$install_dir/data/>>_cred" "$install_dir/data/flows_cred.json" + mv "$install_dir/data/>>" "$install_dir/data/flows.json" + fi fi # Remove logrotate and log directory, we use syslog now if [[ -d "/etc/logrotate.d/$app" ]]; then - ynh_remove_logrotate - ynh_secure_remove --file="/var/log/$app" + ynh_remove_logrotate + ynh_secure_remove --file="/var/log/$app" fi # In older versions of the package, the port serving the webui was opened to anyone, # allowing direct access to Node-RED... let's close it. -if yunohost firewall list | grep -q "\- $port$" -then - ynh_script_progression --message="Closing port $port..." --weight=1 - ynh_exec_warn_less yunohost firewall disallow TCP $port +if yunohost firewall list | grep -q "\- $port$"; then + ynh_exec_warn_less yunohost firewall disallow TCP $port fi #================================================= -# CREATE DEDICATED USER +# UPGRADE NODEJS #================================================= -#REMOVEME? ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 +ynh_script_progression --message="Upgrading NodeJS..." -# Create a dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir=$install_dir +ynh_install_nodejs --nodejs_version="$nodejs_version" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= +ynh_script_progression --message="Upgrading source files..." --weight=2 -if [ "$upgrade_type" == "UPGRADE_APP" ] -then - ynh_script_progression --message="Upgrading source files..." --weight=2 +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source --dest_dir="$install_dir" --full_replace=1 --keep="data" - # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$install_dir" -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 -#================================================= -#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." - -#REMOVEME? if [ $(ynh_app_setting_get --app=$app --key=nodejs_version) != $nodejs_version ]; then - ynh_remove_nodejs - ynh_install_nodejs --nodejs_version=$nodejs_version -fi +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R "$app:www-data" "$install_dir" #================================================= # SPECIFIC UPGRADE @@ -168,11 +75,9 @@ ynh_script_progression --message="Installing Node-RED..." --weight=5 ynh_use_nodejs -chown -R $app: "$install_dir" - -pushd $install_dir - ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $ynh_npm install --production - ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $ynh_npm install node-red-dashboard +pushd "$install_dir" + ynh_exec_warn_less ynh_exec_as "$app" "$ynh_node_load_PATH" "$ynh_npm" install --production + ynh_exec_warn_less ynh_exec_as "$app" "$ynh_node_load_PATH" "$ynh_npm" install node-red-dashboard popd #================================================= @@ -181,43 +86,31 @@ popd ynh_script_progression --message="Updating a configuration file..." # Set up the settings file -ynh_add_config --template="../conf/settings.js" --destination="$install_dir/data/settings.js" +ynh_add_config --template="settings.js" --destination="$install_dir/data/settings.js" if [[ ! -f "$install_dir/data/settings.user.js" ]] ; then - ynh_add_config --template="../conf/settings.user.js" --destination="$install_dir/data/settings.user.js" + ynh_add_config --template="settings.user.js" --destination="$install_dir/data/settings.user.js" fi # Small hack to have the "/" path answer with a 200 code to satisfy the CI if [[ "${PACKAGE_CHECK_EXEC:-}" = "1" ]] ; then - ynh_add_config --template="../conf/flows.json" --destination="$install_dir/data/flows.json" + ynh_add_config --template="flows.json" --destination="$install_dir/data/flows.json" fi +chmod 400 "$install_dir/data/settings.js" +chmod -R o-rwx "$install_dir" +chown -R "$app:www-data" "$install_dir" + #================================================= -# SETUP SYSTEMD +# REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config # Create a dedicated systemd config ynh_add_systemd_config - -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions on app files -chmod 750 "$install_dir" -chmod -R o-rwx "$install_dir" -chown -R $app: "$install_dir" -# make settings.js readonly -chmod a-w "$install_dir/data/settings.js" - -#================================================= -# GENERIC FINALIZATION -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." - -yunohost service add $app --description="Low-code programming for event-driven applications" +yunohost service add "$app" --description="Low-code programming for event-driven applications" #================================================= # START SYSTEMD SERVICE @@ -226,13 +119,6 @@ ynh_script_progression --message="Starting a systemd service..." --weight=3 ynh_systemd_action --service_name=$app --action="start" -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." --weight=1 - -#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload - #================================================= # END OF SCRIPT #=================================================