78 lines
2.7 KiB
Bash
78 lines
2.7 KiB
Bash
#!/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
|