bank: landing-stats + install helpers; health/start

This commit is contained in:
Hernâni Marques 2026-07-09 14:25:35 +02:00
parent ef40149ed2
commit b903fb525b
No known key found for this signature in database
2 changed files with 645 additions and 0 deletions

View file

@ -0,0 +1,78 @@
#!/bin/bash
# Install + run landing-stats.sh *inside* the bank container, and optionally
# install a cron entry there. Documented in configs/bank-landing/README.md.
#
# Run on koopa host (root or user in podman group):
# ./landing-stats-install.sh # copy + one-shot run
# ./landing-stats-install.sh --cron # also install *minutely* cron inside container
# ./landing-stats-install.sh --run-only # only exec existing script
set -euo pipefail
DO_CRON=0
RUN_ONLY=0
# cron schedule (default: every minute)
: "${LANDING_STATS_CRON:=* * * * *}"
for a in "$@"; do
case "$a" in
--cron) DO_CRON=1 ;;
--run-only) RUN_ONLY=1 ;;
-h|--help)
sed -n '2,12p' "$0" | sed 's/^# \?//'
exit 0
;;
esac
done
ROOT=$(cd "$(dirname "$0")" && pwd)
SRC="$ROOT/landing-stats.sh"
[ -f "$SRC" ] || { echo "missing $SRC" >&2; exit 1; }
# Prefer the known names from ops docs
C=""
for name in taler-hacktivism-bank taler-bank-hacktivism; do
if podman ps --format '{{.Names}}' 2>/dev/null | grep -qx "$name"; then
C=$name
break
fi
done
if [ -z "$C" ]; then
C=$(podman ps --format '{{.Names}}' 2>/dev/null | grep -i bank | head -1 || true)
fi
[ -n "$C" ] || { echo "no bank container running" >&2; exit 1; }
echo "container=$C"
# Host password → container /root (if not already there)
if [ -f /root/bank-explorer-password.txt ]; then
podman cp /root/bank-explorer-password.txt "$C:/root/bank-explorer-password.txt" 2>/dev/null || true
fi
if [ "$RUN_ONLY" != "1" ]; then
podman exec "$C" mkdir -p /usr/local/bin /var/www/bank-landing
podman cp "$SRC" "$C:/usr/local/bin/landing-stats.sh"
podman exec "$C" chmod 755 /usr/local/bin/landing-stats.sh
echo "installed /usr/local/bin/landing-stats.sh"
fi
# Ensure landing dir exists for nginx intro
podman exec "$C" mkdir -p /var/www/bank-landing
echo "running landing-stats.sh inside $C"
podman exec \
-e LANDING_DIR=/var/www/bank-landing \
-e BANK_USER=explorer \
"$C" /usr/local/bin/landing-stats.sh
if [ "$DO_CRON" = "1" ]; then
# default: every minute (* * * * *); override with LANDING_STATS_CRON='*/5 * * * *'
podman exec -e LANDING_STATS_CRON="$LANDING_STATS_CRON" "$C" bash -c '
sched="${LANDING_STATS_CRON:-* * * * *}"
line="$sched TZ=Europe/Zurich LANDING_DIR=/var/www/bank-landing /usr/local/bin/landing-stats.sh >>/var/log/landing-stats.log 2>&1"
(crontab -l 2>/dev/null | grep -v landing-stats.sh; echo "$line") | crontab -
echo "cron installed:"; crontab -l | grep landing-stats
'
fi
echo "public check: curl -sS https://bank.hacktivism.ch/intro/stats.json | head"
# If host maps 9013 → container landing, show local file
podman exec "$C" head -c 400 /var/www/bank-landing/stats.json 2>/dev/null || true
echo