#! /bin/sh
# Copyright (c) 2002 Dirk Rieger
#
# Author: Dirk Rieger <rieger@hhgoth.de>, 2002
# Modified by Ari Pollak <ari@debian.org> for Debian, 2003
#
# /etc/init.d/dchub
#
# System startup script for the DirectConnectHub
#

DCHUB_DIR=/usr/lib/dchub
DCHUB_BINDIR=/usr/bin
DCHUB_BIN=$DCHUB_BINDIR/dchub
DCHUB_CONFDIR=/etc
DCHUB_CONFDB=$DCHUB_CONFDIR/dchub.conf
DCHUB_USERFILE=$DCHUB_CONFDIR/dchub.users
DCHUB_PASSFILE=$DCHUB_CONFDIR/dchub.pass
DCHUB_CRCFILE=$DCHUB_CONFDIR/dchub.crc
DCHUB_SCRIPTDIR=$DCHUB_DIR/scripts
DCHUB_EXTPROGDIR=$DCHUB_DIR/extprog
DCHUB_PLUGINDIR=$DCHUB_DIR/plugins
DCHUB_MAINSCRIPT=main.pl
DCHUB_LOGFILE=/var/log/dchub.log
DCHUB_USER=dchub
DCHUB_PID=/var/run/dchub.pid


test -x $DCHUB_BIN || exit 1
test -d $DCHUB_SCRIPTDIR || exit 1
DCHUB_SCRIPTOPT="--pscriptdir $DCHUB_SCRIPTDIR --pscriptinit $DCHUB_MAINSCRIPT"
test -f $DCHUB_SCRIPTDIR/$DCHUB_MAINSCRIPT || DCHUB_SCRIPTOPT=""
test -d $DCHUB_EXTPROGDIR || exit 1
test -d $DCHUB_PLUGINDIR || exit 1
test -w $DCHUB_LOGFILE || exit 1

OPTIONS="--conf=$DCHUB_CONFDB --user=$DCHUB_USERFILE --hubpasswd=$DCHUB_PASSFILE --crc=$DCHUB_CRCFILE $DCHUB_SCRIPTOPT --exprogdir=$DCHUB_EXTPROGDIR --linkdir=$DCHUB_PLUGINDIR --logfile=$DCHUB_LOGFILE --pidfile=$DCHUB_PID --daemonize"

do_init_db() {
	if [ ! -f $DCHUB_CONFDB ] || [ ! -f $DCHUB_USERFILE ] || \
		[ ! -f $DCHUB_PASSFILE ] || [ ! -f $DCHUB_CRCFILE ] ; then
		echo -n $"Initilializing the dchub database: "
			# back up all of the configuration files, then make new ones
			[ -f $DCHUB_CONFDB ] && mv -f $DCHUB_CONFDB $DCHUB_CONFDB.debbak
			[ -f $DCHUB_USERFILE ] && mv -f $DCHUB_USERFILE \
											$DCHUB_USERFILE.debbak
			[ -f $DCHUB_PASSFILE ] && mv -f $DCHUB_PASSFILE \
											$DCHUB_PASSFILE.debbak
			[ -f $DCHUB_CRCFILE ] && mv -f $DCHUB_CRCFILE $DCHUB_CRCFILE.debbak
			[ -f $DCHUB_CRCFILE ] && mv -f $DCHUB_CRCFILE.var \
											$DCHUB_CRCFILE.var.debbak
			
			if $DCHUB_BIN --init $OPTIONS > /dev/null 2>&1; then
				chown dchub.dchub $DCHUB_CONFDB $DCHUB_USERFILE \
					$DCHUB_PASSFILE $DCHUB_CRCFILE $DCHUB_CRCFILE.var
				echo "Success!"
				echo $"You can now log into the hub with the account MASTER"
				echo $"and password MASTER to configure the hub."
			else
				echo "Init script could not be created."
				echo
				exit 1
			fi
	fi
}

case "$1" in
    start)
		do_init_db
		echo -n "Starting DirectConnect HUB: "
		start-stop-daemon --start --exec $DCHUB_BIN -- --UID=$DCHUB_UID $OPTIONS
		sleep 1
		if [ -f "$DCHUB_PID" ] && ps h `cat "$DCHUB_PID"` >/dev/null; then
			echo "dchub."
		else
			echo "dchub failed to start."
		fi
	;;
    stop)
		echo -n "Shutting down DirectConnect HUB"

		start-stop-daemon --stop --quiet --pidfile $DCHUB_PID
		echo "."
	;;
    restart | force-reload)
		$0 stop
		sleep 2
		$0 start
		;;
	reread)
		# Just send -HUP to dchub, to reopen the logfile
		start-stop-daemon --stop --signal HUP --quiet --pidfile $DCHUB_PID
		;;
	*)
		echo "Usage: $0 {start|stop|restart|reread|force-reload}"
		exit 1
		;;
esac

exit 0
