head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 99.01.07.13.21.39; author alexis; state Exp; branches; next ; desc @NEWS RETRIEVAL WITH SUCK FOR MULTIPLE NEWS SERVERS @ 1.1 log @Initial revision @ text @#!MARKER_SHELL_CMD PATH=/bin:/usr/bin PROGNAME=`basename $0` ############################################################################### # # # NEWS TRANSFER PROGRAM - USES SUCK # # # ############################################################################### ############################################################################### # # Things you should know about this script: # # It is stored under RCS! Keep it that way! If you want a history of # changes made to this script then refer to rlog(1) - don't look here! # ############################################################################### ############################################################################### # # CONFIGURABLE STUFF STARTS HERE # ############################################################################### ATTEMPT_LIMIT=20 ############################################################################### # # CONFIGURABLE STUFF ENDS HERE # ############################################################################### FACILITY=news VERSION="MARKER_PATCHLEVEL" # $Header: news-suck.shpp,v 1.4 1998/10/07 16:49:21 alexis Exp alexis $ ############################################################################### # # MAIN FUNCTION (called from very bottom of script) # ############################################################################### main() { ########################################################################### # # PROCESS OPTIONS # ########################################################################### MODE=unset while [ "X$1" != X ]; do case "$1" in -V) echo "$PROGNAME version $VERSION" exit 0 ;; -d) [ "X$2" = X ] && usage VERBOSE_LEVEL=$2 shift ;; -v) VERBOSE_LEVEL=3 ;; -i) MODE=inn ;; -c) MODE=cnews ;; -*) usage ;; *) break ;; esac shift done # No other commandline arguments should be specified and mode necessary! [ $MODE = unset ] && usage [ ! -x MARKER_GETNEWS_CMD.$MODE ] && error -f "can't execute MARKER_GETNEWS_CMD.$MODE" # Are locks required? Yes, would be sensible. lock ########################################################################### # # FLUSH UNPROCESSED INCOMING NEWS BATCHES # ########################################################################### if [ $MODE = cnews ]; then info "flushing old inbound batches" su - news -c "MARKER_NEWSBINDIR/input/newsrunning on" < /dev/null su - news -c MARKER_NEWSBINDIR/input/newsrun < /dev/null # Stop Cnews processing while we get files su - news -c "MARKER_NEWSBINDIR/input/newsrunning off" < /dev/null else error -f "inn not supported yet!" fi ########################################################################### # # DO THE NEWS TRANSFER # ########################################################################### info "getting new news" if [ "X$1" = X ]; then ATTEMPT=0 while :; do ATTEMPT=`expr $ATTEMPT + 1` info "attempt #$ATTEMPT/$ATTEMPT_LIMIT" if MARKER_GETNEWS_CMD.$MODE < /dev/null; then break elif [ $ATTEMPT -lt $ATTEMPT_LIMIT ]; then info "news retrieval failed, retrying" sleep 3 else warning "news retrieval failed, giving up" break fi done else for SERVER in $*; do ATTEMPT=0 while :; do ATTEMPT=`expr $ATTEMPT + 1` info "attempt #$ATTEMPT/$ATTEMPT_LIMIT to server $SERVER" if MARKER_GETNEWS_CMD.$MODE $SERVER < /dev/null; then break elif [ $ATTEMPT -lt $ATTEMPT_LIMIT ]; then info "news retrieval failed, retrying" sleep 3 else warning "news retrieval failed, giving up" break fi done done fi ########################################################################### # # FLUSH NEWLY ARRIVED UNPROCESSED INCOMING NEWS BATCHES # ########################################################################### if [ $MODE = cnews ]; then info "flushing new inbound batches" su - news -c "MARKER_NEWSBINDIR/input/newsrunning on" < /dev/null su - news -c MARKER_NEWSBINDIR/input/newsrun < /dev/null else error -f "inn not supported yet!" fi unlock info "done" } gen_lock_file_name() { echo MARKER_LOCK_DIR/$PROGNAME.pid } usage() { { echo "Usage: $PROGNAME [ -d | -v ] { -i | -c }" echo " $PROGNAME -V" } >&2 exit 1 } #shpp include utils.sh.shpp @