feat(bkgpslog):Include more fields in VERSION
authorSteven Baltakatei Sandoval <baltakatei@gmail.com>
Thu, 2 Jul 2020 21:23:34 +0000 (21:23 +0000)
committerSteven Baltakatei Sandoval <baltakatei@gmail.com>
Thu, 2 Jul 2020 21:23:34 +0000 (21:23 +0000)
These fields are included to automatically-generated VERSION file
included when a new tar is generated or the script is restarted:

- SCRIPT_VERSION  : Version of bkgpslog being run.
- SCRIPT_NAME     : Name of the script being run ("bkgpslog").
- SCRIPT_URL      : URL where script can be downloaded.
- AGE_VERSION     : Version of age (encryption program) used.
- AGE_URL         : URL where age can be downloaded.
- DATE            : Creation timestamp (ISO-8601).
- HOSTNAME        : Hostname of device running script.
- PUBKEY_[n]      : Pubkey string used by age to encrypt.

exec/bkgpslog

index 92890646ebb2bb5562f01365f6153a01811f9287..97231f80a702e3b304e3f244cd52234f2d2c07c2 100755 (executable)
@@ -14,8 +14,11 @@ 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="bkgpslog 0.2.1"; # Define version of script.
-SCRIPT_NAME="$(basename "$0")";  # Define basename of script file.
+SCRIPT_VERSION="0.2.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)
+AGE_URL="https://github.com/FiloSottile/age/releases/tag/v1.0.0-beta2"; # Define website hosting age.
 
 declare -Ag appRollCall # Associative array for storing app status
 declare -Ag fileRollCall # Associative array for storing file status
@@ -713,20 +716,36 @@ appendArgTar(){
 magicWriteVersion() {
     # Desc: Appends time-stamped VERSION to PATHOUT_TAR
     # Usage: magicWriteVersion
+    # Version: 0.1.0
     # Input: CONTENT_VERSION, FILEOUT_VERSION, PATHOUT_TAR, DIR_TMP
+    # Input: SCRIPT_VERSION, SCRIPT_URL, AGE_VERSION, AGE_URL, SCRIPT_HOSTNAME
+    # Output: appends tar PATHOUT_TAR
     # Depends: dateTimeShort, appendArgTar
-    local CONTENT_VERSION
+    local CONTENT_VERSION pubKeyIndex
     
-    # Generate VERSION file in BashVar
+    # Set VERSION file name
     FILEOUT_VERSION="$(dateTimeShort)..VERSION";
-    CONTENT_VERSION="VERSION=$SCRIPT_VERSION";
-    CONTENT_VERSION="$CONTENT_VERSION""\n""SCRIPT_NAME=SCRIPT_NAME";
+
+    # Gather VERSION data in CONTENT_VERSION
+    CONTENT_VERSION="SCRIPT_VERSION=$SCRIPT_VERSION";
+    #CONTENT_VERSION="$CONTENT_VERSION""\n";
+    CONTENT_VERSION="$CONTENT_VERSION""\n""SCRIPT_NAME=$SCRIPT_NAME";
+    CONTENT_VERSION="$CONTENT_VERSION""\n""SCRIPT_URL=$SCRIPT_URL";
+    CONTENT_VERSION="$CONTENT_VERSION""\n""AGE_VERSION=$AGE_VERSION";
+    CONTENT_VERSION="$CONTENT_VERSION""\n""AGE_URL=$AGE_URL";
     CONTENT_VERSION="$CONTENT_VERSION""\n""DATE=$(date --iso-8601=seconds)";
     CONTENT_VERSION="$CONTENT_VERSION""\n""HOSTNAME=$SCRIPT_HOSTNAME";
+    ## Add list of recipient pubkeys
+    for pubkey in "${recPubKeysValid[@]}"; do
+       ((pubKeyIndex++))
+       CONTENT_VERSION="$CONTENT_VERSION""\n""PUBKEY_$pubKeyIndex=$pubkey";
+    done
+    ## Process newline escapes
     CONTENT_VERSION="$(echo -e "$CONTENT_VERSION")"
 
-    # Create BashVar as file FILEOUT_VERSION and write-append to PATHOUT_TAR
+    # Write CONTENT_VERSION as file FILEOUT_VERSION and write-append to PATHOUT_TAR
     appendArgTar "$CONTENT_VERSION" "$FILEOUT_VERSION" "$PATHOUT_TAR" "$DIR_TMP";
+    
 } # bkgpslog: write version data to PATHOUT_TAR via appendArgTar()
 magicWriteBuffer() {
     # Desc: bkgpslog-specific meta function for writing data to DIR_TMP then appending each file to PATHOUT_TAR
@@ -784,16 +803,19 @@ main() {
            for pubkey in "${recPubKeys[@]}"; do # Validate recipient pubkey strings by forming test message
                vbm "DEBUG:Testing pubkey string:$pubkey"
                if echo "butts" | age -a -r "$pubkey" 1>/dev/null; then
-                   # Form age recipient string
+                   #### Form age recipient string
                    recipients="$recipients""-r $pubkey ";
                    vbm "STATUS:Added pubkey for forming age recipient string:""$pubkey";
                    vbm "DEBUG:recipients:""$recipients";
+                   #### Add validated pubkey to recPubKeysValid array
+                   recPubKeysValid+=("$pubkey") && vbm "DEBUG:recPubkeysValid:pubkey added:$pubkey";
                else
                    yell "ERROR:Exit code ""$?"". Invalid recipient pubkey string. Exiting."; exit 1;
                fi
            done
            vbm "DEBUG:Finished processing recPubKeys array";
-           # Form age command string
+
+           ##  Form age command string
            CMD_ENCRYPT="age ""$recipients ";
            CMD_ENCRYPT_SUFFIX=".age";
        else