#!/bin/sh ### BEGIN INIT INFO # Provides: proftpd # Required-Start: $remote_fs $syslog $local_fs $network # Required-Stop: $remote_fs $syslog $local_fs $network # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts ProFTPD daemon # Description: This script runs the FTP service offered # by the ProFTPD daemon ### END INIT INFO # Start the proftpd FTP daemon. PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/proftpd NAME=proftpd # Defaults RUN="no" OPTIONS="" CONFIG_FILE=/etc/proftpd.conf PIDFILE=`grep -i '^pidfile' $CONFIG_FILE|awk '{ print $2 }'` if [ "x$PIDFILE" = "x" ]; then PIDFILE=/var/run/proftpd.pid fi # Read config (will override defaults) [ -r /etc/default/proftpd ] && . /etc/default/proftpd trap "" 1 trap "" 15 test -f $DAEMON || exit 0 . /etc/init.d/functions # # Servertype could be inetd|standalone|none. # In all cases check against inetd and xinetd support. # if ! egrep -qi "^[[:space:]]*ServerType.*standalone" $CONFIG_FILE then if egrep -qi "server[[:space:]]*=[[:space:]]*/usr/sbin/proftpd" /etc/xinetd.conf 2>/dev/null || \ egrep -qi "server[[:space:]]*=[[:space:]]*/usr/sbin/proftpd" /etc/xinetd.d/* 2>/dev/null || \ egrep -qi "^ftp.*/usr/sbin/proftpd" /etc/inetd.conf 2>/dev/null then RUN="no" INETD="yes" else if ! egrep -qi "^[[:space:]]*ServerType.*inetd" $CONFIG_FILE then RUN="yes" INETD="no" else RUN="no" INETD="no" fi fi fi # /var/run could be on a tmpfs [ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd inetd_check() { if [ ! -x /usr/sbin/inetd -a ! -x /usr/sbin/xinetd ]; then echo "Neither inetd nor xinetd appears installed: check your configuration." fi } start() { set -e echo -n "Starting ftp server $NAME... " start-stop-daemon --start --quiet --pidfile "$PIDFILE" --oknodo --exec $DAEMON -- -c $CONFIG_FILE $OPTIONS echo "done." } signal() { if [ "$1" = "stop" ]; then SIGNAL="TERM" echo -n "Stopping ftp server $NAME... " else if [ "$1" = "reload" ]; then SIGNAL="HUP" echo -n "Reloading ftp server $NAME... " else echo "ERR: wrong parameter given to signal()" exit 1 fi fi if [ -f "$PIDFILE" ]; then start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE" if [ $? = 0 ]; then echo "done." return else SIGNAL="KILL" start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE" if [ $? != 0 ]; then echo [ $2 != 0 ] || exit 0 else echo "done." return fi fi if [ "$SIGNAL" = "KILL" ]; then rm -f "$PIDFILE" fi else echo "done." return fi } case "$1" in start) if [ "x$RUN" = "xyes" ] ; then start else if [ "x$INETD" = "xyes" ] ; then echo "ProFTPD is started from inetd/xinetd." inetd_check else echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration." fi fi ;; force-start) if [ "x$INETD" = "xyes" ] ; then echo "Warning: ProFTPD is started from inetd/xinetd (trying to start anyway)." inetd_check fi start ;; stop) if [ "x$RUN" = "xyes" ] ; then signal stop 0 else if [ "x$INETD" = "xyes" ] ; then echo "ProFTPD is started from inetd/xinetd." inetd_check else echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration." fi fi ;; force-stop) if [ "x$INETD" = "xyes" ] ; then echo "Warning: ProFTPD is started from inetd/xinetd (trying to kill anyway)." inetd_check fi signal stop 0 ;; reload) signal reload 0 ;; force-reload|restart) if [ "x$RUN" = "xyes" ] ; then signal stop 1 sleep 2 start else if [ "x$INETD" = "xyes" ] ; then echo "ProFTPD is started from inetd/xinetd." inetd_check else echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration." fi fi ;; status) if [ "x$INETD" = "xyes" ] ; then echo "ProFTPD is started from inetd/xinetd." inetd_check exit 0 else if [ -f "$PIDFILE" ]; then pid=$(cat $PIDFILE) else pid="x" fi if [ `pidof proftpd|grep "$pid"|wc -l` -ne 0 ] ; then echo "ProFTPD is started in standalone mode, currently running." exit 0 else echo "ProFTPD is started in standalone mode, currently not running." exit 3 fi fi ;; check-config) $DAEMON -t >/dev/null && echo "ProFTPD configuration OK" && exit 0 exit 1 ;; *) echo "Usage: /etc/init.d/$NAME {start|status|force-start|stop|force-stop|reload|restart|force-reload|check-config}" exit 1 ;; esac exit 0