From 6bce2e17556d639dca9c51e68771f577a796601a Mon Sep 17 00:00:00 2001 From: deajan Date: Mon, 1 Oct 2018 10:08:22 +0200 Subject: [PATCH] [WIP] Less restrictive preflight checks in target-helper mode --- dev/n_osync.sh | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 02307cf..f2c80f3 100644 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -10,7 +10,7 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2018 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.3.0-beta1 -PROGRAM_BUILD=2018100103 +PROGRAM_BUILD=2018100104 IS_STABLE=no ##### Execution order #__WITH_PARANOIA_DEBUG @@ -153,17 +153,27 @@ function CheckEnvironment { # Only gets checked in config file mode where all values should be present function CheckCurrentConfig { - __CheckArguments 0 $# "$@" #__WITH_PARANOIA_DEBUG + local fullCheck="${1:-true}" + + __CheckArguments 1 $# "$@" #__WITH_PARANOIA_DEBUG + + # Full check is for initiator driven runs + if [ $fullCheck == true ]; then + declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING PRESERVE_PERMISSIONS PRESERVE_OWNER PRESERVE_GROUP PRESERVE_EXECUTABILITY PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR RUN_AFTER_CMD_ON_ERROR) + declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME KEEP_LOGGING MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY MAX_EXEC_TIME_PER_CMD_BEFORE MAX_EXEC_TIME_PER_CMD_AFTER) + # target-helper runs need less configuration + else + declare -a yes_no_vars=(SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING STOP_ON_CMD_ERROR RUN_AFTER_CMD_ON_ERROR) + declare -a num_vars=(KEEP_LOGGING MIN_WAIT MAX_WAIT) + fi # Check all variables that should contain "yes" or "no" - declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING PRESERVE_PERMISSIONS PRESERVE_OWNER PRESERVE_GROUP PRESERVE_EXECUTABILITY PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR RUN_AFTER_CMD_ON_ERROR) for i in "${yes_no_vars[@]}"; do test="if [ \"\$$i\" != \"yes\" ] && [ \"\$$i\" != \"no\" ]; then Logger \"Bogus $i value [\$$i] defined in config file. Correct your config file or update it using the update script if using and old version.\" \"CRITICAL\"; exit 1; fi" eval "$test" done # Check all variables that should contain a numerical value >= 0 - declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME KEEP_LOGGING MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY MAX_EXEC_TIME_PER_CMD_BEFORE MAX_EXEC_TIME_PER_CMD_AFTER) for i in "${num_vars[@]}"; do test="if [ $(IsNumericExpand \"\$$i\") -eq 0 ]; then Logger \"Bogus $i value [\$$i] defined in config file. Correct your config file or update it using the update script if using and old version.\" \"CRITICAL\"; exit 1; fi" eval "$test" @@ -2933,7 +2943,11 @@ Init CheckEnvironment PostInit if [ $_QUICK_SYNC -lt 2 ]; then - CheckCurrentConfig + if [ "$_SYNC_ON_CHANGES" == "no" ]; then + CheckCurrentConfig true + else + CheckCurrentConfig false + fi fi CheckCurrentConfigAll DATE=$(date) @@ -2941,9 +2955,9 @@ Logger "-------------------------------------------------------------" "NOTICE" Logger "$DRY_WARNING$DATE - $PROGRAM $PROGRAM_VERSION script begin." "ALWAYS" Logger "-------------------------------------------------------------" "NOTICE" Logger "Sync task [$INSTANCE_ID] launched as $LOCAL_USER@$LOCAL_HOST (PID $SCRIPT_PID)" "NOTICE" -if [ $_SYNC_ON_CHANGES == "initiator" ]; then +if [ "$_SYNC_ON_CHANGES" == "initiator" ]; then SyncOnChanges false -elif [ $_SYNC_ON_CHANGES == "target" ]; then +elif [ "$_SYNC_ON_CHANGES" == "target" ]; then SyncOnChanges true else GetRemoteOS