[packages/openldap] make init script dynamic to allow multipe slapd instances

glen glen at pld-linux.org
Mon Dec 10 12:50:44 CET 2012


commit 5dbb548bad29887bed855ea108c2d82470075efe
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Mon Dec 10 13:49:29 2012 +0200

    make init script dynamic to allow multipe slapd instances
    
    basically you can ln -s ldap initscript to ldap-instance2 and do some
    magic in /etc/sysconfig/ldap based on $SLAPD_INSTANCE variable.

 ldap.init | 34 ++++++++++++++++++++++++----------
 1 file changed, 24 insertions(+), 10 deletions(-)
---
diff --git a/ldap.init b/ldap.init
old mode 100644
new mode 100755
index cddda5b..4a16256
--- a/ldap.init
+++ b/ldap.init
@@ -20,6 +20,12 @@
 SLAPDSYSLOGLEVEL=""
 SLAPDURLLIST=""
 SLAPDOPTIONS=""
+SLAPD_SOCKET_PATH=/var/run/ldapi
+SLAPD_CONFIG_FILE=/etc/openldap/slapd.conf
+
+# setup instance variable, can be used to sysconfig/ldap to do some magic
+SLAPD_INSTANCE=${0##*/}
+SLAPD_INSTANCE=${SLAPD_INSTANCE##[0-9][0-9]_}
 
 # Get service config
 [ -f /etc/sysconfig/ldap ] && . /etc/sysconfig/ldap
@@ -34,8 +40,12 @@ else
 	exit 0
 fi
 
+lockfile=/var/lock/subsys/$SLAPD_INSTANCE
+pidfile=$(awk '/^pidfile/ {print $2}' $SLAPD_CONFIG_FILE)
+pidfile=${pidfile:-/var/run/slapd/slapd.pid}
+
 start() {
-	if [ -f /var/lock/subsys/ldap ]; then
+	if [ -f $lockfile ]; then
 		msg_already_running "OpenLDAP"
 		return
 	fi
@@ -53,6 +63,10 @@ start() {
 		SERVICE_RUN_NICE_LEVEL=$SLAPDNICE
 	fi
 
+	if [ -n "$SLAPD_CONFIG_FILE" ]; then
+		ARGS="$ARGS -f $SLAPD_CONFIG_FILE"
+	fi
+
 	if is_yes $RC_LOGGING; then
 		daemon /usr/sbin/slapd $ARGS ${SLAPDURLLIST:+ -h \"$SLAPDURLLIST\"}
 	else
@@ -60,26 +74,26 @@ start() {
 	fi
 
 	RETVAL=$?
-	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/ldap
-	if [ $RETVAL -eq 0 -a -S /var/run/ldapi ]; then
-		chown "$LDAPI_SOCKET_OWNER":"$LDAPI_SOCKET_GROUP" /var/run/ldapi && \
-		chmod "$LDAPI_SOCKET_MODE" /var/run/ldapi
+	[ $RETVAL -eq 0 ] && touch $lockfile
+	if [ $RETVAL -eq 0 -a -S $SLAPD_SOCKET_PATH ]; then
+		chown "$LDAPI_SOCKET_OWNER":"$LDAPI_SOCKET_GROUP" $SLAPD_SOCKET_PATH && \
+		chmod "$LDAPI_SOCKET_MODE" $SLAPD_SOCKET_PATH
 	fi
 }
 
 stop() {
-	if [ ! -f /var/lock/subsys/ldap ]; then
+	if [ ! -f $lockfile ]; then
 		msg_not_running "OpenLDAP"
 		return
 	fi
 
 	msg_stopping "OpenLDAP"
-	killproc --waitforname slapd --waitfortime 300 slapd -TERM
-	rm -f /var/lock/subsys/ldap >/dev/null 2>&1
+	killproc --pidfile $pidfile --waitforname slapd --waitfortime 300 slapd -TERM
+	rm -f $lockfile >/dev/null 2>&1
 }
 
 condrestart() {
-	if [ -f /var/lock/subsys/ldap ]; then
+	if [ -f $lockfile ]; then
 		stop
 		start
 	else
@@ -108,7 +122,7 @@ case "$1" in
 	condrestart 7
 	;;
   status)
-	status slapd
+	status --pidfile $pidfile slapd
 	RETVAL=$?
 	;;
   *)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/openldap.git/commitdiff/5dbb548bad29887bed855ea108c2d82470075efe



More information about the pld-cvs-commit mailing list