diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/.gitignore | 1 | ||||
-rw-r--r-- | data/scripts/common.sh | 51 | ||||
-rwxr-xr-x | data/scripts/log-sync | 36 |
3 files changed, 88 insertions, 0 deletions
diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..6804e7f --- /dev/null +++ b/data/.gitignore @@ -0,0 +1 @@ +!scripts/ diff --git a/data/scripts/common.sh b/data/scripts/common.sh new file mode 100644 index 0000000..faa6b03 --- /dev/null +++ b/data/scripts/common.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +SERVER_URL="https://frypan.jadupc.com" #"builder.jadupc.com" +SERVER_URL="https://builder.jadupc.com/logs" #"builder.jadupc.com" + +if [[ $DEBUG ]]; then + SERVER_URL="http://log-server.local" +fi + +function getiface +{ + printf '%s\n' "/sys/class/$1"*/ | head -n1 +} + +function getaddr +{ + if [[ -d $1 ]]; then + tr ':' '-' < "$1/address" + else + echo '00-00-00-00-00-00' + fi +} + +function communicate +{ + local endpoint type wlmac enmac year week day month + endpoint="$1" + type="$2" + wlmac="$3" + enmac="$4" + year="$5" + shift 5 + case "${type#*/}" in + weekly) + week="$1" + shift 1 + set -- -d "week=$week" "$@" + ;; + daily) + month="$1" + day="$2" + shift 2 + set -- -d "month=$month" -d "day=$day" "$@" + ;; + esac + + curl \ + -d "type=${type%%/*}" -d "wlmac=$wlmac" \ + -d "enmac=$enmac" -d "year=$year" "$@" \ + "$SERVER_URL$endpoint" +} diff --git a/data/scripts/log-sync b/data/scripts/log-sync new file mode 100755 index 0000000..e810f6e --- /dev/null +++ b/data/scripts/log-sync @@ -0,0 +1,36 @@ +#!/bin/bash +source "${BASH_ARGV0%/*}"/common.sh +RAW_DATA_PATH="" + +enmac="$(getaddr "$(getiface "net/e")")" +wlmac="$(getaddr "$(getiface "net/w")")" + +get_logs() +{ + find "${XDG_CACHE_HOME:-$HOME/.cache}/Watcher/$1" -type f -exec basename -a '{}' + \ + | grep -oE "$2" +} + +# shellcheck disable=SC2031,SC2030 +if [[ $1 == "weekly" ]]; then + watcher -ws 2> /dev/null >&2 + + get_logs Analysis '[0-9]+-[0-9]+' \ + | while IFS=- read -r week year; do + ! communicate "/whack/a/mole" user/weekly "$wlmac" "$enmac" "$year" "$week" --silent --fail || continue + + echo "Uploading log: Week $week, $year" >&2 + communicate "/puss/in/boots" user/weekly "$wlmac" "$enmac" "$year" "$week" \ + -# --data-urlencode "data@$RAW_DATA_PATH/Analysis/W$week-$year.csv" + done +else + get_logs daily_data '[0-9]{4}(-[0-9]{2}){2}' \ + | while IFS=- read -r year month day; do + ! [[ $(date --rfc-3339=date) == "$year-$month-$day" ]] || continue + ! communicate "/whack/a/mole" user/daily "$wlmac" "$enmac" "$year" "$month" "$day" --silent --fail || continue + + echo "Uploading log: $year-$month-$day" >&2 + communicate "/puss/in/boots" user/daily "$wlmac" "$enmac" "$year" "$month" "$day" \ + -# --data-urlencode "data@$RAW_DATA_PATH/daily_data/$year-$month-$day.csv" + done +fi |