From 37945e85eca6eedcf06140386e6122d9cb537d26 Mon Sep 17 00:00:00 2001 From: Chris Bosse <30784811+chrisBosse@users.noreply.github.com> Date: Mon, 12 Jun 2023 13:25:51 -0400 Subject: [PATCH] Script updating timestamp FLAMP Queue Touch For timezone offset making FLAMP hash match. --- fqt | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 fqt diff --git a/fqt b/fqt new file mode 100644 index 0000000..e340f6c --- /dev/null +++ b/fqt @@ -0,0 +1,149 @@ +#!/bin/bash + +# fqt - FLAMP Queue Touch' +# +# Simplify matching queue ID in FLAMP by changing file's date. + +Help() +{ + echo 'Usage: fqt \[OPTION\]... TIMESTAMP... FILE...' + echo 'Update a file'\''s timestamp helping recreate the hash, or queue id, in FLAMP.' + echo + echo 'options:' + echo ' -h display this help and exit' + echo ' --help display longer help and exit' + echo ' -v, --version output version information and exit' + echo + echo 'fqt is short for FLAMP Queue Touch' +} + +LongHelp() +{ + echo 'Example' + echo ' FLAMP text shown in FLDIGI:' + echo '/// BEGIN ///' + echo 'QST DE N0CALL' + echo + echo '{D5C6}FLAMP 2.2.07' + echo '{D5C6}20230610151423:flamp-file.k2s' + echo ' ^^^^^^^^^^^^^^--> --> --> --> Use these numbers -->\' + echo '{D5C6}N0CALL Demonstration' + echo '{D5C6}45 1 64 |' + echo '{D5C6:1}[b64:start]VGhpcyBpcyBhIHRlc3QuCg== v' + echo '[b64:end]' + echo '{D5C6:EOF} |' + echo '{D5C6:EOT} v' + echo + echo 'QST DE N0CALL K |' + echo '/// END /// v' + echo ' vvvvvvvvvvvvvv <-- <-- <-- <-- <-- <-- <-- Here <-- <--/' + echo ' command: fqt 20230607013934 flamp-file.k2s' + echo + echo 'Tips' + echo ' If hash doesn'\''t match, try to' + echo ' Remove and re-Add the file in FLAMP' + echo ' Toggle Comp check box (usually compression, unless file is small)' + echo ' Change base64 (usually base64)' + echo ' Change Blk size (usually 64)' + echo + echo 'Information on hash in documentation' + echo 'FLAMP Amateur Multicast Protocol (AMP-2) - Version 3.0' + echo 'available at: ' + echo + echo ' 20130316010524:ShortMessage2.txt0base12896' + echo + echo ' Example format:' + echo + echo ' |20130316010524:ShortMessage2.txt|0|base128|96|' + echo ' | DTS : FN |C| B |BS|' + echo + echo ' DTS = Date/Time Stamp' + echo ' FN = File Name' + echo ' C = Compression 1=ON,0=OFF' + echo ' B = Base Conversion (base64, base128, or base256)' + echo ' BS = Block Size, 1 or more characters' + echo ' | = Field separator.' + echo + echo 'Usage: fqt [OPTION]... TIMESTAMP... FILE...' + echo 'Update a file'\''s timestamp helping recreate the hash, or queue id, in FLAMP.' + echo + echo 'TIMESTAMP is the string appearing in FLAMP header' + echo 'and is formatted YYYYmmddHHMMSS ' + echo + echo 'A FILE argument that does not exist is created empty. (Not helpful.)' + echo + echo 'options:' + echo ' -h display short help and exit' + echo ' --help display this longer help and exit' + echo ' -v, --version output version information and exit' + echo + echo 'This should work across timezones and across Daylight Savings times.' + echo + echo 'fqt is short for FLAMP Queue Touch' +} + +Version() +{ + echo 'fqt - FLAMP Queue Touch' + echo 'Not Copyrighted' + echo 'No License' + echo 'This is free software: you are free to change and redistribute it.' + echo 'There is NO WARRANTY, to the extent permitted by law.' + echo + echo 'Use at your own risk!' + echo + echo 'Written by a ham.' +} + +# Note that we use "$@" to let each command-line parameter expand to a +# separate word. The quotes around "$@" are essential! +# We need TEMP as the 'eval set --' would nuke the return value of getopt. +if ! TEMP=$(getopt -o '::hv' --long 'help,version' -n 'fqt' -- "$@") ; +then + echo 'Unexpected input. Terminating...' >&2 + exit 1 +fi + +# Note the quotes around "$TEMP": they are essential! +eval set -- "$TEMP" +unset TEMP + + +# getopt -l "help" -a -o "" -- "$@" +while true; do + case "$1" in + '-h') + Help + exit;; + '--help') + LongHelp + exit;; + '-v'|'--version') + Version + exit;; + '--') # Useless for this file? + shift + break;; + *) # Invalid option + echo 'Error: Invalid option' + exit 1;; + esac +done + +GIVEN="$1" +#echo "$GIVEN" +# YYYYmmddHHMMSS +# 20230607013934 + +GIVEN_DATE=$(echo "$GIVEN" | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:\5:\6/') +#echo "$GIVEN_DATE" +# YYYY-mm-dd HH:MM:SS +# 2023-06-07 01:39:34 + +UTC_TOUCH="$(date -d "$GIVEN_DATE"Z +%Y%m%d%H%M.%S)" +#echo "$UTC_TOUCH" +# YYYYmmddHHMM.SS +# 202306062139.34 + +#echo touch -m "$UTC_TOUCH" "$2" +touch -m "$UTC_TOUCH" "$2"