#!/bin/sh
#
# popbsmtp	This shell script takes care of starting and stopping
#		pop-before-smtp service.
#
# chkconfig:	345 55 45
# description:	pop-before-smtp watch logfiles and manipulate postfix \
#		access map.

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

# Source networking configuration.
. /etc/sysconfig/network

DBFILE="/var/lib/popbsmtp/pop-before-smtp"
CYRUS="no"
GRACE="1800"

# Try get config..
if [ -f /etc/sysconfig/popbsmtp ]; then
	. /etc/sysconfig/popbsmtp
fi

# Check that networking is up.
if is_yes "${NETWORKING}"; then
	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
		msg_network_down "POP-before-SMTP"
		exit 1
	fi
else
	exit 0
fi

# Autodetect pop3daemon.
WILLUSEDEFAULT="0"
if [ -z "$RPM_PROVIDES_POP3" ]; then
	RPM_PROVIDES_POP3="pop3daemon"
fi
if [ -z "$RPM_PROVIDES_IMAP" ]; then
	RPM_PROVIDES_IMAP="imapdaemon"
fi

if [ "$PATTERN_NAME" = "auto" ]; then
	RPM_RESPONSE=`rpm -q --whatprovides "$RPM_PROVIDES_POP3" | cut -d ' ' -f 1` 2>/dev/null;
	if [ $? -ne 0 ]; then
		RPM_RESPONSE=`rpm -q --whatprovides "$RPM_PROVIDES_IMAP" | cut -d ' ' -f 1` 2>/dev/null;
	fi

	case "$RPM_RESPONSE" in
	  cyrus*)
		PATTERN_NAME="cyrus"
		;;
	  uw*)
		PATTERN_NAME="uw"
		;;
	  UW*)
		PATTERN_NAME="uw"
		;;
	  solid-pop3d*)
		PATTERN_NAME="spop3d"
		;;
	  cyrus*)
		PATTERN_NAME="cyrus"
		;;
	  qmail*)
		PATTERN_NAME="qmail"
		;;
	  qpopper*)
		PATTERN_NAME="qpopper_all"
		;;
	  *)
		WILLUSEDEFAULT="1"
		;;
	esac
fi

if [ -n "$PATTERN_NAME" ]; then
	OPTIONS="--pattern-name=$PATTERN_NAME"
fi

# Parse rest of options
if [ -n "$LOGFILE" ]; then
	OPTIONS="$OPTIONS --logfile=$LOGFILE"
else
	OPTIONS="$OPTIONS --logfile=/var/log/mailog"
fi
if [ -n "$DBFILE" ]; then
	OPTIONS="$OPTIONS --dbfile=$DBFILE"
else
	OPTIONS="$OPTIONS --dbfile=$DBFILE"
fi
if [ -n "$GRACE" ]; then
	OPTIONS="$OPTIONS --grace=$GRACE"
else
	OPTIONS="$OPTIONS --grace=180"
fi
if is_yes "$MAPPED_V6"; then
	OPTIONS="$OPTIONS --mappedv6"
else
	OPTIONS="$OPTIONS --nomappedv6"
fi

OPTIONS="$OPTIONS $OTHER"

RETVAL=0
# See how we were called.
case "$1" in
  start)
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/popbsmtp ]; then
		msg_starting "POP-before-SMTP"
		busy
		/usr/sbin/pop-before-smtp $OPTIONS &
		sleep 1
		ps -C pop-before-smtp >/dev/null 2>&1
		RETVAL=$?
		CPID=$!
		if [ $RETVAL -eq 0 ]; then
			touch /var/lock/subsys/popbsmtp
			echo $CPID >/var/run/pop-before-smtp.pid
			ok;
		else
			RETVAL=1
			fail;
		fi
	else
		msg_already_running "POP-before-SMTP"
		exit 1
	fi

	;;
  stop)
	if [ -f /var/lock/subsys/popbsmtp ]; then
		msg_stopping "POP-before-SMTP"
		killproc pop-before-smtp
		rm -f /var/lock/subsys/popbsmtp /var/run/pop-before-smtp.pid >/dev/null 2>&1
	else
		msg_not_running "POP-before-SMTP"
	fi
	;;
  status)
	status pop-before-smtp
	exit $?
	;;
  restart|force-reload)
	$0 stop
	$0 start
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|force-reload|status}"
	exit 3
esac

exit $RETVAL
