#!/bin/sh
#
# mailfromd-clamav	Startup script for the mailfromd daemon.
#
# chkconfig:	- 76 24
# description:	mailfromd is a daemon which hooks into sendmail \
#		and check MAIL FROM value and other.
# processname:	mailfromd-clamav
# config:	/etc/sysconfig/mailfromd-clamav
# pidfile:	/var/lib/mailfromd-clamav/mailfromd-clamav.pid

### BEGIN INIT INFO
# Provides:		mailfromd-clamav
# Required-Start:	$network
# Required-Stop:	$network
# Default-Start:
# Default-Stop:
# Short-Description:	Start mailfromd at boot time
# Description:		Enable mailfromd service.
### END INIT INFO

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

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

# Source mailfromd configuration.
SourceIfNotEmpty /etc/sysconfig/mailfromd-clamav

WORKDIR=/var/lib/mailfromd-clamav
PIDFILE=$WORKDIR/mailfromd-clamav.pid
LOCKFILE=/var/lock/subsys/mailfromd-clamav
RETVAL=0

make_config_db()
{
	pushd /etc/mailfromd >/dev/null
	make
	popd >/dev/null
}

start()
{
	make_config_db
	start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user mail -- mailfromd-clamav --state-directory=$WORKDIR ${MAILFROMD_FLAGS}
	RETVAL=$?
	return $RETVAL
}

stop()
{
	stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user mail mailfromd-clamav
	RETVAL=$?
	return $RETVAL
}

restart()
{
	stop
	start
}

reload()
{
	msg_reloading mailfromd
	make_config_db
	stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user mail -HUP -- mailfromd-clamav
	RETVAL=$?
	return $RETVAL
}

compactdb()
{
	[ "$1" = "quietly" ] || echo -n "All databases are compacting, please wait..."

	for DBNAME in `ls $WORKDIR/*.db` ; do
	    chmod 600 $DBNAME
	    su -l mail -s /bin/sh -c "/usr/bin/mfdbtool --file=$DBNAME --compact"
	done

	[ "$1" = "quietly" ] || echo "Done."
}

rmdb()
{
	echo -n "All databases are removing, please wait..."
        rm -f $WORKDIR/*.db
	echo "Done."    
}
			

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  reload)
	reload
	;;
  restart)
	restart
	;;
  compactdb)
	compactdb $2
	;;
  rmdb)
	rmdb
	;;
  status)
	status --pidfile "$PIDFILE" --expect-user mail -- mailfromd-clamav --state-directory=$WORKDIR
	RETVAL=$?
	;;
  condstop)
	if [ -e "$LOCKFILE" ]; then
		stop
	fi
	;;
  condrestart)
	if [ -e "$LOCKFILE" ]; then
		restart
	fi
	;;
  condreload)
	if [ -e "$LOCKFILE" ]; then
		reload
	fi
	;;
  *)
	msg_usage "${0##*/} {start|stop|restart|reload|compactdb|rmdb|condstop|condrestart|condreload|status}"
	RETVAL=1
esac

exit $RETVAL
