blob: 45420ea4c38ddf6d3e610a38e4f3961603aaf6af [file] [log] [blame]
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
opts="configdump configtest fullstatus graceful gracefulstop modules reload"
depend() {
need net 389-ds
use mysql dns logger netmount postgresql
after sshd
}
configtest() {
ebegin "Checking Apache Configuration of 389 Directory Server Admin"
checkconfig
eend ${?}
}
checkconfd() {
PIDFILE="${PIDFILE:-/var/run/dirsrv/admin-serv.pid}"
TIMEOUT=${TIMEOUT:-10}
SERVERROOT="${SERVERROOT:-/usr/lib/apache2}"
if [ ! -d ${SERVERROOT} ]; then
eerror "SERVERROOT does not exist: ${SERVERROOT}"
return 1
fi
CONFIGFILE="${CONFIGFILE:-/etc/dirsrv/admin-serv/httpd.conf}"
[ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}"
if [ ! -r "${CONFIGFILE}" ]; then
eerror "Unable to read configuration file: ${CONFIGFILE}"
return 1
fi
APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}"
APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}"
[ -n "${STARTUPERRORLOG}" ] && APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}"
APACHE2="/usr/sbin/apache2"
}
checkconfig() {
checkconfd || return 1
${APACHE2} ${APACHE2_OPTS} -t 1>/dev/null 2>&1
ret=${?}
if [ $ret -ne 0 ]; then
eerror "389 Directory Server Admin (Apache2) has detected a syntax error in your configuration files:"
${APACHE2} ${APACHE2_OPTS} -t
fi
return $ret
}
start() {
checkconfig || return 1
[ -f /var/log/dirsrv/admin-serv/ssl_scache ] && rm /var/log/dirsrv/admin-serv/ssl_scache
ebegin "Starting 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k start
[ "${?}" != "0" ] && eend "${?}" && return 1
let i=0
while [ ! -e "${PIDFILE}" ] && [ $i -lt ${TIMEOUT} ]; do
sleep 1 && let i++
done
test $i -le ${TIMEOUT}
eend ${?}
}
stop() {
checkconfd || return 1
ebegin "Stopping 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k stop
let i=0
while pidof "${APACHE2}" >/dev/null && [ $i -lt ${TIMEOUT} ]; do
sleep 1 && let i++
done
test $i -le ${TIMEOUT}
eend ${?}
}
reload() {
RELOAD_TYPE="${RELOAD_TYPE:-graceful}"
checkconfig || return 1
service_started "${SVCNAME}" || return
if [ "${RELOAD_TYPE}" = "restart" ]; then
ebegin "Restarting 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k restart
eend ${?}
elif [ "${RELOAD_TYPE}" = "graceful" ]; then
ebegin "Gracefully restarting 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k graceful
eend ${?}
else
eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/dirsrv-admin"
fi
}
graceful() {
checkconfig || return 1
service_started "${SVCNAME}" || return
ebegin "Gracefully restarting 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k graceful
eend ${?}
}
gracefulstop() {
checkconfig || return 1
# zap!
if service_started "${SVCNAME}"; then
mark_service_stopped "${SVCNAME}"
fi
ebegin "Gracefully stopping 389 Directory Server Admin (apache2)"
${APACHE2} ${APACHE2_OPTS} -k graceful-stop
eend ${?}
}
modules() {
checkconfig || return 1
${APACHE2} ${APACHE2_OPTS} -M 2>&1
}
fullstatus() {
LYNX="${LYNX:-lynx -dump}"
STATUSURL="${STATUSURL:-http://localhost/server-status}"
if ! service_started "${SVCNAME}"; then
eerror "${SVCNAME} not started"
elif ! type -p ${LYNX} 2>&1 >/dev/null; then
eerror "lynx not found! you need to emerge www-client/lynx"
else
${LYNX} ${STATUSURL}
fi
}
configdump() {
LYNX="${LYNX:-lynx -dump}"
INFOURL="${INFOURL:-http://localhost/server-info}"
checkconfd || return 1
if ! service_started "${SVCNAME}"; then
eerror "${SVCNAME} not started"
else
echo "${APACHE2} started with '${APACHE2_OPTS}'"
for i in config server list; do
${LYNX} "${INFOURL}/?${i}" | sed '/Apache Server Information/d;/^[[:space:]]\+[_]\+$/Q'
done
fi
}