]> git.pld-linux.org Git - packages/pure-ftpd.git/blobdiff - pure-ftpd.init
- authd needs group write, too
[packages/pure-ftpd.git] / pure-ftpd.init
index a347e151bceb7a47abca1944840b0915ec65c1c7..b3e2f5f03f83c4ab187c4309d0f68865770e5f37 100644 (file)
 # Get network config
 . /etc/sysconfig/network
 
+PURE_FTPD_CONF=/etc/ftpd/pureftpd.conf
+[ -f /etc/pure-ftpd/conf/pureftpd.conf ] && PURE_FTPD_CONF=/etc/pure-ftpd/conf/pureftpd.conf
+
+PURE_AUTH_SCRIPT=/etc/pure-ftpd/authd/auth.script
+PURE_AUTH_SOCKET=/var/run/pure-authd/socket
+PURE_CERT_SCRIPT=/etc/pure-ftpd/certd/cert.script
+PURE_CERT_SOCKET=/var/run/pure-certd/socket
+
 # Get service config
 [ -f /etc/sysconfig/pure-ftpd ] && . /etc/sysconfig/pure-ftpd
 
 # Check that networking is up.
-if is_no "${NETWORKING}"; then
-        # nls "ERROR: Networking is down. %s can't be run." <service>
-        msg_Network_Down pure-ftpd
-        exit 1
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down pure-ftpd
+               exit 1
+       fi
+else
+       exit 0
 fi
 
-if [ -f /etc/ftpd/pureftpd.conf ]; then
-    PUREFTPD_OPTS=$(grep -E -v "^\W*#" /etc/ftpd/pureftpd.conf | xargs)
-fi
+start() {
+       # Check if the service is already running?
+       if [ ! -f /var/lock/subsys/pure-ftpd ]; then
+               RETVAL=0
+               if [ -x "$PURE_AUTH_SCRIPT" ]; then
+                       PURE_AUTH=yes
+                       msg_starting pure-authd
 
-if [ -f /etc/ftpd/pureftpd-mysql.conf ]; then
-    PUREFTPD_OPTS="${PUREFTPD_OPTS} -l mysql:/etc/ftpd/pureftpd-mysql.conf"
-fi
+                       # 326/326 - authd/authd
+
+                       mkdir -p /var/run/pure-authd
+                       chown ftpauth:root /var/run/pure-authd
+                       chmod 770 /var/run/pure-authd
+
+                       daemon /usr/sbin/pure-authd --uid 326 --gid 326 --pid /var/run/pure-authd.pid \
+                               --run "$PURE_AUTH_SCRIPT" --socket "$PURE_AUTH_SOCKET" --daemonize
+                       RETVAL=$?
+               fi
+               if [ $RETVAL -eq 0 -a -x "$PURE_CERT_SCRIPT" ]; then
+                       PURE_CERT=yes
+                       msg_starting pure-certd
+
+                       # 335/335 - certd/certd
+
+                       mkdir -p /var/run/pure-certd
+                       chown ftpcert:root /var/run/pure-certd
+                       chmod 750 /var/run/pure-certd
+
+                       daemon /usr/sbin/pure-certd --uid 335 --gid 335 --pid /var/run/pure-certd.pid \
+                               --run "$PURE_CERT_SCRIPT" --socket "$PURE_CERT_SOCKET" --daemonize
+                       RETVAL=$?
+               fi
+               if [ $RETVAL -eq 0 ]; then
+                       msg_starting pure-ftpd
+                       rm -f /var/run/pure-ftpd/client*
+                       modprobe -s capability > /dev/null 2>&1
+                       daemon /usr/sbin/pure-ftpd ${PURE_FTPD_CONF} \
+                               $([ "$PURE_AUTH" = "yes" ] && echo "-lextauth:$PURE_AUTH_SOCKET") \
+                               $([ "$PURE_CERT" = "yes" ] && echo "--extcert=$PURE_CERT_SOCKET") \
+                               --daemonize
+                       RETVAL=$?
+
+                       if [ -n "$UPLOADSCRIPT" ]; then
+                               msg_starting pure-uploadscript
+                               UPLOADSCRIPTOPTS="-B -r $UPLOADSCRIPT"
+                               [ -n "$UPLOADSCRIPT_UID" ] && UPLOADSCRIPTOPTS="$UPLOADSCRIPTOPTS -u $UPLOADSCRIPT_UID"
+                               [ -n "$UPLOADSCRIPT_GID" ] && UPLOADSCRIPTOPTS="$UPLOADSCRIPTOPTS -g $UPLOADSCRIPT_GID"
+                               daemon /usr/sbin/pure-uploadscript $UPLOADSCRIPTOPTS
+                               RETVAL=$(($RETVAL+$?))
+                       fi
+               else
+                       msg_starting pure-ftpd
+                       deltext
+                       fail
+               fi
+
+               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pure-ftpd
+       else
+               msg_already_running pure-ftpd
+       fi
+}
+
+stop() {
+       # Stop daemons.
+       if [ -f /var/lock/subsys/pure-ftpd ]; then
+               if [ -n "$UPLOADSCRIPT" ]; then
+                   msg_stopping pure-uploadscript
+                   killproc pure-uploadscript
+               fi
+
+               if [ -x "$PURE_AUTH_SCRIPT" -o -r /var/run/pure-authd.pid ]; then
+                       msg_stopping pure-authd
+                       killproc pure-authd
+               fi
+
+               if [ -x "$PURE_CERT_SCRIPT" -o -r /var/run/pure-certd.pid ]; then
+                       msg_stopping pure-certd
+                       killproc pure-certd
+               fi
+
+               msg_stopping pure-ftpd
+               killproc pure-ftpd
+               
+               rm -f /var/lock/subsys/pure-ftpd > /dev/null 2>&1
+       else
+               msg_not_running pure-ftpd
+       fi
+}
 
+RETVAL=0
 # See how we were called.
 case "$1" in
   start)
-       # Check if the service is already running?
-        if [ ! -f /var/lock/subsys/pure-ftpd ]; then
-               msg_starting pure-ftpd
-               rm -f /var/run/pure-ftpd/client*
-               daemon pure-ftpd $PUREFTPD_OPTS --daemonize
-               RETVAL=$?
-               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pure-ftpd
-       else
-               msg_Already_Running pure-ftpd
-               exit 1
-       fi
+       start
        ;;
   stop)
-        # Stop daemons.
-       if [ -f /var/lock/subsys/pure-ftpd ]; then
-                msg_stopping pure-ftpd
-                killproc pure-ftpd
-                rm -f /var/lock/subsys/pure-ftpd > /dev/null 2>&1
-        else
-               msg_Not_Running pure-ftpd
-               exit 1
-       fi
+       stop
        ;;
   status)
        status pure-ftpd
+       status pure-uploadscript
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
-           pure-ftpwho
+               pure-ftpwho
        fi
-       exit $RETVAL
        ;;
-  restart|reload)
-       $0 stop
-       $0 start
+  restart|force-reload)
+       stop
+       start
        ;;
   *)
-       msg_Usage "$0 {start|stop|restart|status}"
-       exit 1
+       msg_usage "$0 {start|stop|restart|force-reload|status}"
+       exit 3
        ;;
 esac
 
 exit $RETVAL
-
This page took 0.054336 seconds and 4 git commands to generate.