#!/bin/bash
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
# shellcheck source=/dev/null
if [[ true != "${INIT_D_SCRIPT_SOURCED}" ]]; then
  set "${0}" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:           apache-htcacheclean
# Required-Start:     $remote_fs $syslog
# Required-Stop:      $remote_fs $syslog
# Default-Start:      2 3 4 5
# Default-Stop:       0 1 6
# Short-Description:  Cache cleaner process for Apache2 web server
# Description:        Start the htcacheclean helper
# This script will start htcacheclean which will periodically scan the
# cache directory of Apache2's mod_cache_disk and remove outdated files.
### END INIT INFO

DESC="Apache htcacheclean"
DAEMON=/usr/bin/htcacheclean

NAME="${0##*/}"
NAME="${NAME##[KS][0-9][0-9]}"
DIR_SUFFIX="${NAME##apache-htcacheclean}"
APACHE_CONFDIR="${APACHE_CONFDIR:=/etc/apache2${DIR_SUFFIX}}"
# shellcheck source=/dev/null
RUN_USER=$( . "${APACHE_CONFDIR}/envvars" > /dev/null && echo "${APACHE_RUN_USER}" )

# Default values. Edit /etc/default/apache-htcacheclean$DIR_SUFFIX to change these.
HTCACHECLEAN_SIZE="${HTCACHECLEAN_SIZE:=300M}"
HTCACHECLEAN_DAEMON_INTERVAL="${HTCACHECLEAN_DAEMON_INTERVAL:=120}"
HTCACHECLEAN_PATH="${HTCACHECLEAN_PATH:=/var/cache/apache2${DIR_SUFFIX}/mod_cache_disk}"
HTCACHECLEAN_OPTIONS="${HTCACHECLEAN_OPTIONS:=-n}"

# Read configuration variable file if it is present.
if [[ -f "/etc/default/apache-htcacheclean${DIR_SUFFIX}" ]]; then
  # shellcheck source=/dev/null
  . "/etc/default/apache-htcacheclean${DIR_SUFFIX}"
elif [[ -f /etc/default/apache-htcacheclean ]]; then
  # shellcheck source=/dev/null
  . /etc/default/apache-htcacheclean
fi

PIDDIR="/var/run/apache2/${RUN_USER}"
PIDFILE="${PIDDIR}/${NAME}.pid"
DAEMON_ARGS="${HTCACHECLEAN_OPTIONS} \
  -d${HTCACHECLEAN_DAEMON_INTERVAL} \
  -P${PIDFILE} -i \
  -p${HTCACHECLEAN_PATH} \
  -l${HTCACHECLEAN_SIZE}"

do_start_prepare() {
  if [[ ! -d "${PIDDIR}" ]]; then
    mkdir -p "${PIDDIR}"
    chown "${RUN_USER}:" "${PIDDIR}"
  fi
  if [[ ! -d "${HTCACHECLEAN_PATH}" ]]; then
    echo "Directory ${HTCACHECLEAN_PATH} does not exist!" >&2
    exit 2
  fi
}

do_start_cmd_override() {
  start-stop-daemon --start --quiet --pidfile "${PIDFILE}" \
    -u "${RUN_USER}" --startas ${DAEMON} --name htcacheclean --test > /dev/null \
    || return 1
  start-stop-daemon --start --quiet --pidfile "${PIDFILE}" \
    -c "${RUN_USER}" --startas ${DAEMON} --name htcacheclean -- "${DAEMON_ARGS}" \
    || return 2
}

do_stop_cmd_override() {
  start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
    -u "${RUN_USER}" --pidfile "${PIDFILE}" --name htcacheclean
}
