#!/bin/sh
#
# amavisd-milter    /etc/init.d/ initscript for amavisd-milter
#		Derived from /etc/init.d/amavisd-new-milter by
#			Brian May <bam@debian.org> and
#			Henrique M. Holschuh <hmh@debian.org>
#		Ideas from /etc/init.d/rsyslog by Michael Biebl
#			<biebl@debian.org>
#		and /etc/init.d/ssh
#		Copyright (c) 2009 by Harald Jenny
#			<harald@a-little-linux-box.at>
#		Distributed under the GPL version 2
#
### BEGIN INIT INFO
# Provides:          amavisd-milter
# Required-Start:    $remote_fs $syslog 
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts the amavisd-milter daemon
# Description:       milter daemon for sendmail/postfix and amavisd-new
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/amavisd-milter
NAME=amavisd-milter
DESC="amavisd-milter Daemon"
USER=amavis
PIDFILE=/var/run/amavis/$NAME.pid
OPTIONS=""

# 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

[ $PIDFILE != "/var/run/amavis/$NAME.pid" ] && OPTIONS="$OPTIONS -p $PIDFILE"
[ $MILTERSOCKET ] && OPTIONS="$OPTIONS -s $MILTERSOCKET"
[ $AMAVISSOCKET ] && OPTIONS="$OPTIONS -S $AMAVISSOCKET"
[ $WORKINGDIR ] && OPTIONS="$OPTIONS -w $WORKINGDIR"
[ $EXTRAPARAMS ] && OPTIONS="$OPTIONS $EXTRAPARAMS"

[ $PIDFILE ] && ([ -d $(dirname $PIDFILE) ] || mkdir $(dirname $PIDFILE) && chown $USER:$(id $USER -g -n) $(dirname $PIDFILE))
[ $MILTERSOCKET ] && ([ -d $(dirname $MILTERSOCKET) ] || mkdir $(dirname $MILTERSOCKET) && chown $USER $(dirname $MILTERSOCKET))

START="--start --quiet --chuid $USER --pidfile $PIDFILE --startas $DAEMON --name $NAME -- $OPTIONS"
STOP="--stop --quiet --retry 10 --pidfile $PIDFILE --startas $DAEMON --name $NAME"

# Define LSB functions.
. /lib/lsb/init-functions

case "$1" in
  start)
	log_daemon_msg "Starting $DESC:" "$NAME"
	start-stop-daemon $START 
	case "$?" in
		0) log_end_msg 0
		   [ $MILTERSOCKET ] && [ $MILTERSOCKETOWNER ] && chown $MILTERSOCKETOWNER $MILTERSOCKET
		   [ $MILTERSOCKET ] && [ $MILTERSOCKETMODE ] && chmod $MILTERSOCKETMODE $MILTERSOCKET ;;
		1) log_progress_msg "already started"
		   log_end_msg 0 ;;
		*) log_end_msg $? ;;
	esac
	;;

  stop)
	log_daemon_msg "Stopping $DESC:" "$NAME"
	start-stop-daemon $STOP
	case "$?" in
		0) log_end_msg 0 ;;
		1) log_progress_msg "already stopped"
		   log_end_msg 0 ;;
		*) log_end_msg $? ;;
	esac
	;;

  restart|force-reload)
	$0 stop
	$0 start
	;;

  status)
	status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
	;;

  *)
	log_failure_msg "Usage: $0 {start|stop|restart|force-reload|status}"
	exit 1
	;;

esac

exit 0
