SSPCPP-654 - Move fork wait timeout from init script to sysconfig
[shibboleth/cpp-sp.git] / configs / shibd-suse.in
index d644455..d0bc01b 100644 (file)
@@ -24,8 +24,13 @@ SHIB_CONFIG=@-PKGSYSCONFDIR-@/shibboleth2.xml
 DAEMON=@-PREFIX-@/sbin/$NAME
 SCRIPTNAME=/etc/init.d/$NAME
 PID_FILE=@-PKGRUNDIR-@/shibd.pid
+SHIBD_USER=root
+SHIBD_UMASK=022
+SHIBD_WAIT=30
 DAEMON_OPTS=""
+
+[ -e /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME
+
 # Force removal of socket
 DAEMON_OPTS="$DAEMON_OPTS -f"
  
@@ -36,8 +41,10 @@ DAEMON_OPTS="$DAEMON_OPTS -c $SHIB_CONFIG"
 DAEMON_OPTS="$DAEMON_OPTS -p $PID_FILE"
 
 # Specify wait time to use
-DAEMON_OPTS="$DAEMON_OPTS -w 30"
+DAEMON_OPTS="$DAEMON_OPTS -w $SHIBD_WAIT"
+
+umask $SHIBD_UMASK
+
 # Exit if the package is not installed.
 test -x "$DAEMON" || exit 5
  
@@ -48,13 +55,19 @@ rc_reset
  
 case "$1" in
     start)
+        # Make sure package run directory exists.
+        [ -d @-PKGRUNDIR-@ ] || mkdir @-PKGRUNDIR-@
+
+        # Handle transition from root to non-root packages.
+        chown -R $SHIBD_USER:$SHIBD_USER @-PKGRUNDIR-@ @-PKGCACHEDIR-@ 2>/dev/null || :
+               
         echo -n "Starting $DESC ($NAME)"
         ## Start daemon with startproc(8). If this fails
         ## the echo return value is set appropriate.
  
         # NOTE: startproc return 0, even if service is
         # already running to match LSB spec.
-        /sbin/startproc -p $PID_FILE $DAEMON $DAEMON_OPTS > /dev/null 2>&1
+        /sbin/startproc -u $SHIBD_USER -p $PID_FILE $DAEMON $DAEMON_OPTS > /dev/null 2>&1
  
         # Remember status and be verbose
         rc_status -v