#! /bin/sh
#
# innd		InterNet News System
#
# chkconfig:	345 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/doc/inn* \
#		before trying.

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

# Source networking configuration.
. /etc/sysconfig/network

# Daemon specific
. /usr/share/news/innshellvars

# Check that networking is up.
if is_no "${NETWORKING}"; then
	msg_network_down "INN"
	exit 1
fi
			

# See how we were called.
case "$1" in
  start)
	if [ ! -f /var/lock/subsys/inn ]; then
		msg_starting "INN"
		daemon su news -c inndstart
		if is_yes $DOINNWATCH ; then
			msg_starting "INN Watch"
			busy
			su news -c "umask 002 ; /usr/bin/setsid /usr/bin/innwatch &" </dev/null >&0 2>&0
			RETVAL=$?
			[ $RETVAL -eq 0 ] && touch /var/lock/subsys/inn
			if ps -C innwatch >/dev/null 2>&1; then
				deltext;ok
			else
				deltext;fail
			fi
		else
			touch /var/lock/subsys/inn
		fi
	else
		msg_already_running "INN"
		exit 1
	fi
	;;
  stop)
	if [ -f /var/lock/subsys/inn ]; then
		msg_stopping "INN"
		busy
		if ctlinnd shutdown "Stopping INN service";then
			deltext;ok
		else
			deltext;fail
		fi

		if [ -f /var/run/news/innwatch.pid ]; then
			msg_stopping "INN Watch"
			busy
	        	if killall -9 innwatch; then
				deltext;ok
			else
				deltext;died
			fi
			rm -f /var/run/news/innwatch.pid \
			/var/run/news/LOCK.innwatch >/dev/null 2>&1
		fi

		if [ -f /var/run/news/infeed.pid ]; then
			msg_stopping "INN Feed"
			killproc innfeed -9
			rm -f /var/run/news/innfeed.pid >/dev/null 2>&1
		fi

		if [ -f /var/run/news/actived.pid ]; then
			msg_stopping "INN Actived"
			killproc actived -9
			rm -f /var/run/news/actived.pid >/dev/null 2>&1
		fi

	else
		msg_not_running INN
		exit 1
	fi
	rm -f /var/lock/subsys/inn >/dev/null 2>&1
	;;
  status)
	status innd
	;;
  reload)
	if [ -f /var/lock/subsys/inn ]; then
		msg_reloading "INN"
		busy
		if ctlinnd reload all "Reloading" >/dev/null 2>&1; then
			deltext;ok
		else
			deltext;fail
		fi
	else
		msg_not_running INN
		exit 1
	fi
	;;
  restart)
	$0 stop
	sleep 2
	$0 start
	;;
  *)
	msg_usage "$0 {start|stop|status|restart|reload}"
	exit 1
	;;
esac

exit $RETVAL
