#! /bin/sh # collect spam statistics in .rrd files # [-x] debugging # [-q] quiet # [-S] read `cdcc stats` from stdin # [-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 time] seconds since the Epoch # [-T @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) 2006 by Rhyolite Software, LLC # # This agreement is not applicable to any entity which sells anti-spam # solutions to others or provides an anti-spam solution as part of a # security solution sold to other entities, or to a private network # which employs the DCC or uses data provided by operation of the DCC # but does not provide corresponding data to other users. # # 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. # # Parties not eligible to receive a license under this agreement can # obtain a commercial license to use DCC and permission to use # U.S. Patent 6,330,590 by contacting Commtouch at http://www.commtouch.com/ # or by email to nospam@commtouch.com. # # A commercial license would be for Distributed Checksum and Reputation # Clearinghouse software. That software includes additional features. This # free license for Distributed ChecksumClearinghouse Software does not in any # way grant permision to use Distributed Checksum and Reputation Clearinghouse # software # # THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC # 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.3.50-1.21 $Revision$ # @configure_input@ DCC_HOMEDIR=@prefix@ DEBUG= # check the args once to get the home directory while getopts "xqSh:D:s:t: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= GET_ARGS= DATADIR=$DCC_HOMEDIR/stats STATSFILE=/dev/null TS=N RRDTOOL=@RRDTOOL@ RRDOPTS= CLNT_ID="1" PASSWD="" USAGE="`basename $0`: [-xqS] [-h homedir] [-D data-dir] [-s stats-file] [-t time] [-T rrdtool] [-O rrdopts] [-i client-ID] [-p password] host1 host2 ..." OPTIND=1 while getopts "xqSh:D:s:t:T:O:i:p:" c; do case $c in x) ;; q) QUIET="-q";; S) GET_ARGS="$GET_ARGS -S";; h) ;; D) DATADIR="$OPTARG";; s) STATSFILE="$OPTARG";; t) TS="$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`" eval XSTATSFILE="$STATSFILE" if test "$PASSWD" != ""; then LINE=`$DCC_LIBEXEC/stats-get $GET_ARGS $DEBUG $QUIET \ -s$XSTATSFILE -i$CLNT_ID -p "$PASSWD" $HOST` else LINE=`$DCC_LIBEXEC/stats-get $GET_ARGS $DEBUG $QUIET \ -s$XSTATSFILE -i$CLNT_ID $HOST` fi if test -n "$LINE"; then 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 $RRDTOOL update "$FILE" "$TS:$LINE" fi done