From 0a866caca4526983dc6f355f19e6434f76d674e3 Mon Sep 17 00:00:00 2001 From: nachoparker Date: Fri, 15 Oct 2021 10:15:51 -0600 Subject: save and restore maintenance mode status in ncp-apps Signed-off-by: nachoparker --- bin/ncp-dist-upgrade | 4 ++-- bin/ncp/BACKUPS/nc-backup-auto.sh | 4 ++-- bin/ncp/BACKUPS/nc-backup.sh | 7 ++++--- bin/ncp/BACKUPS/nc-restore-snapshot.sh | 4 ++-- bin/ncp/BACKUPS/nc-rsync.sh | 4 ++-- bin/ncp/BACKUPS/nc-snapshot.sh | 4 ++-- bin/ncp/CONFIG/nc-database.sh | 4 ++-- bin/ncp/CONFIG/nc-datadir.sh | 4 ++-- etc/library.sh | 16 ++++++++++++++++ updates/1.42.0.sh | 3 +++ 10 files changed, 37 insertions(+), 17 deletions(-) diff --git a/bin/ncp-dist-upgrade b/bin/ncp-dist-upgrade index 71b174b9..9a5e7efe 100755 --- a/bin/ncp-dist-upgrade +++ b/bin/ncp-dist-upgrade @@ -29,7 +29,7 @@ old_cfg="${NCPCFG}" trap "echo 'Something went wrong. Fix it and try again'" EXIT -ncc maintenance:mode --on || true +save_maintenance_mode apt-get update apt-get upgrade -y @@ -115,7 +115,7 @@ is_active_app unattended-upgrades && run_app unattended-upgrades || true mv "${new_cfg}" "${old_cfg}" run_app nc-limits -ncc maintenance:mode --off || true +restore_maintenance_mode rm -f /etc/update-motd.d/30ncp-dist-upgrade diff --git a/bin/ncp/BACKUPS/nc-backup-auto.sh b/bin/ncp/BACKUPS/nc-backup-auto.sh index 1e05f122..40c85fa4 100644 --- a/bin/ncp/BACKUPS/nc-backup-auto.sh +++ b/bin/ncp/BACKUPS/nc-backup-auto.sh @@ -29,9 +29,9 @@ run_script() } run_script before -/usr/local/bin/ncc maintenance:mode --on +save_maintenance_mode /usr/local/bin/ncp-backup "$DESTDIR" "$INCLUDEDATA" "$COMPRESS" "$BACKUPLIMIT" || failed="\$failed\${failed:+, } main" -/usr/local/bin/ncc maintenance:mode --off +restore_maintenance_mode run_script after if [[ -n "\$failed" ]] then diff --git a/bin/ncp/BACKUPS/nc-backup.sh b/bin/ncp/BACKUPS/nc-backup.sh index 03ee65be..b754d019 100644 --- a/bin/ncp/BACKUPS/nc-backup.sh +++ b/bin/ncp/BACKUPS/nc-backup.sh @@ -15,6 +15,7 @@ install() cat > /usr/local/bin/ncp-backup <<'EOF' #!/bin/bash set -eE +source /usr/local/etc/library.sh destdir="${1:-/media/USBdrive/ncp-backups}" includedata="${2:-no}" @@ -33,8 +34,8 @@ datadir=$( $occ config:system:get datadirectory ) || { exit 1; } -cleanup(){ local ret=$?; rm -f "${dbbackup}" ; $occ maintenance:mode --off; exit $ret; } -fail() { local ret=$?; echo "Abort..." ; rm -f "${dbbackup}" "${destfile}"; $occ maintenance:mode --off; exit $ret; } +cleanup(){ local ret=$?; rm -f "${dbbackup}" ; restore_maintenance_mode; exit $ret; } +fail() { local ret=$?; echo "Abort..." ; rm -f "${dbbackup}" "${destfile}"; restore_maintenance_mode; exit $ret; } trap cleanup EXIT trap fail INT TERM HUP ERR @@ -68,7 +69,7 @@ free=$( df -B1 "$destdir" | tail -1 | awk '{ print $4 }' ) } # database -$occ maintenance:mode --on +save_maintenance_mode cd "$basedir" || exit 1 echo "backup database..." mysqldump -u root --single-transaction nextcloud > "$dbbackup" diff --git a/bin/ncp/BACKUPS/nc-restore-snapshot.sh b/bin/ncp/BACKUPS/nc-restore-snapshot.sh index efb753e8..e10bc148 100644 --- a/bin/ncp/BACKUPS/nc-restore-snapshot.sh +++ b/bin/ncp/BACKUPS/nc-restore-snapshot.sh @@ -36,10 +36,10 @@ configure() btrfs-snp $mountpoint autobackup 0 0 ../ncp-snapshots || return 1 - ncc maintenance:mode --on + save_maintenance_mode btrfs subvolume delete "$datadir" || return 1 btrfs subvolume snapshot "$SNAPSHOT" "$datadir" - ncc maintenance:mode --off + restore_maintenance_mode ncp-scan echo "snapshot $SNAPSHOT restored" diff --git a/bin/ncp/BACKUPS/nc-rsync.sh b/bin/ncp/BACKUPS/nc-rsync.sh index 6756f2d0..f92de08e 100644 --- a/bin/ncp/BACKUPS/nc-rsync.sh +++ b/bin/ncp/BACKUPS/nc-rsync.sh @@ -18,7 +18,7 @@ install() configure() { - sudo -u www-data php "$BASEDIR"/nextcloud/occ maintenance:mode --on + save_maintenance_mode local DATADIR DATADIR=$( sudo -u www-data php /var/www/nextcloud/occ config:system:get datadirectory ) || { @@ -28,7 +28,7 @@ configure() rsync -ax -e "ssh -p $PORTNUMBER" --delete "$DATADIR" "$DESTINATION" - sudo -u www-data php "$BASEDIR"/nextcloud/occ maintenance:mode --off + restore_maintenance_mode } # License diff --git a/bin/ncp/BACKUPS/nc-snapshot.sh b/bin/ncp/BACKUPS/nc-snapshot.sh index 19699144..34dc594d 100644 --- a/bin/ncp/BACKUPS/nc-snapshot.sh +++ b/bin/ncp/BACKUPS/nc-snapshot.sh @@ -17,7 +17,7 @@ install() configure() { - ncc maintenance:mode --on + save_maintenance_mode local DATADIR MOUNTPOINT DATADIR=$( ncc config:system:get datadirectory ) || { @@ -34,7 +34,7 @@ configure() btrfs-snp $MOUNTPOINT manual $LIMIT 0 ../ncp-snapshots - ncc maintenance:mode --off + restore_maintenance_mode } # License diff --git a/bin/ncp/CONFIG/nc-database.sh b/bin/ncp/CONFIG/nc-database.sh index c0b0261f..f7c150d0 100644 --- a/bin/ncp/CONFIG/nc-database.sh +++ b/bin/ncp/CONFIG/nc-database.sh @@ -39,7 +39,7 @@ configure() echo -e "INFO: moving database to the SD card\nIf you want to use an external mount, make sure it is properly set up" cd /var/www/nextcloud - sudo -u www-data php occ maintenance:mode --on + save_maintenance_mode echo "moving database to $DBDIR..." service mysql stop @@ -47,7 +47,7 @@ configure() sed -i "s|^datadir.*|datadir = $DBDIR|" /etc/mysql/mariadb.conf.d/90-ncp.cnf service mysql start - sudo -u www-data php occ maintenance:mode --off + restore_maintenance_mode } install(){ :; } diff --git a/bin/ncp/CONFIG/nc-datadir.sh b/bin/ncp/CONFIG/nc-datadir.sh index f44fa8d7..f99fdcfd 100644 --- a/bin/ncp/CONFIG/nc-datadir.sh +++ b/bin/ncp/CONFIG/nc-datadir.sh @@ -64,7 +64,7 @@ configure() ## COPY cd /var/www/nextcloud - ncc maintenance:mode --on + save_maintenance_mode echo "moving data directory from $SRCDIR to $DATADIR..." @@ -100,7 +100,7 @@ configure() # datadir ncc config:system:set datadirectory --value="$DATADIR" ncc config:system:set logfile --value="$DATADIR/nextcloud.log" - ncc maintenance:mode --off + restore_maintenance_mode } # License diff --git a/etc/library.sh b/etc/library.sh index a9215467..28867633 100644 --- a/etc/library.sh +++ b/etc/library.sh @@ -463,6 +463,22 @@ function notify_admin() ncc notification:generate "${admin}" "${header}" -l "${msg}" || true } +function save_maintenance_mode() +{ + unset NCP_MAINTENANCE_MODE + grep -q enabled <(ncc maintenance:mode) && export NCP_MAINTENANCE_MODE="on" || true + ncc maintenance:mode --on +} + +function restore_maintenance_mode() +{ + if [[ "${NCP_MAINTENANCE_MODE}" != "" ]]; then + ncc maintenance:mode --on + else + ncc maintenance:mode --off + fi +} + # License # # This script is free software; you can redistribute it and/or modify it diff --git a/updates/1.42.0.sh b/updates/1.42.0.sh index 8fd474de..74e1b34b 100644 --- a/updates/1.42.0.sh +++ b/updates/1.42.0.sh @@ -12,6 +12,9 @@ source /usr/local/etc/library.sh # sets NCLATESTVER PHPVER RELEASE ncc app:disable updatenotification run_app nc-notify-updates +# update nc-backup +install_app nc-backup + # docker images only [[ -f /.docker-image ]] && { : -- cgit v1.2.3