#!/bin/sh
#VERSION=1.1
# pure-ftpd     This shell script takes care of starting and stopping
#               pure-ftpd.
#
# chkconfig: - 80 30
# description: PureFTPD is an FTP server
# processname: pure-ftpd
# config: /etc/pure-ftpd.conf
# pidfile: /var/run/pure-ftpd.pid

# Source function library.
. /usr/local/etc/rc.d/functions

[ -x /usr/sbin/pure-ftpd ] || exit 0

LOG=/var/log/pureftpd.log
DB=/etc/pureftpd.pdb
OPTIONS="-B -A -C 15 -E -H -k 99 -L 10000:8 -O stats:${LOG} -l puredb:${DB} -p 35000:35999 -u 99 -U 133:022 -w -Z"
OPTIONS="${OPTIONS} -Y 1 -J -S:HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 --extcert /var/run/pure-certd.sock"

UPLOAD_PID=/var/run/pure-uploadscript.pid
if [ -e /usr/local/bin/pureftpd_uploadscan.sh ]; then
	OPTIONS="-o ${OPTIONS}"
fi

CERTD_PID=/var/run/pure-certd.pid
CERTD_SOCK=/var/run/pure-certd.sock

RETVAL=0

LOCK_FILE=/var/spool/lock/pure-ftpd

start() {
        echo -n "Starting pure-ftpd: "
        daemon /usr/sbin/pure-ftpd ${OPTIONS}
        RETVAL=$?
        if [ $RETVAL -eq 0 ] && touch $LOCK_FILE
	then
		echo -e "\t\t[ OK ]";
	else
		echo -e "\t\t[ FAILED ]";
	fi

	if [ -e /usr/local/bin/pureftpd_uploadscan.sh ]; then
		/usr/sbin/pure-uploadscript -B -p ${UPLOAD_PID} -r /usr/local/bin/pureftpd_uploadscan.sh > /dev/null 2>&1
	fi
	if [ -e /usr/local/bin/pureftpd_sni.sh ]; then
		/usr/sbin/pure-certd -B -p ${CERTD_PID} -r /usr/local/bin/pureftpd_sni.sh -s ${CERTD_SOCK} > /dev/null 2>&1
	fi
        return $RETVAL
}

stop() {
        echo -n "Shutting down pure-ftpd: "
        killall pure-ftpd 2> /dev/null
        RETVAL=$?
        if [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
	then
		echo -e "\t\t[ OK ]";
	else
		echo -e "\t\t[ FAILED ]";
	fi

	if [ -s /usr/sbin/pure-uploadscript ] && [ -s ${UPLOAD_PID} ]; then
		kill `cat ${UPLOAD_PID}` > /dev/null 2>&1
	fi
	if [ -s /usr/sbin/pure-certd ]; then
		kill -9 `cat ${CERTD_PID}` > /dev/null 2>&1
	fi
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status pure-ftpd
        RETVAL=$?
        ;;
  restart)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f $LOCK_FILE ]; then
          stop
          start
          RETVAL=$?
        fi
        ;;
  reload)
        echo -n "Re-reading pure-ftpd configuration: "
        killall -HUP pure-ftpd 2> /dev/null
        RETVAL=$?
	if [ $RETVAL = 0 ]
	then
		echo -e "\t[ OK ]";
	else
		echo -e "\t[ FAILED ]";
	fi
        ;;
  *)
        echo "Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
        exit 1
esac

exit $RETVAL
