Blob Blame History Raw
#!/bin/bash
#
# innd		InterNet News System
#
# chkconfig: - 95 05
# description: inn is the most popular server for Usenet news. It allows \
#              you to setup local news servers. It can be difficult to \
#              set up properly though, so be sure to read /usr/share/doc/inn* \
#              before trying.
# processname: innd
# pidfile: /var/run/news/innd.pid

### BEGIN INIT INFO
# Provides: innd
# Required-Start: $network
# Short-Description: InterNet News System
# Description: inn is the most popular server for Usenet news. It allows \
#              you to setup local news servers. It can be difficult to \
#              set up properly though, so be sure to read /usr/share/doc/inn* \
#              before trying.
### END INIT INFO

# Source function library.
. /etc/init.d/functions

# Get config.
. /etc/sysconfig/network

RETVAL=0

start() {
  # Check that networking is up.
  [ "${NETWORKING}" = "no" ] && exit 1
  [ -d /etc/news ] || exit 1
  [ -f /etc/news/inn.conf ] || exit 6
  . /usr/lib/news/lib/innshellvars || exit 1
  [ -d "$SPOOLBASE" ] || exit 1
  [ -f "$HISTORY" -a -f "$HISTORY.hash" ] || {
    echo $"Please run makehistory and/or makedbz before starting innd." >&2
    exit 1
  }
		
  echo -n $"Starting INND system: "
  # INN uses too many un-checked shell scripts
  unset LANG
  unset LC_COLLATE
  daemon --user news /etc/rc.news
  RETVAL=$?
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/innd
  echo
}

stop() {
  if [ -f /var/run/news/innd.pid ]; then
    echo -n $"Stopping INND service (gently): "
    if "${NEWSBIN}/ctlinnd" -s -t 60 throttle shutting down &&
	     sleep 30 &&
       "${NEWSBIN}/ctlinnd" -s -t 60 shutdown shutting down; then
      success $"innd shutdown"
    else
      failure $"innd shutdown"
      echo -n $"Stopping INND service (the hard way): "
      killproc innd
    fi
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/run/news/innd.pid
    echo
  fi
  if [ -f /var/run/news/innwatch.pid ]; then
    echo -n $"Stopping INNWatch service: "
    killproc innwatch -9
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/run/news/innwatch.pid
    echo
  fi
  if [ -f /var/run/news/innfeed.pid ]; then
    echo -n $"Stopping INNFeed service: "
    killproc innfeed -9
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/run/news/innfeed.pid
    echo
  fi
  if [ -f /var/run/news/actived.pid ]; then
    echo -n $"Stopping INN actived service: "
    killproc actived -9
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/run/news/actived.pid
    echo
  fi
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/innd /var/lock/news/*
}

reload() {
  echo -n $"Reloading INN Service: "
  killproc innd -HUP
  RETVAL=$?
}

restart() {
  stop
  start                                                                   
}

# See how we were called.
case "$1" in
  start)
    start
  ;;
  stop)
    stop
  ;;
  status)
    status innd
    RETVAL=$?
  ;;
  reload)
    #XXX fixme, not working
    #reload
    restart
  ;;
  restart)
    restart
  ;;
  condrestart)
    if [ -f /var/lock/subsys/innd ]; then
      restart
    fi
	;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart}"
    exit 3
	;;
esac

exit $RETVAL