From 5733a5d0eb3c7f73ca52acdb466484c83c9b5b02 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 9 Jul 2021 09:43:52 +0200 Subject: [slxlog] Add module --- .../rootfs-stage32/data/opt/openslx/bin/slxlog | 104 --------------------- core/rootfs/rootfs-stage32/module.conf | 1 + 2 files changed, 1 insertion(+), 104 deletions(-) delete mode 100755 core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog (limited to 'core/rootfs') diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog b/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog deleted file mode 100755 index f58934bc..00000000 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/ash - -################## -# Remote logging # -################## -# -# Usage: slxlog [-e | --echo] "logtype" "Human readable string" ["file name which's contents should be sent too"] -# -e or --echo will echo message to stdout too -# - -export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin" - -. /opt/openslx/config -[ -z "$SLX_REMOTE_LOG" ] && exit 3 - -USER=$(whoami) -LOGCHECK="/tmp/remote_log_check-$USER" -NOW=$(date +%s) -DELFILE= -SYNC= - -while [ $# -gt 0 ]; do - case "$1" in - -e|--echo) - echo "$@" - ;; - -d|--delete) - DELFILE=yes - ;; - -s|--sync) - SYNC=yes - ;; - *) - break - ;; - esac - shift -done - -[ $# -eq 0 ] && exit 0 - -TYPE="$1" - -# Simple spamcheck. Not very tamper-proof, but if you'd want to spam the server -# you could do it anyways. This is to protect from accidental loops calling this. -if [ -r "$LOGCHECK" ]; then - # Allow max 150 messages in total - LINES=$( < "$LOGCHECK" wc -l) - [ "$LINES" -gt "150" ] && exit 1 - # Allow max 5 of same type messages in 30 seconds - LINES=$(grep -c "$TYPE" "$LOGCHECK") - if [ "$LINES" -ge "5" ]; then - LAST=$(grep "$TYPE" "$LOGCHECK" | tail -n 5 | head -n 1 | awk '{print $1}') - if [ -n "$LAST" ]; then - DIFF="$(( NOW - LAST ))" - [ "$DIFF" -lt "30" ] && exit 2 - fi - fi -fi -echo "$NOW $TYPE" >> "$LOGCHECK" -chmod 0600 "$LOGCHECK" 2>/dev/null - -if [ $# -lt 2 ]; then - MSG="Missing text for $*" -else - MSG="$2" -fi -MSG="[$USER] $MSG" - -if [ $# -gt 2 ]; then - EXTRA="$3" -fi - -if [ -n "$SLX_DEBUG" ]; then - CURLLOG="/tmp/slxlog.$USER" -else - CURLLOG="/dev/null" -fi - -UUID= -if [ -s /etc/system-uuid ]; then - UUID=$(cat /etc/system-uuid) -fi - -submitlog () { - if [ -n "$EXTRA" ] && [ -r "$EXTRA" ] && [ -s "$EXTRA" ] && [ "$(stat -c %s "$EXTRA")" -lt "10000" ]; then # valid file attachment - curl --data-urlencode "uuid=$UUID" --data-urlencode "type=$TYPE" --data-urlencode "description=$MSG" --data-urlencode "longdesc@$EXTRA" "$SLX_REMOTE_LOG" >> "$CURLLOG" 2>&1 - elif [ -z "$EXTRA" ]; then # no attachment - curl --data-urlencode "uuid=$UUID" --data-urlencode "type=$TYPE" --data-urlencode "description=$MSG" "$SLX_REMOTE_LOG" >> "$CURLLOG" 2>&1 - elif [ -s "$EXTRA" ]; then # attachment file to big (more than 10k) - curl --data-urlencode "uuid=$UUID" --data-urlencode "type=$TYPE" --data-urlencode "description=$MSG" --data-urlencode "longdesc=Attachment too large: $EXTRA" "$SLX_REMOTE_LOG" >> "$CURLLOG" 2>&1 - else # empty attachment file (or missing) - curl --data-urlencode "uuid=$UUID" --data-urlencode "type=$TYPE" --data-urlencode "description=$MSG" --data-urlencode "longdesc=Attachment missing/empty: $EXTRA" "$SLX_REMOTE_LOG" >> "$CURLLOG" 2>&1 - fi - [ -n "$DELFILE" ] && [ -n "$EXTRA" ] && rm -f -- "$EXTRA" -} - -if [ -z "$SYNC" ]; then - submitlog & - exit 0 -fi - -submitlog - diff --git a/core/rootfs/rootfs-stage32/module.conf b/core/rootfs/rootfs-stage32/module.conf index 5fb5a08a..f875a1eb 100644 --- a/core/rootfs/rootfs-stage32/module.conf +++ b/core/rootfs/rootfs-stage32/module.conf @@ -2,6 +2,7 @@ REQUIRED_MODULES=" kernel vmware-version-check + slxlog " REQUIRED_BINARIES=" bash -- cgit v1.2.3-55-g7522