| #!/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 |
| } |