#! /bin/bash -e
### BEGIN INIT INFO
# Short-Description: Courier IMAP-SSL server
# Provides:          courier-imap-ssl
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       courier-imap is an IMAP Mail Delivery Agent with SSL.
### END INIT INFO
prefix="/usr"
exec_prefix=${prefix}
sysconfdir="/etc/courier"
bindir="${exec_prefix}/bin"
sbindir="${exec_prefix}/sbin"
libexecdir="${prefix}/lib/courier"
run_dir="/var/run/courier"
calendar_dir="/var/run/courier/calendar"
TCPD=${sbindir}/couriertcpd
DAEMONPROG=${sbindir}/imapd
DAEMON=imapd-ssl
PROGRAM="Courier IMAP-SSL server"

# first of all check if daemon is available
if ! [ -x "${bindir}/imapd" ]; then
	exit 0
fi

. /lib/lsb/init-functions

if [ ! -d ${run_dir} ]; then
	mkdir -p ${run_dir}
	chown daemon:daemon ${run_dir}
fi

if [ ! -d ${calendar_dir} ]; then
	mkdir -p ${calendar_dir}
	chown daemon:daemon ${calendar_dir}
fi


if ! [ -x $TCPD ]; then
  log_failure_msg "ERR: $TCPD missing"
  exit 1
fi

if ! [ -f ${sysconfdir}/imapd ]; then
  log_failure_msg "ERR: config file missing"
  exit 1
fi
if ! [ -f ${sysconfdir}/imapd-ssl ]; then
  log_failure_msg "ERR: config file missing"
  exit 1
fi

# read/set defaults
if [ -f /etc/default/courier ]; then
	. /etc/default/courier
fi
if [ -z "$MAILDIRPATH" ]; then
	MAILDIRPATH=Maildir
fi

. ${sysconfdir}/imapd
. ${sysconfdir}/imapd-ssl

if ! [ -x $COURIERTLS ]; then
  log_failure_msg "ERR: $COURIERTLS missing"
  exit 1
fi

START=no
case "$IMAPDSSLSTART" in
	[yY]*)START=yes;;
esac

case "$1" in
start)
  if [ "$START" = "yes" ]; then
    log_begin_msg "Starting $PROGRAM..."

	umask $IMAP_UMASK
    ulimit -v $IMAP_ULIMITD
    /usr/bin/env - /bin/sh -c " . ${sysconfdir}/imapd ; \
		. ${sysconfdir}/imapd-ssl ; \
		IMAP_TLS=1 ; export IMAP_TLS ; \
		`sed -n '/^#/d;/=/p' <${sysconfdir}/imapd | \
			sed 's/=.*//;s/^/export /;s/$/;/'`
		`sed -n '/^#/d;/=/p' <${sysconfdir}/imapd-ssl | \
			sed 's/=.*//;s/^/export /;s/$/;/'`
		PROXY_HOSTNAME=$PROXY_HOSTNAME ; \
		/usr/sbin/courierlogger -pid=$SSLPIDFILE -start $SSLLOGGEROPTS \
		$TCPD -address=$SSLADDRESS \
			-maxprocs=$MAXDAEMONS -maxperip=$MAXPERIP \
			$TCPDOPTS \
			$SSLPORT $COURIERTLS -server -tcpd \
			${libexecdir}/courier/imaplogin \
				${bindir}/imapd $MAILDIRPATH"
    log_end_msg 0
  fi
	;;
stop)
   log_begin_msg "Stopping $PROGRAM..."
   /usr/sbin/courierlogger -pid=$SSLPIDFILE -stop || log_end_msg 1
   log_end_msg 0
	;;
restart | force-reload)
  $0 stop
  $0 start
	;;
*)
  log_success_msg "Usage: $0 {start|stop|restart|reload|force-reload}"
  exit 1
  ;;
esac
exit 0
