declare -Ag appRollCall # Associative array for storing app status
declare -Ag fileRollCall # Associative array for storing file status
declare -Ag dirRollCall # Associative array for storing dir status
+declare -a recPubKeys # for processArguments function
+declare recipients # for main function
#===BEGIN Declare local script functions===
checkapp() {
echoerr " -v, --verbose"
echoerr " Display debugging info."
echoerr
+ echoerr " -e, --encrypt"
+ echoerr " Encrypt output."
+ echoerr
+ echoerr " -r, --recipient [ pubkey string ]"
+ echoerr " Specify recipient."
+ echoerr
echoerr " -o, --output [ directory ]"
echoerr " Specify output directory to save logs."
+ echoerr
+ echoerr "EXAMPLE: (bash script lines)"
+ echoerr "/bin/bash bkgpslog -e \\"
+ echoerr "-r age1mrmfnwhtlprn4jquex0ukmwcm7y2nxlphuzgsgv8ew2k9mewy3rs8u7su5 \\"
+ echoerr "-r age1ala848kqrvxc88rzaauc6vc5v0fqrvef9dxyk79m0vjea3hagclswu0lgq \\"
+ echoerr "-o ~/Sync/Location"
} # Display information on how to use this script.
showVersion() {
echoerr "$SCRIPT_VERSION"
#echoerr "DEBUG:Starting processArguments while loop."
#echoerr "DEBUG:Provided arguments are:""$*"
case "$1" in
- --h | --help) showUsage; exit 1;; # Display usage.
+ -h | --help) showUsage; exit 1;; # Display usage.
--version) showVersion; exit 1;; # Show version
- --v | --verbose) OPTION_VERBOSE="true"; vbm "DEBUG:Verbose mode enabled.";; # Enable verbose mode.
- --o | --output) if [ -d "$2" ]; then DIROUT="$2"; vbm "DEBUG:DIROUT:$DIROUT"; shift; fi ;; # Define output directory.
+ -v | --verbose) OPTION_VERBOSE="true"; vbm "DEBUG:Verbose mode enabled.";; # Enable verbose mode.
+ -o | --output) if [ -d "$2" ]; then DIROUT="$2"; vbm "DEBUG:DIROUT:$DIROUT"; shift; fi ;; # Define output directory.
+ -e | --encrypt) OPTION_ENCRYPT="true"; vbm "DEBUG:Encrypted output mode enabled.";;
+ -r | --recipient) # Add 'age' recipient via public key string
+ recPubKeys+=("$2"); vbm "pubkey added:""$2"; shift;;
*) echoerr "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options.
esac
shift
} # Get date&time without separators
main() {
processArguments "$@" # Process arguments.
+ if [[ "$OPTION_ENCRYPT" = "true" ]]; then # Check if encryption option active.
+ if checkapp age; then # Check that age is available.
+ 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
+ yell "ERROR:Exit code ""$?"". Invalid recipient pubkey string. Exiting."; exit 1;
+ else
+ # Form age recipient string
+ recipients="$recipients""-r $pubkey ";
+ vbm "Added pubkey:""$pubkey";
+ vbm "DEBUG:recipients:""$recipients";
+ fi
+ done
+ vbm "DEBUG:Finished processing recPubKeys array";
+ else
+ yell "ERROR:Encryption enabled but \"age\" not found. Exiting."; exit 1;
+ fi
+ fi
+
if checkapp gpspipe && checkdir "$DIROUT"; then
-
+
# # Set script lifespan to end at start of next day
# if ! scriptTTL="$(timeUntilNextDay)"; then
# if [[ "$scriptTTL" -eq 0 ]]; then