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
 | 
						|
}
 |