#!/bin/bash
#
# Init file for rhnmd daemon
#
# chkconfig: 2345 99 1
# description: rhnmd server daemon
#
# processname: rhnmd
# pidfile: /var/run/rhnmd.pid

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

RETVAL=0
prog="rhnmd"

# Some functions to make the below more readable
SU="su -s /bin/bash - nocpulse -c"
KEYGEN="/usr/bin/ssh-keygen"
SSHD="/usr/sbin/rhnmd-wrap"
DSA_KEY=/opt/nocpulse/etc/ssh_host_dsa_key
PID_FILE=/var/run/rhnmd.pid

do_dsa_keygen() {
	if [ ! -s $DSA_KEY ]; then
		echo -n $"Generating SSH2 DSA host key: "
		if $SU "$KEYGEN -q -t dsa -f $DSA_KEY -C '' -N ''" >&/dev/null; then
			chmod 600 $DSA_KEY
			chmod 644 $DSA_KEY.pub
			success $"DSA key generation"
			echo
		else
			failure $"DSA key generation"
			echo
			exit 1
		fi
	fi
}

do_restart_sanity_check()
{
	$SU "$SSHD -t"
	RETVAL=$?
	if [ ! "$RETVAL" = 0 ]; then
		failure $"Configuration file or keys are invalid"
		echo
	fi
}

start()
{
	# Create keys if necessary
	do_dsa_keygen

	echo -n $"Starting $prog:"
	daemon --user nocpulse $SSHD -f /opt/nocpulse/etc/rhnmd_config && success || failure
	RETVAL=$?
	[ "$RETVAL" = 0 ] && touch /var/lock/subsys/rhnmd
	echo
}

stop()
{
	echo -n $"Stopping $prog:"
	killproc rhnmd -TERM
	RETVAL=$?
	[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/rhnmd
	echo
}

reload()
{
	echo -n $"Reloading $prog:"
	killproc rhnmd -HUP
	RETVAL=$?
	echo
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		start
		;;
	reload)
		reload
		;;
	condrestart)
		if [ -f /var/lock/subsys/rhnmd ] ; then
			do_restart_sanity_check
			if [ "$RETVAL" = 0 ] ; then
				stop
				# avoid race
				sleep 3
				start
			fi
		fi
		;;
	status)
		status rhnmd
		RETVAL=$?
		;;
	*)
		echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
		RETVAL=1
esac
exit $RETVAL
