summaryrefslogtreecommitdiff
path: root/frontends/scripts/goprecords-upload-client.sh
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/scripts/goprecords-upload-client.sh')
-rwxr-xr-xfrontends/scripts/goprecords-upload-client.sh82
1 files changed, 82 insertions, 0 deletions
diff --git a/frontends/scripts/goprecords-upload-client.sh b/frontends/scripts/goprecords-upload-client.sh
new file mode 100755
index 0000000..7e04cd9
--- /dev/null
+++ b/frontends/scripts/goprecords-upload-client.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+GOPRECORDS_BASE_URL="${GOPRECORDS_BASE_URL:-https://goprecords.f3s.buetow.org}"
+GOPRECORDS_HOST="${GOPRECORDS_HOST:?set GOPRECORDS_HOST (e.g. f0, pi0, earth)}"
+PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:${PATH}"
+
+_default_token_file() {
+ if [ "$(id -u)" = "0" ]; then
+ printf '/etc/goprecords-upload.token'
+ else
+ config="${XDG_CONFIG_HOME:-${HOME}/.config}"
+ printf '%s/goprecords-upload-%s/token' "$config" "$GOPRECORDS_HOST"
+ fi
+}
+
+GOPRECORDS_TOKEN_FILE="${GOPRECORDS_TOKEN_FILE:-$(_default_token_file)}"
+
+if ! test -r "$GOPRECORDS_TOKEN_FILE"; then
+ echo "goprecords-upload-client: cannot read $GOPRECORDS_TOKEN_FILE" >&2
+ exit 1
+fi
+TOKEN=$(tr -d '\n\r' <"$GOPRECORDS_TOKEN_FILE")
+
+upload() {
+ kind=$1
+ file=$2
+ if ! test -f "$file"; then
+ echo "goprecords-upload-client: skip $kind (no $file)" >&2
+ return 0
+ fi
+ curl -fsS -X PUT --data-binary "@${file}" \
+ -H "Authorization: Bearer ${TOKEN}" \
+ "${GOPRECORDS_BASE_URL}/upload/${GOPRECORDS_HOST}/${kind}"
+}
+
+_find_records() {
+ for p in \
+ /var/spool/uptimed/records \
+ /var/db/uptimed/records \
+ /usr/local/var/uptimed/records; do
+ if test -f "$p"; then
+ printf '%s' "$p"
+ return 0
+ fi
+ done
+ echo "goprecords-upload-client: no uptimed records file found" >&2
+ exit 1
+}
+
+records_path=$(_find_records)
+
+tmp=$(mktemp)
+trap 'rm -f "$tmp"' 0 INT TERM HUP
+
+upload records "$records_path"
+
+if command -v uprecords >/dev/null 2>&1; then
+ uprecords -a -m 100 >"$tmp"
+ upload txt "$tmp"
+ uprecords -a | grep '^->' >"$tmp" || true
+ if test -s "$tmp"; then
+ upload cur.txt "$tmp"
+ fi
+fi
+
+if test -r /etc/os-release; then
+ upload os.txt /etc/os-release
+elif test -r /var/run/dmesg.boot; then
+ upload os.txt /var/run/dmesg.boot
+else
+ uname -a >"$tmp"
+ upload os.txt "$tmp"
+fi
+
+if test -r /proc/cpuinfo; then
+ upload cpuinfo.txt /proc/cpuinfo
+elif test -r /var/run/dmesg.boot; then
+ upload cpuinfo.txt /var/run/dmesg.boot
+else
+ sysctl hw.model hw.ncpu hw.machine >"$tmp" 2>/dev/null || uname -a >"$tmp"
+ upload cpuinfo.txt "$tmp"
+fi