#!/bin/sh

. /lib/svc/share/smf_include.sh

DAEMON='/usr/sbin/exim4'
PIDFILE='/var/run/exim4/exim.pid'
QRPIDFILE='/var/run/exim4/eximqr.pid'

SMF_FMRI=${SMF_FMRI:-'svc:/network/smtp:exim4'}

getprop()
{
  val=`svcprop -p $1 $SMF_FMRI`
  if [ -n "$val" ] && [ "$val" != '""' ]; then
    echo "$val"
  else
    echo "$2"
  fi
}

QUEUERUNNER="`getprop options/queuerunner combined`"
QUEUEINTERVAL="`getprop options/queueinterval 30m`"

exim4_start()
{
  set -e

  if ! [ -e /var/run/exim4 ]; then
    install -d -oDebian-exim -gDebian-exim -m750 /var/run/exim4
  fi

  case "${QUEUERUNNER}" in
    combined)
        "$DAEMON" -bd "-q${QFLAGS}${QUEUEINTERVAL}" \
        -oP "$PIDFILE" \
        ${COMMONOPTIONS} \
        ${QUEUERUNNEROPTIONS} \
        ${SMTPLISTENEROPTIONS}
      ;;
    separate)
        "$DAEMON" -bd \
        -oP "$PIDFILE" \
        ${COMMONOPTIONS} \
        ${SMTPLISTENEROPTIONS}

        "$DAEMON" -oP "$QRPIDFILE" \
        "-q${QFLAGS}${QUEUEINTERVAL}" \
        ${COMMONOPTIONS} \
        ${QUEUERUNNEROPTIONS}
      ;;
    queueonly)
        "$DAEMON" -oP "$QRPIDFILE" \
        "-q${QFLAGS}${QUEUEINTERVAL}" \
        ${COMMONOPTIONS} \
        ${QUEUERUNNEROPTIONS}
      ;;
     *)
        echo "Value of options/queuerunner is invalid: \`$QUEUERUNNER'" >&2
        echo "Valid are: combined, separate, queueonly" >&2
        exit 3
  esac
}


exim4_stop()
{
  smf_kill_contract $2 TERM 1 30
  rc=$?
  case $rc in
    1) # invalid contract ($2)
      exit 2
    ;;
    2) # TERM timeouted, use KILL
      smf_kill_contract $2 KILL 1
    ;;
  esac
}


exim4_refresh()
{
  smf_kill_contract $2 HUP
}

case "$1" in
    start)
        exim4_start "$@"
        ;;
    stop)
        exim4_stop "$@"
        ;;
    refresh)
        exim4_refresh "$@"
        ;;
    *)
        echo "$0: unknown command: $1" >&2
        exit 1
        ;;
esac

exit 0

