fix(bkgpslog):Fix recPubKeysValid array bloat
[EVA-2020-02.git] / exec / bkgpslog
index cc0422c6f1a95277d9e69ee902e0013def7f0ab5..c3eeef830f242d96aeda566f875ab5ea461c2268 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.4.0";          # Define version of script.
+SCRIPT_VERSION="0.4.2";          # 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)
@@ -986,20 +986,20 @@ magicParseRecipientDir() {
     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,7 +1008,7 @@ 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;
@@ -1026,7 +1026,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 +1048,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 +1164,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 +1203,7 @@ main() {
 
     # MAIN LOOP:Record gps data until script lifespan ends
     while [[ "$SECONDS" -lt "$SCRIPT_TTL" ]]; do
+       magicParseRecipientDir
        magicGatherWriteBuffer &
        sleep "$BUFFER_TTL";
     done