#!/bin/sh

MONITOR_DIR="/var/lib/alterator/rss"

MONITOR_NORMAL_DIR="$MONITOR_DIR/normal"
MONITOR_CRITICAL_DIR="$MONITOR_DIR/critical"

MONITOR_NORMAL="$MONITOR_NORMAL_DIR/sysinfo.xml"
MONITOR_CRITICAL="$MONITOR_CRITICAL_DIR/sysinfo.xml"

exit_handler()
{
    local rc=$?
    trap - EXIT
    rm -f "$TEMPFILE" 2>/dev/null
    exit $rc
}

trap exit_handler HUP INT QUIT TERM EXIT

rss_tag()
{
sed "1 s,.*,<$1>&,
     $ s,.*,&</${1%% *}>,"
}

rss_quote()
{
    sed -r \
	-e 's,&,\&amp;,g' \
	-e 's,",\&quot;,g' \
	-e 's,>,\&gt;,g;' \
	-e 's,<,\&lt;,g;' $*
}

table_head()
{
    (echo "mount point"|rss_tag 'th'
     echo "usage"|rss_tag 'th')|
        rss_tag 'tr'|
	rss_tag 'thead'
}

table_body()
{
    while read fs size used avail usage point;do
	     [ "$usage" = "100%" ] && echo "100" >"$1"
	     (echo "$point"|rss_tag 'td'
	     echo "$usage"|rss_tag 'td')|rss_tag 'tr'
    done|rss_tag "tbody"
}

read_stats()
{
    df -lhP|
	sed '1d'|
	(table_head;table_body "$1")|
	rss_tag 'table border="1"'
}

TEMPFILE="$(mktemp -t alt-sysinfo.XXXXXX)"

if [ -d $MONITOR_NORMAL_DIR ]; then
    rm -f $MONITOR_NORMAL
else
    mkdir $MONITOR_NORMAL_DIR
fi

if [ -d $MONITOR_CRITICAL_DIR ]; then
    rm -f $MONITOR_CRITICAL
else
    mkdir $MONITOR_CRITICAL_DIR
fi

read_stats "$TEMPFILE"|
    rss_quote|
    rss_tag 'description' >>"$MONITOR_NORMAL"

if grep -qs '^100$' "$TEMPFILE";then
    echo "$(LANG=C date +'%F %R'):disk full"| rss_tag 'title'>>"$MONITOR_NORMAL"
    mv "$MONITOR_NORMAL" "$MONITOR_CRITICAL"
else
    echo "$(LANG=C date +'%F %R'):disk usage"| rss_tag 'title'>>"$MONITOR_NORMAL"
fi
