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.4"; # Define version of script.
+SCRIPT_VERSION="0.3.6"; # 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)
appendArgTar "$CONTENT_VERSION" "$FILEOUT_VERSION" "$PATHOUT_TAR" "$DIR_TMP";
} # bkgpslog: write version data to PATHOUT_TAR via appendArgTar()
-magicWriteBuffer() {
+magicGatherWriteBuffer() {
# Desc: bkgpslog-specific meta function for writing data to DIR_TMP then appending each file to PATHOUT_TAR
# Inputs: PATHOUT_TAR FILEOUT_{NMEA,GPX,KML} CMD_CONV_{NMEA,GPX,KML} CMD_{COMPRESS,ENCRYPT} DIR_TMP,
# Inputs: BUFFER_TTL bufferTTL_STR SCRIPT_HOSTNAME CMD_COMPRESS_SUFFIX CMD_ENCRYPT_SUFFIX
# Depends: yell, try, vbm, appendArgTar, tar
local FN="${FUNCNAME[0]}";
wait; # Wait to avoid collision with older magicWriteBuffer() instances (see https://www.tldp.org/LDP/abs/html/x9644.html )
-
- timeBufferStart="$(dateTimeShort "$(date --date="$BUFFER_TTL seconds ago")")"; # Note start time#TODO subtract BUFFER_TTL from current time
+ # Create buffer file with unique name
+ PATHOUT_BUFFER="$DIR_TMP/buffer$SECONDS";
+ # Fill buffer
+ timeout "$BUFFER_TTL"s gpspipe -r -o "$PATHOUT_BUFFER" ;
+ timeBufferStart="$(dateTimeShort "$(date --date="$BUFFER_TTL seconds ago")")"; # Note start time
vbm "DEBUG:STATUS:$FN:Started magicWriteBuffer().";
# Determine file paths (time is start of buffer period)
FILEOUT_BASENAME="$timeBufferStart""--""$bufferTTL_STR""..""$SCRIPT_HOSTNAME""_location" && vbm "STATUS:Set FILEOUT_BASENAME to:$FILEOUT_BASENAME";
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"
+ vbm "DEBUG:Testing pubkey string:$pubkey";
if echo "butts" | age -a -r "$pubkey" 1>/dev/null; then
#### Form age recipient string
- recipients="$recipients""-r $pubkey ";
+ recipients="$recipients""-r \"$pubkey\" ";
vbm "STATUS:Added pubkey for forming age recipient string:""$pubkey";
vbm "DEBUG:recipients:""$recipients";
#### Add validated pubkey to recPubKeysValid array
CMD_CONV_NMEA="tee /dev/null " && vbm "STATUS:Set CMD_CONV_NMEA to:$CMD_CONV_NMEA"; # tee as passthrough
CMD_CONV_GPX="gpsbabel -i nmea -f - -o gpx -F - " && vbm "STATUS:Set CMD_CONV_GPX to:$CMD_CONV_GPX"; # convert NMEA to GPX
CMD_CONV_KML="gpsbabel -i nmea -f - -o kml -F - " && vbm "STATUS:Set CMD_CONV_KML to:$CMD_CONV_KML"; # convert NMEA to KML
-
+
# MAIN LOOP:Record gps data until script lifespan ends
- declare debugCounter; debugCounter="0"; # set debug counter
while [[ "$SECONDS" -lt "$scriptTTL" ]]; do
- # Create buffer file with unique name
- PATHOUT_BUFFER="$DIR_TMP/buffer$debugCounter++";
- # Fill Bash variable buffer
- timeout "$BUFFER_TTL"s gpspipe -r -o "$PATHOUT_BUFFER" ;
- # Process bufferBash, save secured chunk set to DIR_TMP
- magicWriteBuffer &
- ((debugCounter++));
- done
+ magicGatherWriteBuffer &
+ sleep "$BUFFER_TTL";
+ done
# Cleanup
## Remove DIR_TMP