fix(bkgpslog):Remove nuisance error if -R not set
[EVA-2020-02.git] / exec / bkgpslog
index 6739f0123f4e376eeb8144ffde41118a140acb1d..2b19e31e087024c59416c97824fc1962e4b19ca7 100755 (executable)
@@ -14,7 +14,7 @@ DIR_TMP_DEFAULT="/dev/shm"; # Default parent of working directory
 SCRIPT_TIME_START=$(date +%Y%m%dT%H%M%S.%N);
 PATH="$HOME/.local/bin:$PATH";   # Add "$(systemd-path user-binaries)" path in case apps saved there
 SCRIPT_HOSTNAME=$(hostname);     # Save hostname of system running this script.
-SCRIPT_VERSION="0.3.10";          # Define version of script.
+SCRIPT_VERSION="0.4.3";          # Define version of script.
 SCRIPT_NAME="bkgpslog";          # Define basename of script file.
 SCRIPT_URL="https://gitlab.com/baltakatei/ninfacyzga-01"; # Define wesite hosting this script.
 AGE_VERSION="1.0.0-beta2";       # Define version of age (encryption program)
@@ -975,7 +975,7 @@ magicGatherWriteBuffer() {
 } # write buffer to disk
 magicParseRecipientDir() {
     # Desc: Updates recPubKeysValid with pubkeys in dir specified by '-R' option ("recipient directory")
-    # Inputs:  vars: OPTION_RECDIR, argRecDir, OPTION_ENCRYPTION
+    # Inputs:  vars: OPTION_RECDIR, argRecDir, OPTION_ENCRYPT
     #          arry: recPubKeysValid
     # Outputs: arry: recPubKeysValid
     # Depends: processArguments,
@@ -983,23 +983,23 @@ magicParseRecipientDir() {
     declare -a candRecPubKeysValid
 
     # Check that '-e' and '-R' set
-    if [[ "$OPTION_ENCRYPTION" = "true" ]] && [[ "$OPTION_RECDIR" = "true" ]]; then
+    if [[ "$OPTION_ENCRYPT" = "true" ]] && [[ "$OPTION_RECDIR" = "true" ]]; then
        ### Check that argRecDir is a directory.
        if [[ -d "$argRecDir" ]]; then
-           recipientDir="$argRecDir";
+           recipientDir="$argRecDir" && vbm "STATUS:Recipient watch directory detected:\"$recipientDir\"";
            #### Initialize variable indicating outcome of pubkey review
            unset updateRecipients
            #### Add existing recipients
-           candRecPubKeysValid=("${recPubKeysValid[@]}");
+           candRecPubKeysValid=("${recPubKeysValidStatic[@]}");
            #### Parse files in recipientDir
            for file in "$recipientDir"/*; do
                ##### Read first line of each file
-               recFileLine="$(head -n1 "$file")";
+               recFileLine="$(head -n1 "$file")" && vbm "STATUS:Checking if pubkey:\"$recFileLine\"";
                ##### check if first line is a valid pubkey
                if checkAgePubkey "$recFileLine" && \
                        ( validateInput "$recFileLine" "ssh_pubkey" || validateInput "$recFileLine" "age_pubkey"); then
                    ###### T: add candidate pubkey to candRecPubKeysValid
-                   candRecPubKeysValid+=("$recFileLine");
+                   candRecPubKeysValid+=("$recFileLine") && vbm "STATUS:RecDir pubkey is valid pubkey:\"$recFileLine\"";
                else
                    ###### F: throw warning;
                    yell "ERROR:Invalid recipient file detected. Not modifying recipient list."
@@ -1008,17 +1008,14 @@ magicParseRecipientDir() {
            done
            #### Write updated recPubKeysValid array to recPubKeysValid if no failure detected
            if ! [[ "$updateRecipients" = "false" ]]; then
-               recPubKeysValid=("${candRecPubKeysValid[@]}");
+               recPubKeysValid=("${candRecPubKeysValid[@]}") && vbm "STATUS:Wrote candRecPubkeysValid to recPubKeysValid:\"${recPubKeysValid[@]}\"";
            fi;
        else
            yell "ERROR:$0:Recipient directory $argRecDir does not exist. Exiting."; exit 1;
        fi;
     fi;
-    # Handle case if '-e' set but '-R' not set
-    if [[ "$OPTION_ENCRYPTION" = "true" ]] && [[ ! "$OPTION_RECDIR" = "true" ]]; then
-       yell "ERROR: \\'-e\\' set but \\'-R\\' is not set."; fi;
     # Handle case if '-R' set but '-e' not set
-    if [[ ! "$OPTION_ENCRYPTION" = "true" ]] && [[ "$OPTION_RECDIR" = "true" ]]; then
+    if [[ ! "$OPTION_ENCRYPT" = "true" ]] && [[ "$OPTION_RECDIR" = "true" ]]; then
        yell "ERROR: \\'-R\\' is set but \\'-e\\' is not set."; fi;
 } # Update recPubKeysValid with argRecDir
 magicParseRecipientArgs() {
@@ -1026,7 +1023,7 @@ magicParseRecipientArgs() {
     # Input:  vars: OPTION_ENCRYPT from processArguments()
     #         arry: argRecPubKeys from processArguments()
     # Output: vars: CMD_ENCRYPT, CMD_ENCRYPT_SUFFIX
-    #         arry: recPubKeysValid
+    #         arry: recPubKeysValid, recPubKeysValidStatic
     # Depends: checkapp(), checkAgePubkey(), validateInput(), processArguments()
     local recipients
 
@@ -1048,6 +1045,8 @@ magicParseRecipientArgs() {
                fi;
            done
            vbm "DEBUG:Finished processing argRecPubKeys array";
+           vbm "STATUS:Array of validated pubkeys:${recPubKeysValid[@]}";
+           recPubKeysValidStatic="${recPubKeysValid[@]}"; # Save static image of pubkeys validated by this function
 
            ##  Form age command string
            CMD_ENCRYPT="age ""$recipients " && vbm "CMD_ENCRYPT:$CMD_ENCRYPT";
@@ -1162,7 +1161,7 @@ main() {
     magicInitWorkingDir; # Sets DIR_TMP from argTempDirPriority
     ### Set output encryption and compression option strings
     #### React to "-r" ("encryption recipients") option
-    magicParseRecipientArgs; # Updates recPubKeysValid, CMD_ENCRYPT[_SUFFIX]
+    magicParseRecipientArgs; # Updates recPubKeysValid, CMD_ENCRYPT[_SUFFIX] from argRecPubKeys
     #### React to "-c" ("compression") option
     magicParseCompressionArg; # Updates CMD_COMPRESS[_SUFFIX]
     #### React to "-R" ("recipient directory") option
@@ -1201,6 +1200,7 @@ main() {
 
     # MAIN LOOP:Record gps data until script lifespan ends
     while [[ "$SECONDS" -lt "$SCRIPT_TTL" ]]; do
+       magicParseRecipientDir
        magicGatherWriteBuffer &
        sleep "$BUFFER_TTL";
     done