#!/bin/sh
# -----------------------------------------------------------------------------
# /etc/rc.d/rc.amavisd
# This script is used to bring up the AMaViS email virus scanner on Slackware.
#
# Written by Eric Hameleers <alien@slackware.com>
# -----------------------------------------------------------------------------

[ -x /usr/sbin/amavisd ] || exit 1
[ -r /etc/amavisd.conf ] || exit 1

### Default variables
AMAVIS_USER="amavis"
CONFIG_FILE="/etc/amavisd.conf"
MILTER_SOCKET=""
MILTER_FLAGS=""
RCCONFIG="/etc/rc.d/rc.amavisd.conf"

### Read configuration
[ -r "$RCCONFIG" ] && source "$RCCONFIG"

start() {
  if [ "$MILTER_SOCKET" -a -x "/usr/sbin/amavis-milter" ]; then
    echo -n "Starting Mail Virus Scanner (amavis-milter): "
    /usr/sbin/amavis-milter -p "$MILTER_SOCKET" -u "$AMAVIS_USER" $MILTER_FLAGS
    echo
  fi
  echo -n "Starting Mail Virus Scanner (amavisd): "
  /usr/sbin/amavisd -c "$CONFIG_FILE" -u "$AMAVIS_USER" 
  echo
}

stop() {
  if [ "$MILTER_SOCKET" ]; then
    echo -n $"Shutting down Mail Virus Scanner (amavis-milter): "
    killall -TERM amavis-milter
    echo
  fi
  echo -n "Shutting down Mail Virus Scanner (amavisd): "
  killall -TERM amavisd
  echo
}

reload() {
  echo -n "Reloading Mail Virus Scanner (amavisd): "
  /usr/sbin/amavisd reload
  echo
}

restart() {
  stop
  sleep 1
  start
}

status() {
  PIDS=$(pidof amavisd)
  if [ "$PIDS" == "" ]; then
    echo "amavisd is not running!"
  else
    echo "amavisd is running at pid(s) ${PIDS}."
  fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  status)
        status
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
esac

