90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #!/sbin/openrc-run
 | |
| # Copyright 1999-2020 Gentoo Authors
 | |
| # Distributed under the terms of the GNU General Public License v2
 | |
| 
 | |
| DIRSRV_EXEC="/usr/sbin/ns-slapd"
 | |
| PID_DIRECTORY="/run/dirsrv"
 | |
| LOCK_DIRECTORY="/var/lock/dirsrv"
 | |
| DIRSRV_CONF_DIR="/etc/dirsrv"
 | |
| DS_INSTANCES=${DIRSRV_CONF_DIR}/slapd-*
 | |
| 
 | |
| depend() {
 | |
| 	need net logger
 | |
| 	use dns
 | |
| 	provide dirsrv ldap
 | |
| }
 | |
| 
 | |
| checkconfig() {
 | |
| 	if [ -z "${DS_INSTANCES}" ]; then
 | |
| 		eerror "389 Directory Server has not been configured."
 | |
| 		eend 1
 | |
| 		return 1
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	checkconfig || return 1
 | |
| 
 | |
| 	for instance in ${DS_INSTANCES}; do
 | |
| 		instance=$(basename ${instance})
 | |
| 		# skip .removed instances, bug #338133
 | |
| 		if [ "${instance%%.removed}" != "${instance}" ]; then
 | |
| 			continue
 | |
| 		fi
 | |
| 		# Create the required directories in case they got nuked
 | |
| 		mkdir -p ${PID_DIRECTORY}
 | |
| 		mkdir -p ${LOCK_DIRECTORY}/${instance}
 | |
| 		# This will probably break one day, we should be pulling out the suitespotuser from dse.ldif
 | |
| 		chown dirsrv: ${PID_DIRECTORY}
 | |
| 		chown dirsrv: ${LOCK_DIRECTORY}/${instance}
 | |
| 		ebegin "Starting 389 Directory Server: instance ${instance}"
 | |
| 		start-stop-daemon --start --quiet -m \
 | |
| 			--pidfile ${PID_DIRECTORY}/${instance}.startpid \
 | |
| 			--exec ${DIRSRV_EXEC} -- -D ${DIRSRV_CONF_DIR}/${instance} \
 | |
| 			-i ${PID_DIRECTORY}/${instance}.pid \
 | |
| 			-w ${PID_DIRECTORY}/${instance}.startpid
 | |
| 		sts=${?}
 | |
| 		eend ${sts}
 | |
| 		if [ "${sts}" != "0" ]; then
 | |
| 			return 1
 | |
| 		fi
 | |
| 	done
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| stop() {
 | |
| 	checkconfig || return 1
 | |
| 
 | |
| 	for instance in ${DS_INSTANCES}; do
 | |
| 		instance=$(basename ${instance})
 | |
| 		if [ "${instance%%.removed}" != "${instance}" ]; then
 | |
| 			continue
 | |
| 		fi
 | |
| 		ebegin "Stopping 389 Directory Server: instance ${instance}"
 | |
| 		start-stop-daemon --stop --quiet \
 | |
| 			--pidfile ${PID_DIRECTORY}/${instance}.pid \
 | |
| 			--exec ${DIRSRV_EXEC}
 | |
| 		eend ${?}
 | |
| 	done
 | |
| }
 | |
| 
 | |
| status() {
 | |
| 	for instance in ${DS_INSTANCES}; do
 | |
| 		instance=$(basename ${instance})
 | |
| 		if [ "${instance%%.removed}" != "${instance}" ]; then
 | |
| 			continue
 | |
| 		fi
 | |
| 		if [ -e ${PID_DIRECTORY}/${instance}.pid ]; then
 | |
| 			pid=$(cat ${PID_DIRECTORY}/${instance}.pid)
 | |
| 			if [ $(echo "$pid" | grep -c $pid) -ge 1 ]; then
 | |
| 				einfo "389 Directory Server: instance ${instance} (pid $pid) running."
 | |
| 			else
 | |
| 				ewarn "389 Directory Server: instance ${instance} (pid $pid) NOT running."
 | |
| 			fi
 | |
| 		else
 | |
| 			eerror "389 Directory Server: instance ${instance} is NOT running."
 | |
| 		fi
 | |
| 	done
 | |
| }
 |