83 lines
2.0 KiB
Bash
83 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
CLIENT_ENV_FILE="${ROOT_DIR}/deploy/client/.env"
|
|
MODE="${RPKI_RTR_CLIENT_MODE:-tcp}"
|
|
COMPOSE_PROJECT="${RPKI_RTR_CLIENT_COMPOSE_PROJECT:-rpki-rtr-client}"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage: scripts/12_shutdown_client.sh [options]
|
|
|
|
Stop the RTR debug client started by scripts/11_start_client.sh.
|
|
|
|
Options:
|
|
--mode MODE Client mode: tcp|tls|ssh. Default: tcp
|
|
-h, --help Show this help.
|
|
EOF
|
|
}
|
|
|
|
log() {
|
|
printf '[12_shutdown_client] %s\n' "$*" >&2
|
|
}
|
|
|
|
stage() {
|
|
printf '\n====== %s ======\n' "$*" >&2
|
|
}
|
|
|
|
die() {
|
|
printf '[12_shutdown_client] ERROR: %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
compose_file_for_mode() {
|
|
case "$1" in
|
|
tcp) printf '%s\n' "${ROOT_DIR}/deploy/client/docker-compose.tcp.yml" ;;
|
|
tls) printf '%s\n' "${ROOT_DIR}/deploy/client/docker-compose.tls.yml" ;;
|
|
ssh) printf '%s\n' "${ROOT_DIR}/deploy/client/docker-compose.ssh.yml" ;;
|
|
*) die "unsupported mode '$1', expected tcp|tls|ssh" ;;
|
|
esac
|
|
}
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
--mode)
|
|
[ "$#" -ge 2 ] || die "--mode requires a value"
|
|
MODE="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
die "unknown option: $1"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
CLIENT_COMPOSE_FILE="$(compose_file_for_mode "${MODE}")"
|
|
|
|
stage "Checking Docker"
|
|
command -v docker >/dev/null 2>&1 || die "docker command not found"
|
|
if docker compose version >/dev/null 2>&1; then
|
|
COMPOSE_BIN=(docker compose)
|
|
elif command -v docker-compose >/dev/null 2>&1 && docker-compose version >/dev/null 2>&1; then
|
|
COMPOSE_BIN=(docker-compose)
|
|
else
|
|
die "docker compose is not available"
|
|
fi
|
|
|
|
stage "Stopping RTR Debug Client"
|
|
log "mode: ${MODE}"
|
|
if [ -f "${CLIENT_ENV_FILE}" ] && [ -f "${CLIENT_COMPOSE_FILE}" ]; then
|
|
"${COMPOSE_BIN[@]}" --env-file "${CLIENT_ENV_FILE}" -p "${COMPOSE_PROJECT}" -f "${CLIENT_COMPOSE_FILE}" down --remove-orphans
|
|
else
|
|
log "client compose/env not found, skip"
|
|
fi
|
|
|
|
stage "Client Shutdown Finished"
|