
If you use a ./test/local directory, you need to create it again: $ make clean bats-build bats-fixture
80 lines
1.6 KiB
Bash
Executable file
80 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;
|
|
|