diff --git a/scripts/backup b/scripts/backup old mode 100755 new mode 100644 index a675fe7..5fc645f --- a/scripts/backup +++ b/scripts/backup @@ -15,65 +15,16 @@ source /usr/share/yunohost/helpers #================================================= ynh_print_info --message="Declaring files to be backed up..." -### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs -### to be backuped and not an actual copy of any file. The actual backup that -### creates and fills the archive with the files happens in the core after this -### script is called. Hence ynh_backups calls take basically 0 seconds to run. - -#================================================= -# BACKUP THE APP MAIN DIR -#================================================= - -ynh_backup --src_path="$install_dir" - -#================================================= -# BACKUP THE DATA DIR -#================================================= - -### Only relevant if there is a "data_dir" resource for this app -ynh_backup --src_path="$data_dir" --is_big - -#================================================= -# SYSTEM CONFIGURATION -#================================================= - -# Backup the PHP-FPM configuration -ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -# Backup the nginx configuration -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" - -# Backup the systemd service unit -ynh_backup --src_path="/etc/systemd/system/$app.service" - -# Backup the logrotate configuration ynh_backup --src_path="/etc/logrotate.d/$app" -# Backup the Fail2Ban config -ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" -ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" - #================================================= # BACKUP VARIOUS FILES #================================================= -ynh_backup --src_path="/etc/cron.d/$app" +ynh_backup --src_path="/var/lib/incus/" -ynh_backup --src_path="/etc/$app/" +ynh_backup --src_path="/var/log/incus/" -### For apps with huge logs, you might want to pass --is_big, -### and in restore script, mkdir and pass --not_mandatory to ynh_restore_file. -ynh_backup --src_path="/var/log/$app/" - -#================================================= -# BACKUP THE MYSQL DATABASE -#================================================= -ynh_print_info --message="Backing up the MySQL database..." - -### (However, things like MySQL dumps *do* take some time to run, though the -### copy of the generated dump to the archive still happens later) - -ynh_mysql_dump_db --database="$db_name" > db.sql #================================================= # END OF SCRIPT diff --git a/scripts/change_url b/scripts/change_url deleted file mode 100644 index b2c6c33..0000000 --- a/scripts/change_url +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -## this script is only run if actual change to domain/path is detected, if you're here either $domain or $path changed -## new location is available via $domain and $path (or $new_domain and $new_path variables if you want to be explicit) -## old values are available via, you guessed it, $old_domain and $old_path - -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source _common.sh -source /usr/share/yunohost/helpers - -#================================================= -# STANDARD MODIFICATIONS -#================================================= -# 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" - -#================================================= -# MODIFY URL IN NGINX CONF -#================================================= -ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 - -# this will most likely adjust NGINX config correctly -ynh_change_url_nginx_config - -#================================================= -# SPECIFIC MODIFICATIONS -#================================================= -# ... -#================================================= - -## do any changes to files that reference specific installation domain/path, i.e. regenerate configs etc - -#================================================= -# GENERIC FINALISATION -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 - -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" - -#================================================= -# END OF SCRIPT -#================================================= - -ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/config b/scripts/config deleted file mode 100644 index 29f78f8..0000000 --- a/scripts/config +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -# In simple cases, you don't need a config script. - -# With a simple config_panel.toml, you can write in the app settings, in the -# upstream config file or replace complete files (logo ...) and restart services. - -# The config scripts allows you to go further, to handle specific cases -# (validation of several interdependent fields, specific getter/setter for a value, -# display dynamic informations or choices, pre-loading of config type .cube... ). - -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source /usr/share/yunohost/helpers - -ynh_abort_if_errors - -#================================================= -# RETRIEVE ARGUMENTS -#================================================= - -install_dir=$(ynh_app_setting_get --app="$app" --key=install_dir) - -#================================================= -# SPECIFIC GETTERS FOR TOML SHORT KEY -#================================================= - -get__amount() { - # Here we can imagine to have an API call to stripe to know the amount of donation during a month - local amount=200 - - # It's possible to change some properties of the question by overriding it: - if [ "$amount" -gt 100 ]; then - cat << EOF -style: success -value: $amount -ask: - en: A lot of donation this month: **$amount €** -EOF - else - cat << EOF -style: danger -value: $amount -ask: - en: Not so much donation this month: $amount € -EOF - fi -} - -get__prices() { - local prices - prices="$(grep "DONATION\['" "$install_dir/settings.py" | sed -r "s@^DONATION\['([^']*)'\]\['([^']*)'\] = '([^']*)'@\1/\2/\3@g" | sed -z 's/\n/,/g;s/,$/\n/')" - if [ "$prices" == "," ]; then - # Return YNH_NULL if you prefer to not return a value at all. - echo YNH_NULL - else - echo "$prices" - fi -} - - -#================================================= -# SPECIFIC VALIDATORS FOR TOML SHORT KEYS -#================================================= -validate__publishable_key() { - - # We can imagine here we test if the key is really a publishable key - (is_secret_key "$publishable_key") && - echo 'This key seems to be a secret key' -} - -#================================================= -# SPECIFIC SETTERS FOR TOML SHORT KEYS -#================================================= -set__prices() { - - #--------------------------------------------- - # IMPORTANT: setters are triggered only if a change is detected - #--------------------------------------------- - for price in $(echo "$prices" | sed "s/,/ /"); do - frequency=$(echo "$price" | cut -d/ -f1) - currency=$(echo "$price" | cut -d/ -f2) - price_id=$(echo "$price" | cut -d/ -f3) - sed "d/DONATION\['$frequency'\]\['$currency'\]" "$install_dir/settings.py" - - echo "DONATION['$frequency']['$currency'] = '$price_id'" >> "$install_dir/settings.py" - done - - #--------------------------------------------- - # IMPORTANT: to be able to upgrade properly, you have to save the value in settings too - #--------------------------------------------- - ynh_app_setting_set --app="$app" --key=prices --value="$prices" -} - -#================================================= -# GENERIC FINALIZATION -#================================================= -ynh_app_config_run "$1" diff --git a/scripts/install b/scripts/install index d208f34..cf23305 100644 --- a/scripts/install +++ b/scripts/install @@ -37,22 +37,6 @@ yunohost service add "$app" --description="Incus system container and virtual ma # chmod 400 "$install_dir/" # chown $app:$app "$install_dir/" -#================================================= -# INSTALL APP -#================================================= -# ynh_script_progression --message="Installing app..." --weight=5 - -# pushd $install_dir -# some_command --build -# popd - -#================================================= -# FINALIZE APP INSTALL WITH CURL -#================================================= - -# REMOVEME? ynh_script_progression --message="Finalizing installation..." -# REMOVEME? ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3" - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/remove b/scripts/remove old mode 100755 new mode 100644 index 9369d1b..212e212 --- a/scripts/remove +++ b/scripts/remove @@ -9,48 +9,19 @@ source _common.sh source /usr/share/yunohost/helpers -### Settings are automatically loaded as bash variables -### in every app script context, therefore typically these will exist: -### - $domain -### - $path -### - $language -### - $install_dir -### - $port -### ... - -### For remove operations : -### - the core will deprovision every resource defined in the manifest **after** this script is ran -### this includes removing the install directory, and data directory (if --purge was used) - #================================================= # REMOVE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 +# REMOVE SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Removing system configurations related to $app..." -### This should be a symetric version of what happens in the install script - -# 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 integration..." --weight=1 - yunohost service remove "$app" -fi - -ynh_remove_fail2ban_config +yunohost service remove "$app" --description="Incus system container and virtual machine manager" --log="/var/log/incus/incusd.log" ynh_remove_logrotate -ynh_remove_systemd_config - -ynh_remove_nginx_config - -ynh_remove_fpm_config - # Remove other various files specific to the app... such as : -ynh_secure_remove --file="/etc/cron.d/$app" - -ynh_secure_remove --file="/etc/$app" - ynh_secure_remove --file="/var/log/$app" #================================================= diff --git a/scripts/restore b/scripts/restore old mode 100755 new mode 100644 index 29e7bca..dbbdac8 --- a/scripts/restore +++ b/scripts/restore @@ -10,85 +10,21 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# RESTORE THE APP MAIN DIR -#================================================= -ynh_script_progression --message="Restoring the app main directory..." --weight=1 - -ynh_restore_file --origin_path="$install_dir" - -### $install_dir will automatically be initialized with some decent -### permissions by default ... however, you may need to recursively reapply -### ownership to all files such as after the ynh_setup_source step -chown -R "$app:www-data" "$install_dir" - -#================================================= -# RESTORE THE DATA DIRECTORY -#================================================= -ynh_script_progression --message="Restoring the data directory..." --weight=1 - -ynh_restore_file --origin_path="$data_dir" --not_mandatory - -### (Same as for install dir) -chown -R "$app:www-data" "$data_dir" - -#================================================= -# RESTORE THE MYSQL DATABASE -#================================================= -ynh_script_progression --message="Restoring the MySQL database..." --weight=1 - -ynh_mysql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" < ./db.sql - #================================================= # RESTORE SYSTEM CONFIGURATIONS #================================================= ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 -### This should be a symetric version of what happens in the install script - -ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -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 - -yunohost service add "$app" --description="A short description of the app" --log="/var/log/$app/$app.log" +yunohost service add "$app" --description="Incus system container and virtual machine manager" --log="/var/log/incus/incusd.log" ynh_restore_file --origin_path="/etc/logrotate.d/$app" -ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf" -ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf" -ynh_systemd_action --action=restart --service_name=fail2ban - #================================================= # RESTORE VARIOUS FILES #================================================= -ynh_restore_file --origin_path="/etc/cron.d/$app" -ynh_restore_file --origin_path="/etc/$app/" - -### For apps with huge logs, you might want to not backup logs every time: -### The mkdir call is just here in case the log directory was not backed up. -### mkdir -p "/var/log/$app" -### chown $app:www-data "/var/log/$app" -### ynh_restore_file --src_path="/var/log/$app/" --not_mandatory -### -### For other apps, the simple way is better: -ynh_restore_file --origin_path="/var/log/$app/" - -#================================================= -# GENERIC FINALIZATION -#================================================= -# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE -#================================================= -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" --log_path="/var/log/$app/$app.log" -ynh_systemd_action --service_name="php$phpversion-fpm" --action=reload - -ynh_systemd_action --service_name=nginx --action=reload +ynh_restore_file --origin_path="/var/lib/incus" +ynh_restore_file --origin_path="/var/log/incus" #================================================= # END OF SCRIPT diff --git a/scripts/upgrade b/scripts/upgrade old mode 100755 new mode 100644 index 51c54db..85de93c --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,125 +9,15 @@ source _common.sh source /usr/share/yunohost/helpers -### Settings are automatically loaded as bash variables -### in every app script context, therefore typically these will exist: -### - $domain -### - $path -### - $language -### - $install_dir -### - $port -### ... - -### In the context of upgrade, -### - resources are automatically provisioned / updated / deleted (depending on existing resources) -### - a safety backup is automatically created by the core and will be restored if the upgrade fails - -### This variable describes which upgrade type is occurring, allowing the script to handle different modes: -### - UPGRADE_PACKAGE if only the YunoHost package has changed -### - UPGRADE_APP if the upstream app version has changed -### If your package needs to handle other things, like same-version upgrades or downgrades, please -### check out the $YNH_APP_UPGRADE_TYPE variable that can contain DOWNGRADE and UPGRADE_SAME too. -# upgrade_type=$(ynh_check_app_version_changed) - -#================================================= -# STANDARD UPGRADE STEPS -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= -#ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 - -### N.B. : the following setting migration snippets are provided as *EXAMPLES* -### of what you may want to do in some cases (e.g. a setting was not defined on -### some legacy installs and you therefore want to initiaze stuff during upgrade) - -# If db_name doesn't exist, create it -# if [ -z "$db_name" ]; then -# db_name=$(ynh_sanitize_dbid --db_name=$app) -# ynh_app_setting_set --app=$app --key=db_name --value=$db_name -# fi - -# If install_dir doesn't exist, create it -# if [ -z "$install_dir" ]; then -# install_dir=/var/www/$app -# ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir -# fi - -#================================================= -# 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" - -#================================================= -# "REBUILD" THE APP (DEPLOY NEW SOURCES, RERUN NPM BUILD...) -#================================================= -# DOWNLOAD, CHECK AND UNPACK SOURCE -#================================================= - -ynh_script_progression --message="Upgrading source files..." --weight=1 - -# Download, check integrity, uncompress and patch the source from manifest.toml -ynh_setup_source --dest_dir="$install_dir" - -### $install_dir will automatically be initialized with some decent -### permissions by default ... however, you may need to recursively reapply -### ownership to all files such as after the ynh_setup_source step -chown -R "$app:www-data" "$install_dir" - #================================================= # REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 +ynh_script_progression --message="Upgrading system configurations related to $app..." -### This should be a literal copypaste of what happened in the install's "System configuration" section - -ynh_add_fpm_config - -ynh_add_nginx_config - -ynh_add_systemd_config - -yunohost service add "$app" --description="A short description of the app" --log="/var/log/$app/$app.log" +yunohost service add "$app" --description="Incus system container and virtual machine manager" --log="/var/log/incus/incusd.log" ynh_use_logrotate --non-append -ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login" - -#================================================= -# RECONFIGURE THE APP (UPDATE CONF, APPLY MIGRATIONS...) -#================================================= -# UPDATE A CONFIG FILE -#================================================= -ynh_script_progression --message="Updating a configuration file..." --weight=1 - -### Same as during install -### -### The file will automatically be backed-up if it's found to be manually modified (because -### ynh_add_config keeps track of the file's checksum) - -ynh_add_config --template="some_config_file" --destination="$install_dir/some_config_file" - -# FIXME: this should be handled by the core in the future -### You may need to use chmod 600 instead of 400, -### for example if the app is expected to be able to modify its own config -chmod 400 "$install_dir/some_config_file" -chown "$app:$app" "$install_dir/some_config_file" - -### For more complex cases where you want to replace stuff using regexes, -### you shoud rely on ynh_replace_string (which is basically a wrapper for sed) -### When doing so, you also need to manually call ynh_store_file_checksum -### -### ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$install_dir/some_config_file" -### ynh_store_file_checksum --file="$install_dir/some_config_file" - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 - -ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" - #================================================= # END OF SCRIPT #=================================================