#!/bin/sh

### BEGIN INIT INFO
# Provides:		vsftpd
# Required-Start:	$remote_fs $syslog
# Required-Stop:	$remote_fs $syslog
# Default-Start:	2 3 4 5
# Default-Stop:		1
# Short-Description:	Very secure FTP server
### END INIT INFO

set -e

DAEMON="/usr/sbin/vsftpd"
NAME="vsftpd"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
LOGFILE="/var/log/vsftpd.log"
CHROOT="/var/run/vsftpd/empty"

test -x "${DAEMON}" || exit 0

if [ ! -e "${LOGFILE}" ]
then
	touch "${LOGFILE}"
	chmod 640 "${LOGFILE}"
	chown root:adm "${LOGFILE}"
fi

if [ ! -d "${CHROOT}" ]
then
	mkdir -p "${CHROOT}"
fi

Check_standalone_mode ()
{
	# Return 1 if vsftpd.conf doesn't have listen=yes or listen_ipv6=yes
	# (mandatory for standalone operation).

	CONFFILE="/etc/vsftpd.conf"

	if [ -e "${CONFFILE}" ] && ! egrep -iq "^ *listen(_ipv6)? *= *yes" "${CONFFILE}"
	then
		echo "${CONFFILE}: listen disabled - service will not start"
		return 1
	fi
}

case "${1}" in
	start)
		Check_standalone_mode || exit 0
		echo -n "Starting FTP server: "

		start-stop-daemon --start --background -m --oknodo --pidfile /var/run/vsftpd/vsftpd.pid --exec ${DAEMON}

		echo "${NAME}."
		;;

	stop)
		echo -n "Stopping FTP server: "

		start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --oknodo --exec ${DAEMON}
		rm -f /var/run/vsftpd/vsftpd.pid

		echo "${NAME}."

		;;

	restart)
		echo -n "Stopping FTP server: "

		start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --oknodo --exec ${DAEMON}
		rm -f /var/run/vsftpd/vsftpd.pid

		echo "${NAME}."
		Check_standalone_mode || exit 0
		echo -n "Starting FTP server: "

		start-stop-daemon --start --background -m --pidfile /var/run/vsftpd/vsftpd.pid --exec ${DAEMON}

		echo "${NAME}."
		;;

	reload|force-reload)
		echo "Reloading FTP server configuration: "

		start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --signal 1 --exec $DAEMON

		echo "${NAME}."
		;;

	status)
		PID="$(cat /var/run/vsftpd/vsftpd.pid 2>/dev/null)" || true

		if [ ! -f /var/run/vsftpd/vsftpd.pid ] || [ -z "${PID}" ]
		then
			echo "${NAME} is not running"
			exit 3
		fi

		if ps "${PID}" >/dev/null 2>&1
		then
			echo "${NAME} is running"
			exit 0
		else
			echo "${NAME} is not running"
			exit 1
		fi
		;;

	*)
		echo "Usage: /etc/init.d/${NAME} {start|stop|restart|reload|status}"
		exit 1
		;;
esac

exit 0
