#!/usr/bin/ksh PROGNAME=`basename $0` ############################################################################## # # CONFIGURABLE STUFF STARTS HERE # ############################################################################## #TMP_DIR= AUB_CMD=/home/ahuxley/bin/OS/OSI/aub #AUBDIR= #BLACK_LIST= LYNX_CMD=`which lynx` AUBDOM_CONFIG_STEM=$HOME/var/tmp/aubdom/ ############################################################################## # # CONFIGURABLE STUFF ENDS HERE # ############################################################################## TMP_DIR=${TMP_DIR:-/var/tmp} AUB_CMD=${AUB_CMD:-aub} AUBDIR=${AUBDIR:-$HOME/var/spool/aub} BLACK_LIST=${BLACK_LIST:-$HOME/etc/$PROGNAME.bl} LYNX_CMD=${LYNX_CMD:-lynx} AUBDOM_LOG=${AUBDOM_LOG:-$HOME/var/log/$PROGNAME.log} AUBDOM_CONFIG_STEM=${AUBDOM_CONFIG_STEM:-$HOME/.$PROGNAME-} main() { MODE=normal while [ "X$1" != X ]; do case "$1" in -c) MODE=clean ;; -*) usage ;; *) break ;; esac shift done [ "X$1" != X ] && usage [ ! -f $HOME/.${PROGNAME}rc ] && { echo "$PROGNAME: ERROR: please list your newsgroups in ~/.${PROGNAME}rc" >&2 exit 1 } export NNTPSERVER AUBDIR [ -f $AUBDOM_LOG -a -w $AUBDOM_LOG ] || { echo "$PROGNAME: WARNING: AUBDOM_LOG is set, or maybe defaulted to, $AUBDOM_LOG, which is not writable, no logging will be done" >&2 AUBDOM_LOG=/dev/null } download_nntp_server_list | if [ $MODE = normal ]; then run_aub_on_each_nntp_server else remove_non_existent_server_directories fi echo "all finished" >&2 } usage() { echo "Usage: $PROGNAME [ -c ]" >&2 exit 1 } download_nntp_server_list() { echo "downloading NNTP server list ... " >&2 $LYNX_CMD -dump http://www.newzbot.com/sorted-speed.txt | \ sed -n 's/^Server: \(.*\) (.*$/\1/p' echo "done" >&2 } run_aub_on_each_nntp_server() { while read NNTPSERVER; do run_aub_on_nntp_server $NNTPSERVER done } run_aub_on_nntp_server() { typeset NNTPSERVER=$1 typeset START_SECONDS FINISH_SECONDS RC [ -r $BLACK_LIST ] && fgrep -q $NNTPSERVER $BLACK_LIST && { echo "$NNTPSERVER is in black list" >&2; continue; } echo "preparing config file for server $NNTPSERVER ... \\c" >&2 [ ! -d $AUBDOM_CONFIG_STEM$NNTPSERVER ] && mkdir $AUBDOM_CONFIG_STEM$NNTPSERVER { echo "DEBUG 1" echo "GROUP \\c" xargs echo < $HOME/.${PROGNAME}rc } > $AUBDOM_CONFIG_STEM$NNTPSERVER/.aubconf echo "done" >&2 echo "running aub from $NNTPSERVER ..." >&2 START_SECONDS=`date_to_secs \`date\`` START_FILECOUNT=`ls $AUBDIR | wc -l` HOME=$AUBDOM_CONFIG_STEM$NNTPSERVER $AUB_CMD RC=$? FINISH_SECONDS=`date_to_secs \`date\`` FINISH_FILECOUNT=`ls $AUBDIR | wc -l` logline $RC `expr $FINISH_SECONDS - $START_SECONDS` `expr $FINISH_FILECOUNT - $START_FILECOUNT` sleep 10 } date_to_secs() { typeset HOUR MINUTE SECOND DATE typeset OLD_IFS OLD_IFS="$IFS" DATE="$@" IFS="$IFS:" set DUMMY $DATE shift HOUR=$4 MINUTE=$5 SECOND=$6 expr 3600 \* $HOUR + 60 \* $MINUTE + $SECOND } logline() { echo "date=`date '+%y/%m/%d_%H:%M:%S'`, pid=$$, server=$NNTPSERVER, connecttime=$2, exitcode=$1, downloadcount=$3" | tee -a $AUBDOM_LOG >&2 } remove_non_existent_server_directories() { get_ood_server_directory_list | while read OOD; do echo "Removing aub config files for out of date server $OOD ..." >&2 rm -fr $AUBDOM_CONFIG_STEM$OOD done } get_ood_server_directory_list() { sort > $TMP_DIR/$PROGNAME.$$.serverlist ( cd && ls -a1 ) | sed -n "s/^\.${PROGNAME}-//p" | sort comm -13 $TMP_DIR/$PROGNAME.$$.serverlist - rm -f $TMP_DIR/$PROGNAME.$$.serverlist } umask 077 main "$@" exit $?