88 lines
2.7 KiB
Bash
Executable file
88 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# Health check for manual taler-exchange (same style as check_merchant-health.sh).
|
|
# Runnable as taler-exchange-httpd (or any user that can see processes + curl localhost).
|
|
|
|
CONF=/etc/taler-exchange/taler-exchange.conf
|
|
SOCK=/run/taler-exchange/httpd/exchange-http.sock
|
|
|
|
green() { echo -e "\e[32m$1\e[0m"; }
|
|
red() { echo -e "\e[31m$1\e[0m"; }
|
|
yellow() { echo -e "\e[33m$1\e[0m"; }
|
|
|
|
fail=0
|
|
ok() { green "[OK] $1"; }
|
|
bad() { red "[FAIL] $1"; fail=1; }
|
|
warn() { yellow "[WARN] $1"; }
|
|
|
|
echo "=== Taler Exchange Health Check ==="
|
|
|
|
# 1. secmods (started by root base script)
|
|
for p in taler-exchange-secmod-rsa taler-exchange-secmod-cs taler-exchange-secmod-eddsa; do
|
|
if pgrep -f "$p" >/dev/null 2>&1; then
|
|
ok "process $p"
|
|
else
|
|
bad "process $p not running"
|
|
fi
|
|
done
|
|
|
|
# 2. httpd
|
|
if pgrep -f taler-exchange-httpd >/dev/null 2>&1; then
|
|
ok "process taler-exchange-httpd"
|
|
else
|
|
bad "process taler-exchange-httpd is NOT running"
|
|
fi
|
|
|
|
# 3. serving mode
|
|
SERVE=$(taler-exchange-config -c "$CONF" -s exchange -o SERVE 2>/dev/null || echo unix)
|
|
PORT=$(taler-exchange-config -c "$CONF" -s exchange -o PORT 2>/dev/null || echo 9011)
|
|
|
|
if [ "$SERVE" = "tcp" ]; then
|
|
if curl -sf -m 3 "http://127.0.0.1:${PORT}/config" >/dev/null 2>&1; then
|
|
ok "HTTP /config on 127.0.0.1:${PORT}"
|
|
elif curl -sf -m 3 "http://127.0.0.1:${PORT}/keys" >/dev/null 2>&1; then
|
|
ok "HTTP /keys on 127.0.0.1:${PORT}"
|
|
else
|
|
bad "no HTTP response on 127.0.0.1:${PORT} (/config|/keys)"
|
|
fi
|
|
else
|
|
if [ -S "$SOCK" ]; then
|
|
ok "socket $SOCK"
|
|
else
|
|
bad "socket does NOT exist: $SOCK"
|
|
fi
|
|
fi
|
|
|
|
# 4. wire helpers — ensure (no systemd) then require
|
|
if [ "${SKIP_ENSURE:-0}" != "1" ]; then
|
|
if [ -x /usr/local/bin/ensure_exchange_helpers.sh ]; then
|
|
echo "--- ensure_exchange_helpers ---"
|
|
/usr/local/bin/ensure_exchange_helpers.sh || warn "ensure_exchange_helpers exited non-zero"
|
|
elif [ -x "$(dirname "$0")/ensure_exchange_helpers.sh" ]; then
|
|
echo "--- ensure_exchange_helpers ---"
|
|
"$(dirname "$0")/ensure_exchange_helpers.sh" || warn "ensure_exchange_helpers exited non-zero"
|
|
elif [ -x /root/ensure_exchange_helpers.sh ]; then
|
|
echo "--- ensure_exchange_helpers ---"
|
|
/root/ensure_exchange_helpers.sh || warn "ensure_exchange_helpers exited non-zero"
|
|
fi
|
|
fi
|
|
|
|
live_helper() {
|
|
local p="$1"
|
|
# COMM is 15 chars; use full cmdline match
|
|
pgrep -f "(^|/)(${p})( |$)" >/dev/null 2>&1
|
|
}
|
|
|
|
for p in taler-exchange-aggregator taler-exchange-wirewatch taler-exchange-transfer taler-exchange-closer; do
|
|
if live_helper "$p"; then
|
|
ok "process $p"
|
|
else
|
|
bad "process $p not running (settlement needs transfer+aggregator)"
|
|
fi
|
|
done
|
|
|
|
if [ "$fail" -eq 0 ]; then
|
|
green "=== ALL CRITICAL CHECKS PASSED ==="
|
|
exit 0
|
|
fi
|
|
red "=== SOME CHECKS FAILED ==="
|
|
exit 1
|