crowdsec/test/lib/init/crowdsec-daemon
mmetc a19748ae35
Rename directory "tests" to "test" (#2094)
If you use a ./test/local directory, you need to create it again:
$ make clean bats-build bats-fixture
2023-03-03 15:54:49 +01:00

81 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
set -eu
script_name=$0
die() {
echo >&2 "$@"
exit 1
}
about() {
die "usage: ${script_name} [ start | stop ]"
}
#shellcheck disable=SC1007
THIS_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
cd "${THIS_DIR}"/../../
#shellcheck disable=SC1091
. ./.environment.sh
# you have not removed set -u above, have you?
[[ -z "${CROWDSEC-}" ]] && die "\$CROWDSEC must be defined."
[[ -z "${LOG_DIR-}" ]] && die "\$LOG_DIR must be defined."
[[ -z "${PID_DIR-}" ]] && die "\$PID_DIR must be defined."
if [[ ! -f "${CROWDSEC}" ]]; then
die "${CROWDSEC} is missing. Please build (with 'make bats-build') or install it."
fi
DAEMON_PID=${PID_DIR}/crowdsec.pid
start() {
daemonize \
-p "${DAEMON_PID}" \
-e "${LOG_DIR}/crowdsec.err" \
-o "${LOG_DIR}/crowdsec.out" \
"${CROWDSEC}"
./bin/wait-for-port 6060
}
start_pid() {
start
cat "$DAEMON_PID"
}
stop() {
if [[ -f "${DAEMON_PID}" ]]; then
# terminate quickly with extreme prejudice, all the application data will be
# thrown away anyway. also terminate the child processes (notification plugin).
PGID="$(ps -o pgid= -p "$(cat "${DAEMON_PID}")" | tr -d ' ')"
# ps above should work on linux, freebsd, busybox..
if [[ -n "${PGID}" ]]; then
kill -- "-${PGID}"
fi
rm -f -- "${DAEMON_PID}"
fi
}
# ---------------------------
[[ $# -lt 1 ]] && about
case "$1" in
start)
start
;;
start-pid)
start_pid
;;
stop)
stop
;;
*)
about
;;
esac;