diff --git a/manifest.toml b/manifest.toml index f6ea0c3..292c961 100644 --- a/manifest.toml +++ b/manifest.toml @@ -18,7 +18,8 @@ admindoc = "https://borgbackup.readthedocs.io/en/stable/" code = "https://github.com/borgbackup/borg" [integration] -yunohost = ">= 11.2" +yunohost = ">= 11.2.18" +helpers_version = "2.1" architectures = "all" multi_instance = true ldap = "not_relevant" diff --git a/scripts/_common.sh b/scripts/_common.sh index 75da2fb..0addbd3 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,25 +1,21 @@ #!/bin/bash #================================================= -# COMMON VARIABLES -#================================================= - -#================================================= -# PERSONAL HELPERS +# COMMON VARIABLES AND CUSTOM HELPERS #================================================= install_borg_with_pip() { - ynh_exec_as "$app" python3 -m venv --upgrade "$install_dir/venv" + ynh_exec_as_app python3 -m venv --upgrade "$install_dir/venv" venvpy="$install_dir/venv/bin/python3" - ynh_exec_as "$app" "$venvpy" -m pip install --upgrade setuptools wheel + ynh_exec_as_app "$venvpy" -m pip install --upgrade setuptools wheel BORG_VERSION=$(ynh_app_upstream_version) - ynh_exec_as "$app" "$venvpy" -m pip install borgbackup[pyfuse3]=="$BORG_VERSION" + ynh_exec_as_app "$venvpy" -m pip install borgbackup[pyfuse3]=="$BORG_VERSION" # Make venv accessible for every user - chmod a+rX "$install_dir" - chmod a+rX -R "$install_dir/venv" + #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod a+rX "$install_dir" + #REMOVEME? Assuming the file is setup using ynh_config_add, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod a+rX -R "$install_dir/venv" } create_ssh_config() { @@ -39,11 +35,3 @@ create_ssh_config() { chown -R "$ssh_user:$ssh_user" "$ssh_dir" chmod -R u=rwX,go=--- "$ssh_dir" } - -#================================================= -# EXPERIMENTAL HELPERS -#================================================= - -#================================================= -# FUTURE OFFICIAL HELPERS -#================================================= diff --git a/scripts/backup b/scripts/backup index 50c4e36..6791dd3 100755 --- a/scripts/backup +++ b/scripts/backup @@ -1,41 +1,32 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source /usr/share/yunohost/helpers -#================================================= -# DECLARE DATA AND CONF FILES TO BACKUP -#================================================= -ynh_print_info --message="Declaring files to be backed up..." +ynh_print_info "Declaring files to be backed up..." #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$install_dir" +ynh_backup "$install_dir" #================================================= # BACKUP THE DATA DIR #================================================= -ynh_backup --src_path="/home/$ssh_user/.ssh" -ynh_backup --src_path="/home/$ssh_user/.nobackup" +ynh_backup "/home/$ssh_user/.ssh" +ynh_backup "/home/$ssh_user/.nobackup" -ynh_print_info --message="Borg backup repo in /home/$ssh_user/ won't be backup to avoid backup of backup loop issue." +ynh_print_info "Borg backup repo in /home/$ssh_user/ won't be backup to avoid backup of backup loop issue." #================================================= # BACKUP VARIOUS FILES #================================================= -ynh_backup --src_path="/etc/cron.d/$app" +ynh_backup "/etc/cron.d/$app" #================================================= # END OF SCRIPT #================================================= -ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." +ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/install b/scripts/install index 8a8fc52..8924fb4 100755 --- a/scripts/install +++ b/scripts/install @@ -1,11 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers @@ -14,23 +8,23 @@ source /usr/share/yunohost/helpers #================================================= # Here is a small hack to avoid multi install CI test to fail due # to same ssh_user provided -if [[ "${PACKAGE_CHECK_EXEC:-}" = "1" ]] && [[ "$YNH_APP_INSTANCE_NUMBER" != "1" ]] ; then +if ynh_in_ci_tests ; then ssh_user+="$YNH_APP_INSTANCE_NUMBER" fi -ynh_system_user_exists --username="$ssh_user" && ynh_die --message="This user already exists" +ynh_system_user_exists --username="$ssh_user" && ynh_die "This user already exists" #================================================= # INSTALL BORG #================================================= -ynh_script_progression --message="Installing Borg..." +ynh_script_progression "Installing Borg..." install_borg_with_pip #================================================= # AUTORIZE SSH FOR THIS USER #================================================= -ynh_script_progression --message="Configuring user and SSH public key for remote connexion..." +ynh_script_progression "Configuring user and SSH public key for remote connexion..." ynh_system_user_create --username="$ssh_user" --home_dir="/home/$ssh_user" --use_shell --groups ssh.app mkdir -p "/home/$ssh_user" @@ -45,14 +39,14 @@ create_ssh_config "/home/$ssh_user/.ssh" "/home/$ssh_user/backup" #================================================= # SETUP CRON #================================================= -ynh_script_progression --message="Configuring cron to monitor backup..." +ynh_script_progression "Configuring cron to monitor backup..." -ynh_add_config --template="monitor-backup.cron" --destination="/etc/cron.d/$app" -ynh_add_config --template="monitor-backup.sh" --destination="$install_dir/monitor-backup.sh" +ynh_config_add --template="monitor-backup.cron" --destination="/etc/cron.d/$app" +ynh_config_add --template="monitor-backup.sh" --destination="$install_dir/monitor-backup.sh" chmod +x "$install_dir/monitor-backup.sh" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --last +ynh_script_progression "Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index ed76711..31609b7 100755 --- a/scripts/remove +++ b/scripts/remove @@ -1,11 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers @@ -21,10 +15,10 @@ ynh_system_user_delete --username="$ssh_user" # REMOVE CRON FILES #================================================= -ynh_secure_remove "/etc/cron.d/$app" +ynh_safe_rm "/etc/cron.d/$app" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" --last +ynh_script_progression "Removal of $app completed" diff --git a/scripts/restore b/scripts/restore index c4163b2..07f97c1 100755 --- a/scripts/restore +++ b/scripts/restore @@ -1,43 +1,37 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - 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_script_progression "Restoring the app main directory..." -ynh_restore_file --origin_path="$install_dir" +ynh_restore "$install_dir" #================================================= # RESTORE THE DATA DIRECTORY #================================================= -ynh_script_progression --message="Restoring the user and SSH configuration..." --weight=1 +ynh_script_progression "Restoring the user and SSH configuration..." ynh_system_user_create --username="$ssh_user" --home_dir="/home/$ssh_user" --use_shell --groups ssh.app mkdir -p "/home/$ssh_user" chmod 700 "/home/$ssh_user" chown "$ssh_user" "/home/$ssh_user" -ynh_restore_file --origin_path="/home/$ssh_user/.ssh" -ynh_restore_file --origin_path="/home/$ssh_user/.nobackup" +ynh_restore "/home/$ssh_user/.ssh" +ynh_restore "/home/$ssh_user/.nobackup" #================================================= # RESTORE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 +ynh_script_progression "Restoring system configurations related to $app..." -ynh_restore_file --origin_path="/etc/cron.d/$app" +ynh_restore "/etc/cron.d/$app" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" --last +ynh_script_progression "Restoration completed for $app" diff --git a/scripts/upgrade b/scripts/upgrade index 52b3813..b4db369 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,33 +1,27 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." +ynh_script_progression "Ensuring downward compatibility..." # Remove legacy stuff if [ -f "/etc/apt/sources.list.d/$app-stretch-backports.list" ]; then - ynh_secure_remove "/etc/apt/sources.list.d/$app-stretch-backports.list" + ynh_safe_rm "/etc/apt/sources.list.d/$app-stretch-backports.list" fi if [ -f "/etc/yunohost/hooks.d/backup/17-data_home" ]; then - ynh_secure_remove "/etc/yunohost/hooks.d/backup/17-data_home" + ynh_safe_rm "/etc/yunohost/hooks.d/backup/17-data_home" fi # Clear legacy stuff if [ -d /opt/borg-env ]; then - ynh_secure_remove --file="/opt/borg-env" - ynh_secure_remove --file="/usr/local/bin/borg" - ynh_secure_remove --file="/usr/local/bin/backup-with-borg" + ynh_safe_rm "/opt/borg-env" + ynh_safe_rm "/usr/local/bin/borg" + ynh_safe_rm "/usr/local/bin/backup-with-borg" fi # Fix broken value ssh_user that mistakenly got replaced by the public key in previous versions... @@ -35,30 +29,30 @@ fi if echo "$ssh_user" | grep -q ' '; then ssh_user=$(grep "$ssh_user" /home/*/.ssh/authorized_keys | grep borg | cut -d/ -f3) [ -n "$ssh_user" ] || ynh_die "Unable to retrieve ssh_user please fix /etc/yunohost/apps/$app/settings.yml manually :( !" - ynh_app_setting_set --app="$app" --key=ssh_user --value="$ssh_user" + ynh_app_setting_set --key=ssh_user --value="$ssh_user" fi if echo "$public_key" | grep -q -v ' '; then - ynh_app_setting_set --app="$app" --key=public_key --value="$(grep -Po 'no-user-rc \K.*$' "/home/$ssh_user/.ssh/authorized_keys")" + ynh_app_setting_set --key=public_key --value="$(grep -Po 'no-user-rc \K.*$' "/home/$ssh_user/.ssh/authorized_keys")" fi # Alert delay and alert mail missing if [ -z "${alert_delay:-}" ]; then - ynh_app_setting_set --app="$app" --key=alert_delay --value="1" - ynh_app_setting_set --app="$app" --key=alert_mails --value="root" + ynh_app_setting_set --key=alert_delay --value="1" + ynh_app_setting_set --key=alert_mails --value="root" fi #================================================= # UPGRADE BORG #================================================= -ynh_script_progression --message="Upgrading Borg..." --weight=1 +ynh_script_progression "Upgrading Borg..." install_borg_with_pip #================================================= # AUTORIZE SSH FOR THIS USER #================================================= -ynh_script_progression --message="Making sure SSH user exists with appropriate permissions..." +ynh_script_progression "Making sure SSH user exists with appropriate permissions..." ynh_system_user_create --username="$ssh_user" --home_dir="/home/$ssh_user" --use_shell --groups ssh.app mkdir -p "/home/$ssh_user" @@ -73,14 +67,14 @@ create_ssh_config "/home/$ssh_user/.ssh" "/home/$ssh_user/backup" #================================================= # SETUP CRON #================================================= -ynh_script_progression --message="Configuring cron to monitor backup..." +ynh_script_progression "Configuring cron to monitor backup..." -ynh_add_config --template="monitor-backup.cron" --destination="/etc/cron.d/$app" -ynh_add_config --template="monitor-backup.sh" --destination="$install_dir/monitor-backup.sh" +ynh_config_add --template="monitor-backup.cron" --destination="/etc/cron.d/$app" +ynh_config_add --template="monitor-backup.sh" --destination="$install_dir/monitor-backup.sh" chmod +x "$install_dir/monitor-backup.sh" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --last +ynh_script_progression "Upgrade of $app completed"