]> 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 b439c0860d1b3189b7f6f9abeaad3c80fe7b16ff..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 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
@@ -40,25 +36,57 @@ fi
 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) \
-                               --daemonize
+               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 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=$?
-               else
-                       daemon $CFG /etc/ftpd/pureftpd.conf --daemonize
+               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 [ -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+$?))
+               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
@@ -75,6 +103,16 @@ stop() {
                    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
                
This page took 0.105503 seconds and 4 git commands to generate.