diff options
author | Jonathan Bauer | 2017-10-09 20:26:12 +0200 |
---|---|---|
committer | Jonathan Bauer | 2017-10-09 20:26:12 +0200 |
commit | 0484a63272c4814a3651aace289aef2ecb9e0c78 (patch) | |
tree | bb80596bfc1afe43b6ac9696c8f476e9706102d0 /core/rootfs | |
parent | externalize slxlog to its own module (diff) | |
download | mltk-0484a63272c4814a3651aace289aef2ecb9e0c78.tar.gz mltk-0484a63272c4814a3651aace289aef2ecb9e0c78.tar.xz mltk-0484a63272c4814a3651aace289aef2ecb9e0c78.zip |
Revert "externalize slxlog to its own module"
This reverts commit ef7279aaa989c1e020bc4c66eb93406bdd9c55a5.
Diffstat (limited to 'core/rootfs')
-rw-r--r-- | core/rootfs/rootfs-stage31/data/inc/activate_sysconfig | 2 | ||||
-rw-r--r-- | core/rootfs/rootfs-stage31/module.conf | 1 | ||||
-rwxr-xr-x | core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog | 104 | ||||
-rw-r--r-- | core/rootfs/rootfs-stage32/module.conf | 1 |
4 files changed, 105 insertions, 3 deletions
diff --git a/core/rootfs/rootfs-stage31/data/inc/activate_sysconfig b/core/rootfs/rootfs-stage31/data/inc/activate_sysconfig index eafff082..0ce6bfae 100644 --- a/core/rootfs/rootfs-stage31/data/inc/activate_sysconfig +++ b/core/rootfs/rootfs-stage31/data/inc/activate_sysconfig @@ -21,7 +21,7 @@ fetch_text_config() { } ######################################################################### # -# This function downloads the config.tgz (but does not unpack it) +# This function downloads the config.tgz and unpacks it to $TARGET_PATH <-- no it doesn't! # fetch_config_tgz() { [ -e "${CONFIG}.tgz" ] && echo "config.tgz already downloaded." && return 0 diff --git a/core/rootfs/rootfs-stage31/module.conf b/core/rootfs/rootfs-stage31/module.conf index d3865d09..49d49a56 100644 --- a/core/rootfs/rootfs-stage31/module.conf +++ b/core/rootfs/rootfs-stage31/module.conf @@ -5,7 +5,6 @@ REQUIRED_BINARIES=" REQUIRED_MODULES=" busybox kernel - slxlog system-uuid " REQUIRED_KERNEL_MODULES=" diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog b/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog new file mode 100755 index 00000000..f1ee4816 --- /dev/null +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/bin/slxlog @@ -0,0 +1,104 @@ +#!/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=$(cat "$LOGCHECK" | wc -l) + [ "$LINES" -gt "150" ] && exit 1 + # Allow max 5 of same type messages in 30 seconds + LINES=$(grep "$TYPE" "$LOGCHECK" | wc -l) + 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" -a -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 20baddbd..84b98d1f 100644 --- a/core/rootfs/rootfs-stage32/module.conf +++ b/core/rootfs/rootfs-stage32/module.conf @@ -1,7 +1,6 @@ #!/bin/bash REQUIRED_MODULES=" kernel - slxlog " REQUIRED_BINARIES=" bash |