#! /bin/sh

# collect spam statistics in .rrd files
#   [-x]	    debugging
#   [-q]	    quiet
#   [-h dcc_homedir]
#   [-D data-dir]   where to put the graphs and rrdtool files
#   [-s stats-file] save raw `cdcc stats` output in stats-file
#   [-T /usr/bin/rrdtool]
#		    see http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
#			or the FreeBSD package.
#   [-O rrdopts]    "--heartbeat X" or "--step Y"
#   [-i client-ID]  that DCC servers will accept
#   [-p password]   that DCC servers will accept
#   host1, host2, ... servers to ask for data


# Copyright (c) 2003 by Rhyolite Software
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE DISCLAIMS ALL
# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE
# BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
# SOFTWARE.
#	Rhyolite Software DCC 1.2.16-1.10 $Revision$
#	Generated automatically from dcc-stats-collect.in by configure.

exec 1>&2 </dev/null

DCC_HOMEDIR=/var/lib/dcc
DEBUG=
# check the args once to get the home directory
while getopts "xqh:D:s:T:O:i:p:" c; do
    case $c in
	x) set -x; DEBUG=-x;;
	h) DCC_HOMEDIR="$OPTARG";;
	*) ;;
    esac
done
. $DCC_HOMEDIR/dcc_conf

QUIET=
DATADIR=$DCC_HOMEDIR/stats
STATS=/dev/null
RRDTOOL=/usr/bin/rrdtool
RRDOPTS=
CLNT_ID="1"
PASSWD=""
USAGE="`basename $0`: [-xq] [-h homedir] [-D data-dir] [-s stats-file]
    [-T rrdtool] [-O rrdopts] [-i client-ID] [-p password] host1 host2 ..."
OPTIND=1
while getopts "xqh:D:s:T:O:i:p:" c; do
    case $c in
	x) ;;
	q) QUIET="-q";;
	h) ;;
	D) DATADIR="$OPTARG";;
	s) STATS="$OPTARG";;
	T) RRDTOOL="$OPTARG";;
	O) RRDOPTS="$RRDOPTS $OPTARG";;
	i) CLNT_ID="$OPTARG";;
	p) PASSWD="$OPTARG;";;
	*) echo "$USAGE" 1>&2; exit 1;;
    esac
done
shift `expr $OPTIND - 1 || true`
if test "$#" -eq 0; then
    echo "$USAGE" 1>&2
    exit 1
fi

cd $DATADIR

for HOST in $*; do
    HOST="`basename $HOST .rrd`"
    FILE=$HOST.rrd

    if test ! -s $FILE; then
	$DCC_LIBEXEC/dcc-stats-init $QUIET $DEBUG -h$DCC_HOMEDIR -D$DATADIR \
	    -T "$RRDTOOL" -O "$RRDOPTS" $FILE
    fi

    eval XSTATS="$STATS"
    if test "$PASSWD" != ""; then
	LINE=`$DCC_LIBEXEC/stats-get $DEBUG $QUIET -s$XSTATS	\
	    -i$CLNT_ID -p "$PASSWD" $HOST`
    else
	LINE=`$DCC_LIBEXEC/stats-get $DEBUG $QUIET -s$XSTATS	\
	    -i$CLNT_ID $HOST`
    fi
    if test ! -z "$LINE"; then
	$RRDTOOL update $FILE "N:$LINE"
    fi
done
