#!/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
# /etc/init.d/vsftpd
#
# Written by Sander Smeenk <ssmeenk@debian.org>
# Modified by Rogrio Brito <rbrito@ime.usp.br>

set -e

# Exit if vsftpd.conf doesn't have listen=yes or listen_ipv6=yes
# (mandatory for standalone operation)
if [ -f /etc/vsftpd.conf ] && ! egrep -iq "^ *listen(_ipv6)? *= *yes" /etc/vsftpd.conf; then 
    exit 0
fi

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
. /lib/lsb/init-functions

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

case "$1" in
  start)
    log_begin_msg "Starting FTP server: $NAME"
    [ -d ${CHROOT} ] || mkdir -p ${CHROOT}
    start-stop-daemon --start --background -m --oknodo --pidfile /var/run/vsftpd/vsftpd.pid --exec $DAEMON && log_end_msg 0 || log_end_msg 1
    ;;
  stop)
    log_begin_msg "Stopping FTP server: $NAME"
    start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --oknodo --exec $DAEMON && log_end_msg 0 || log_end_msg 1
    rm -f /var/run/vsftpd/vsftpd.pid
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload|force-reload)
    log_begin_msg "Reloading $NAME configuration files"
    start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --signal 1 --exec $DAEMON && log_end_msg 0 || log_end_msg 1
    ;;
  status)
    pid=`cat /var/run/vsftpd/vsftpd.pid 2>/dev/null` || true
    if test ! -f /var/run/vsftpd/vsftpd.pid -o -z "$pid"; then
      echo "vsftpd is not running"
      exit 3
    fi
    if ps "$pid" >/dev/null 2>&1; then
      echo "vsftpd is running"
      exit 0
    else
      echo "vsftpd is not running"
      exit 1
    fi
    ;;
  *)
    log_success_msg "Usage: /etc/init.d/$NAME {start|stop|restart|reload|status}"
    exit 1
    ;;
esac

exit 0
