#!/bin/sh
#
# Author: Simon Horman <horms@verge.net.au>
#
### BEGIN INIT INFO
# Provides:          perdition
# Required-Start:    $remote_fs
# Should-Start:      $syslog $named
# Required-Stop:     $remote_fs
# Should-Stop:       $syslog $named
# Default-Stop:      0 1 6
# Short-Description: POP, IMAP and managesieve proxy
# Description:       Starts perdition to allow proxied POP, IMAP and managesieve access
### END INIT INFO

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

if [ -f /etc/sysconfig/perdition ]; then
  . /etc/sysconfig/perdition
fi

# Please do not edit the values below.
# Rather, please edit /etc/sysconfig/perdition
RUN_PERDITION="${RUN_PERDITION:=yes}"
FLAGS="${FLAGS:=}"
POP3="${POP3:=yes}"
POP3_FLAGS="${POP3_FLAGS:=}"
POP3S="${POP3S:=yes}"
POP3S_FLAGS="${POP3S_FLAGS:=}"
IMAP4="${IMAP4:=yes}"
IMAP4_FLAGS="${IMAP4_FLAGS:=}"
IMAP4S="${IMAP4S:=yes}"
IMAP4S_FLAGS="${IMAP4S_FLAGS:=}"
MANAGESIEVE="${MANAGESIEVE:=yes}"
MANAGESIEVE_FLAGS="${MANAGESIEVE_FLAGS:=}"

if [ "$RUN_PERDITION" != "yes" ]; then
	exit 0
fi

# See how we were called.
case "$1" in
  start)
	if [ "$POP3" = "yes" ]; then
        	echo -n "Starting perdition services (POP3): "
		daemon /usr/sbin/perdition.pop3 $FLAGS $POP3_FLAGS
		touch /var/lock/subsys/perdition.pop3
        	echo
	fi

	if [ "$POP3S" = "yes" ]; then
        	echo -n "Starting perdition services (POP3S): "
		daemon /usr/sbin/perdition.pop3s $FLAGS $POP3S_FLAGS
		touch /var/lock/subsys/perdition.pop3s
        	echo
	fi

	if [ "$IMAP4" = "yes" ]; then
        	echo -n "Starting perdition services (IMAP4): "
		daemon /usr/sbin/perdition.imap4 $FLAGS $IMAP4_FLAGS
		touch /var/lock/subsys/perdition.imap4
		echo
	fi

	if [ "$IMAP4S" = "yes" ]; then
        	echo -n "Starting perdition services (IMAP4S): "
		daemon /usr/sbin/perdition.imaps $FLAGS $IMAP4S_FLAGS
		touch /var/lock/subsys/perdition.imaps
		echo
	fi
	if [ "$MANAGESIEVE" = "yes" ]; then
		echo -n "Starting perdition services (MANAGESIEVE): "
		daemon /usr/sbin/perdition.managesieve $FLAGS $MANAGESIEVE_FLAGS
		touch /var/lock/subsys/perdition.managesieve
		echo
	fi
	;;
  status)
        if [ "$POP3" = "yes" ]; then
        	status perdition.pop3
	fi
        if [ "$POP3S" = "yes" ]; then
        	status perdition.pop3s
	fi
	if [ "$IMAP4" = "yes" ]; then
        	status perdition.imap4
	fi
	if [ "$IMAP4S" = "yes" ]; then
        	status perdition.imaps
	fi
	if [ "$MANAGESIEVE" = "yes" ]; then
		status perdition.imaps
	fi
	;;
  restart|reload)
        $0 stop
	$0 start
        ;;
  stop)
	if [ "$POP3" = "yes" ]; then
        	echo -n "Shutting down perdition services (POP3): "
		killproc perdition.pop3
		rm -f /var/lock/subsys/perdition.pop3
        	echo
	fi

	if [ "$POP3S" = "yes" ]; then
        	echo -n "Shutting down perdition services (POP3S): "
		killproc perdition.pop3s
		rm -f /var/lock/subsys/perdition.pop3s
        	echo
	fi

	if [ "$IMAP4" = "yes" ]; then
        	echo -n "Shutting down perdition services (IMAP4): "
		killproc perdition.imap4
		rm -f /var/lock/subsys/perdition.imap4
		echo
	fi

	if [ "$IMAP4S" = "yes" ]; then
        	echo -n "Shutting down perdition services (IMAP4S): "
		killproc perdition.imaps
		rm -f /var/lock/subsys/perdition.imaps
		echo
	fi
	if [ "$MANAGESIEVE" = "yes" ]; then
		echo -n "Shutting down perdition services (MANAGESIEVE): "
		killproc perdition.managesieve
		rm -f /var/lock/subsys/perdition.managesieve
		echo
	fi
	;;
  *)
	echo "Usage: perdition {start|stop|status|restart|reload}"
	exit 1
esac

exit 0
