#! /bin/sh
### BEGIN INIT INFO
# Provides:          webcit
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

# Author: Wilfried Goesgens <citadel@outgesourced.org>
RUNDIR=/var/run/webcit
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Citadel Groupware Webserver "
NAME=webcit
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS=""
PIDFILE=$RUNDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/webcit
SENDCOMMAND=/usr/sbin/sendcommand
DEFAULT=/etc/default/webcit
LOGDIR=/var/log/webcit/
DROP_TO_UID=`id -u nobody`

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

MODERN=

# Load the VERBOSE setting and other rcS variables
if test -f /lib/init/vars.sh ; then
    . /lib/init/vars.sh
    MODERN=1
fi

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
if test -f /lib/lsb/init-functions; then
    . /lib/lsb/init-functions
    MODERN=1
fi

if test -f $DEFAULT; then
  . $DEFAULT
fi

unset LANG
unset LANGUAGE
unset LC_ALL
unset LOCALE

if test -z "$TZ"; then
	if test -e /etc/timezone; then
		TZ=`cat /etc/timezone`
		export TZ
	fi
fi
#
# Function that starts the daemon/service
#
do_start()
{
    #1: -p flag
    #1: port
    #2: ssl
    #4: -f flag for apache

        # for ubuntu: check our volatile dirs.
        if test ! -d $RUNDIR; then
	    mkdir -p $RUNDIR
	fi

        if test ! -d $LOGDIR; then
	    mkdir -p $LOGDIR
	fi

	# are we disabled?
	if test "$1" -lt "0"; then
	    return 0
	fi

	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	if $DAEMON -u $DROP_TO_UID -D$PIDFILE.$1 \
	    -p$@ -t$LOGDIR/access.${1}.log $4; then
	    return 0
	else
	    return 2
	fi
}

#
# Function that stops the daemon/service
#
do_stop()
{
        for i in $PIDFILE.*; do if test -f $i; then
	    kill `cat $i`
	    rm -f $i
	fi; done
}

do_reload() {
        do_stop
	do_start $WEBCIT_HTTP_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT "" "$LISTEN"  "$WEBCIT_APACHEFLAG"
	do_start $WEBCIT_HTTPS_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT -s "$LISTEN"  "$WEBCIT_APACHEFLAG"
	return 0
}

case "$1" in
  start)
	if test -n "$MODERN"; then
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	else
	    echo "Starting $DESC" "$NAME"
	fi

	if test -n "$WEBCIT_LISTEN_IP"; then
	    LISTEN="-i$WEBCIT_LISTEN_IP"
	fi

	do_start $WEBCIT_HTTP_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT "" "$LISTEN"  "$WEBCIT_APACHEFLAG"
	do_start $WEBCIT_HTTPS_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT -s "$LISTEN"  "$WEBCIT_APACHEFLAG"

	if test -n "$MODERN"; then
	    case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	    esac
	fi
	;;
  stop)
	if test -n "$MODERN"; then
	    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	else
	    echo "Stopping $DESC" "$NAME"
	fi
	do_stop
	if test -n "$MODERN"; then
	    case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	    esac
	fi
	;;
  restart|force-reload)
	if test -n "$MODERN"; then
	log_daemon_msg "Restarting $DESC" "$NAME"
	else
	    echo "Restarting $DESC" "$NAME"
	fi

	do_stop

	if test -n "$MODERN"; then
	    case "$?" in
		0|1)
		    do_start $WEBCIT_HTTP_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT "" "$WEBCIT_APACHEFLAG"
		    do_start $WEBCIT_HTTPS_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT -s  "$WEBCIT_APACHEFLAG"
		    case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		    esac
		    ;;
		*)
	  	# Failed to stop
		    log_end_msg 1
		    ;;
	    esac
	else
	    do_start $WEBCIT_HTTP_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT "" "$WEBCIT_APACHEFLAG"
	    do_start $WEBCIT_HTTPS_PORT $WEBCIT_CITADEL_IP $WEBCIT_CITADEL_PORT -s  "$WEBCIT_APACHEFLAG"
	fi
	;;

  status)
	status_of_proc "$DAEMON" $NAME
	;;

  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac

:
