#!/bin/sh
#
# /etc/init.d/wu-ftpd  --  start/stop the wu-ftpd FTP daemon.
# 
### BEGIN INIT INFO
# Provides:          wu-ftpd
# Required-Start:    $syslog $network $remote_fs
# Required-Stop:     $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts and stops the wu-ftpd FTP daemon
### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin

NAME=wu-ftpd
DAEMON=/usr/sbin/wu-ftpd
PIDFILE=/var/run/wu-ftpd.pid
DESC="FTP server"

unset LANG
trap "" 1 15
test -x $DAEMON || exit 0

RUN_DAEMON=yes
WU_OPTIONS="-l"
if [ -f /etc/default/$NAME ]; then
    . /etc/default/$NAME
fi

DAEMON_ARGS="-S $WU_OPTIONS"

run_wu="1"

if [ "x$RUN_DAEMON" = "xno" ]; then
    run_wu=0
fi

# check that the FTP service isn't already enabled in inetd
if [ -f /etc/inetd.conf ] && egrep '^ftp[[:space:]][[:space:]]*' /etc/inetd.conf >/dev/null; then
    run_wu=0
fi

for FILE in /etc/xinetd.d/*netd.d; do
    if [ -f $FILE ] && egrep 'server[[:space:]]*=.*ftpd' $FILE > /dev/null; then
        run_wu=0                                                              
    fi
done

is_running() 
{
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 0

	return 1
}

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	is_running && return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
		$DAEMON_ARGS \
		|| return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2

	return "$RETVAL"
}

. /lib/lsb/init-functions

case "$1" in
    start)
        if [ "$run_wu" = "1" ]; then
					[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
					do_start
					case "$?" in
						0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
						2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
					esac
        fi
        ;;
    stop)
        if [ -f /var/run/wu-ftpd.pid ] && kill -0 `cat /var/run/wu-ftpd.pid` 2>/dev/null; then
					[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
					do_stop
					case "$?" in
						0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
						2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
					esac
        fi
        ;;
    restart|force-reload)
        if [ "$run_wu" = "1" ]; then
					log_daemon_msg "Restarting $DESC" "$NAME"
					do_stop
					case "$?" in
						0|1)
						do_start
						case "$?" in
							0) log_end_msg 0 ;;
							1) log_end_msg 1 ;; # Old process is still running
							*) log_end_msg 1 ;; # Failed to start
						esac
						;;
						*)
							# Failed to stop
						log_end_msg 1
						;;
					esac
        fi
        ;;
		status)
			if is_running; then
				log_success_msg "wu-ftpd FTP server is running."
				exit 0
			else
				log_failure_msg "wu-ftpd FTP server is not running."
				exit 1
			fi
			;;				
    *)
        echo "Usage: /etc/init.d/wu-ftpd {start|stop|restart|force-reload|status}"
        exit 1
        ;;
esac

exit 0
