]> git.pld-linux.org Git - packages/pure-ftpd.git/blobdiff - pure-ftpd.init
- rel 5; FEAT UTF8 is enough, so drop fake OPTS UTF-8 support. Raise capabilities...
[packages/pure-ftpd.git] / pure-ftpd.init
index be5eab193db737b15aed21ab4f100ab342e65aee..e92e0501d4173ee678f54c8370af72b0c08b1b42 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 for available parsers
-if [ -x /usr/sbin/pure-config ] ; then
-       CFG=/usr/sbin/pure-config
-elif [ -x /usr/sbin/pure-config.pl -a -x /usr/bin/perl ] ; then 
-       CFG=/usr/sbin/pure-config.pl
-elif [ -x /usr/sbin/pure-config.py -a -x /usr/bin/python ] ; then
-       CFG=/usr/sbin/pure-config.py
-else
-       echo 'Error: pure-config{,.pl,.py} not found. Giving up.'
-       exit 1
-fi     
-
 # Check that networking is up.
 if is_yes "${NETWORKING}"; then
        if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
@@ -37,49 +33,115 @@ else
        exit 0
 fi
 
-RETVAL=0
-# See how we were called.
-case "$1" in
-  start)
+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*
-               if [ x"$CFG" = "x/usr/sbin/pure-config" ] ; then
-                       daemon /usr/sbin/pure-ftpd \
-                               $(/usr/sbin/pure-config -f /etc/ftpd/pureftpd.conf) \
+               RETVAL=0
+               if [ -x "$PURE_AUTH_SCRIPT" ]; then
+                       PURE_AUTH=yes
+                       msg_starting pure-authd
+
+                       # 326/326 - authd/authd
+
+                       mkdir -p /var/run/pure-authd
+                       chown ftpauth:root /var/run/pure-authd
+                       chmod 750 /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
-                       daemon $CFG /etc/ftpd/pureftpd.conf --daemonize
-                       RETVAL=$?
+                       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() {
        # 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)
+       start
+       ;;
+  stop)
+       stop
        ;;
   status)
        status pure-ftpd
+       status pure-uploadscript
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
                pure-ftpwho
        fi
        ;;
   restart|force-reload)
-       $0 stop
-       $0 start
-       exit $?
+       stop
+       start
        ;;
   *)
        msg_usage "$0 {start|stop|restart|force-reload|status}"
This page took 0.401715 seconds and 4 git commands to generate.