63 lines
1.9 KiB
Bash
Executable File
63 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
HOST="${1:-192.168.0.188}"
|
|
PORT="${2:-3108}"
|
|
PUBLIC_HOST="${3:-2026fifa.wooo.work}"
|
|
|
|
normalize_host() {
|
|
local host="$1"
|
|
if [[ "$host" == http://* ]] || [[ "$host" == https://* ]]; then
|
|
printf '%s' "$host"
|
|
return
|
|
fi
|
|
printf 'https://%s' "$host"
|
|
}
|
|
|
|
PUBLIC_URL="$(normalize_host "$PUBLIC_HOST")"
|
|
[[ "$PUBLIC_URL" == */ ]] && PUBLIC_URL="${PUBLIC_URL%/}"
|
|
PUBLIC_URL="${PUBLIC_URL}/api/health"
|
|
INTERNAL_URL="http://${HOST}:${PORT}/api/health"
|
|
|
|
echo "[health] check public=${PUBLIC_URL}"
|
|
echo "[health] check internal=${INTERNAL_URL} (fallback)"
|
|
for i in {1..30}; do
|
|
if command -v jq >/dev/null 2>&1; then
|
|
data=""
|
|
if resp="$(curl -sS --max-time 6 "${PUBLIC_URL}")" && echo "${resp}" | jq -e '.status' >/dev/null 2>&1; then
|
|
data="${resp}"
|
|
elif resp="$(curl -sS --max-time 6 "${INTERNAL_URL}")" && echo "${resp}" | jq -e '.status' >/dev/null 2>&1; then
|
|
data="${resp}"
|
|
fi
|
|
|
|
if [[ -z "${data}" ]]; then
|
|
sleep 4
|
|
continue
|
|
fi
|
|
status="$(echo "${data}" | jq -r '.status')"
|
|
count="$(echo "${data}" | jq -r '.matchCount')"
|
|
publicOrigin="$(echo "${data}" | jq -r '.publicOrigin // "-"')"
|
|
tz="$(echo "${data}" | jq -r '.timeZone // "unknown"')"
|
|
updated="$(echo "${data}" | jq -r '.lastUpdatedTaipei // "-"')"
|
|
echo "[health] #${i} status=${status} matches=${count} public=${publicOrigin} timezone=${tz} updated=${updated}"
|
|
if [[ "${status}" == "ready" && "${count}" != "0" ]]; then
|
|
echo "[health] production api ready"
|
|
exit 0
|
|
fi
|
|
else
|
|
code="$(curl -o /dev/null -sS --max-time 6 -w '%{http_code}' "${PUBLIC_URL}")"
|
|
if [[ "${code}" != "200" ]]; then
|
|
code="$(curl -o /dev/null -sS --max-time 6 -w '%{http_code}' "${INTERNAL_URL}")"
|
|
fi
|
|
echo "[health] #${i} http=${code}"
|
|
if [[ "${code}" == "200" ]]; then
|
|
echo "[health] production endpoint returns ok"
|
|
exit 0
|
|
fi
|
|
fi
|
|
sleep 4
|
|
done
|
|
|
|
echo "[health] ERROR: not healthy"
|
|
exit 1
|