#!MARKER_SHELL_CMD PATH=/bin:/usr/bin PROGNAME=`basename $0` ############################################################################### # # # NEWS TRANSFER PROGRAM - USES SUCK # # # ############################################################################### ############################################################################### # # CONFIGURABLE STUFF STARTS HERE # ############################################################################### ATTEMPT_LIMIT=20 LOCK_DIR=MARKER_LOCK_DIR ############################################################################### # # CONFIGURABLE STUFF ENDS HERE # ############################################################################### FACILITY=news VERSION="MARKER_PATCHLEVEL" # $Header: /home/ahuxley/dev/arc/ppplc/lib/news/RCS/news-suck.shpp,v 1.8 1999/04/28 11:08:50 alexis Exp $ ############################################################################### # # 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 != unset ] && usage MODE=inn ;; -c) [ $MODE != unset ] && usage MODE=cnews ;; -*) usage ;; *) break ;; esac shift done [ $MODE = unset ] && usage # Older versions of Suck use get-news.cnews and get-news.inn if [ -x MARKER_GETNEWS_CMD.$MODE ]; then GETNEWS_CMD=MARKER_GETNEWS_CMD.$MODE elif [ -x MARKER_GETNEWS_CMD ]; then GETNEWS_CMD=MARKER_GETNEWS_CMD else error "can't work out how to run MARKER_GETNEWS_CMD" fi am_i_root || error "this program requires root priviledges" # Are locks required? Yes, would be sensible. lock DUMMY gen_lock_file_name || error "lock failed" ########################################################################### # # FLUSH UNPROCESSED INCOMING NEWS BATCHES # ########################################################################### if [ $MODE = cnews ]; then info "flushing old inbound CNews batches" su - news -c "MARKER_NEWSBINDIR/input/newsrunning on" < /dev/null su - news -c MARKER_NEWSBINDIR/input/newsrun < /dev/null else warning "don't know how to flush old inbound INN batches" fi ########################################################################### # # DO THE NEWS TRANSFER # ########################################################################### if [ $MODE = cnews ]; then info "stopping CNews processing before downloading news" su - news -c "MARKER_NEWSBINDIR/input/newsrunning off" < /dev/null fi info "getting new news" for SERVER in ${*:-default}; do ATTEMPT=0 while :; do ATTEMPT=`expr $ATTEMPT + 1` info "attempt number $ATTEMPT of $ATTEMPT_LIMIT to server $SERVER" if [ $SERVER = default ] && $GETNEWS_CMD < /dev/null; then break elif [ $SERVER != default ] && $GETNEWS_CMD $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 if [ $MODE = cnews ]; then info "restarting CNews processing after downloading news" su - news -c "MARKER_NEWSBINDIR/input/newsrunning on" < /dev/null fi ########################################################################### # # FLUSH NEWLY ARRIVED UNPROCESSED INCOMING NEWS BATCHES # ########################################################################### if [ $MODE = cnews ]; then info "flushing new inbound CNews batches" su - news -c "MARKER_NEWSBINDIR/input/newsrunning on" < /dev/null su - news -c MARKER_NEWSBINDIR/input/newsrun < /dev/null else warning "don't know how to flush new inbound INN batches" fi unlock DUMMY gen_lock_file_name info "done" } gen_lock_file_name() { typeset LOCK_WHAT LOCK_WHAT=$1 echo $LOCK_DIR/$PROGNAME.pid } usage() { { echo "Usage: $PROGNAME [ -d | -v ] { -i | -c }" echo " $PROGNAME -V" } >&2 exit 1 } #shpp include utils.sh.shpp #shpp include gep.sh.shpp