diff --git a/VERSION b/VERSION index 785cda8..8c9698a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.3 \ No newline at end of file +1.3.4 \ No newline at end of file diff --git a/VERSIONS.md b/VERSIONS.md index 8f3870c..2412e13 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -5,6 +5,7 @@ Release history for the standalone **taler-monitoring** suite | Tag | Date (UTC) | Notes | |-----|------------|--------| +| **v1.3.4** | 2026-07-18 | **Bugfix:** summary line printed raw `$(i18n_text …)` instead of message; aptdeploy remote rsync path `src/src/…`; monpages detects merchant code 21 on any HTTP status + checks bare URLs (no trailing slash); host-agent logs expected public FQDNs. | | **v1.3.3** | 2026-07-18 | **Docs/fix:** `VERSIONS.md` is git/suite only (no Android blob, no dead `koopa-admin-log` cadence paths); Android stays in `android-test/GUI-AUTOMATION-NOTES.md`. monpages in TESTS; README/host-agent/DEPENDENCIES cleanup. | | **v1.3.2** | 2026-07-18 | **Bugfix:** drop remaining `koopa-admin-log` suite paths — host-agent/install, path unit, aptdeploy dedupe use **only** `~/src/taler-monitoring`. Reinstall systemd units. | | **v1.4.0** | *planned* | **L10n** for user-facing outputs that need localization: **fr-CH** (FrancPaysan, Suisse romande) and **de-CH** (hacktivism / Taler CH German). Not implemented yet — after **1.3.x**. | @@ -54,5 +55,5 @@ sudo ~/koopa-caddy/apply-monitoring-live.sh ```bash git clone https://git.hacktivism.ch/hernani/taler-monitoring.git ~/src/taler-monitoring -cd ~/src/taler-monitoring && git checkout v1.3.3 +cd ~/src/taler-monitoring && git checkout v1.3.4 ``` diff --git a/check_monitoring_pages.sh b/check_monitoring_pages.sh index 05b48d2..cbf7f19 100755 --- a/check_monitoring_pages.sh +++ b/check_monitoring_pages.sh @@ -104,14 +104,15 @@ check_one() { local body code hint body=$(mktemp) code=$(curl -skS -L --max-redirs 5 -m "${TIMEOUT}" -o "$body" -w '%{http_code}' "$url" 2>/dev/null || echo 000) - if [ "$code" != "200" ]; then - fail "public mon page" "$url -> HTTP $code (want 200 HTML)" + if grep -qE '"code"[[:space:]]*:[[:space:]]*21' "$body" 2>/dev/null \ + || grep -qiE 'There is no endpoint defined for the URL' "$body" 2>/dev/null; then + fail "public mon page missing" \ + "$url -> HTTP $code merchant/API JSON code 21 (Caddy handle not live — sudo ~/koopa-caddy/apply-monitoring-live.sh)" rm -f "$body" return 1 fi - if grep -qE '"code"[[:space:]]*:[[:space:]]*21' "$body" 2>/dev/null; then - fail "public mon page missing" \ - "$url -> merchant/API JSON code 21 (Caddy handle not live or not published — sudo apply-monitoring-live.sh)" + if [ "$code" != "200" ]; then + fail "public mon page" "$url -> HTTP $code (want 200 HTML)" rm -f "$body" return 1 fi @@ -142,6 +143,22 @@ while IFS= read -r line; do URLS+=("$line") done < <(build_urls) +# also check non-trailing-slash forms (Caddy redir or merchant fallthrough) +_extra=() +for u in "${URLS[@]}"; do + case "$u" in + */) _bare=${u%/}; [ -n "$_bare" ] && _extra+=("$_bare") ;; + esac +done +for u in "${_extra[@]+"${_extra[@]}"}"; do + skip=0 + for e in "${URLS[@]+"${URLS[@]}"}"; do + [ "$e" = "$u" ] && skip=1 && break + done + [ "$skip" = "1" ] && continue + URLS+=("$u") +done + if [ "${#URLS[@]}" -eq 0 ]; then fail "monpages" "no URLs to check (set MON_HOSTS or MONITORING_PAGE_URLS)" exit 1 diff --git a/host-agent/run-aptdeploy.sh b/host-agent/run-aptdeploy.sh index 3286379..246d699 100755 --- a/host-agent/run-aptdeploy.sh +++ b/host-agent/run-aptdeploy.sh @@ -114,7 +114,7 @@ run_local() { run_remote() { echo "======== aptdeploy remote via ssh ${APT_DEPLOY_SSH} mode=$MODE ========" if [ "${APT_DEPLOY_RSYNC:-1}" = "1" ]; then - echo "rsync mon suite → ${APT_DEPLOY_SSH}:src/src/taler-monitoring/" + echo "rsync mon suite → ${APT_DEPLOY_SSH}:src/taler-monitoring/" rsync -az \ --exclude secrets.env \ --exclude 'android-test/artifacts' \ @@ -122,7 +122,7 @@ run_remote() { --exclude 'android-test/out*' \ --exclude '__pycache__' \ "$BOOT_MON/" \ - "${APT_DEPLOY_SSH}:src/src/taler-monitoring/" \ + "${APT_DEPLOY_SSH}:src/taler-monitoring/" \ || echo "WARN: rsync failed" >&2 fi ssh -o BatchMode=yes -o ConnectTimeout=25 "$APT_DEPLOY_SSH" bash -s -- "$MODE" <<'EOS' diff --git a/host-agent/run-host-report.sh b/host-agent/run-host-report.sh index 389cd4c..ae4a79f 100755 --- a/host-agent/run-host-report.sh +++ b/host-agent/run-host-report.sh @@ -385,9 +385,10 @@ htmlify_host() { } for host in $MON_HOSTS; do htmlify_host "$host" + echo "public URL (expected): https://${host}${HTML_URL_OK}" done -# Publish to live web root when possible (v1.3.1: never silent-skip) +# Publish to live web root when possible (v1.3.1+: never silent-skip) if [ -n "$DEPLOY_WWW" ]; then if [ -w "$DEPLOY_WWW" ] 2>/dev/null; then if rsync -a --delete "$HTML_BASE/" "$DEPLOY_WWW/"; then diff --git a/lib.sh b/lib.sh index 27bbca0..1ae5b6a 100755 --- a/lib.sh +++ b/lib.sh @@ -878,10 +878,11 @@ summary() { printf -- ' %s[ WARN ] warnings only (no hard fail)%s\n' "$Y" "$N" fi else + _fail_msg=$(i18n_text 'failed — see list above') if [ "${BOX:-0}" = "1" ]; then - printf -- ' %s┌ ERROR ┐%s %s"$(i18n_text "failed — see list above")"%s\n' "$BG_ERR" "$N" "$R" "$N" + printf -- ' %s┌ ERROR ┐%s %s%s%s\n' "$BG_ERR" "$N" "$R" "$_fail_msg" "$N" else - printf -- ' %s[ ERROR ] "$(i18n_text "failed — see list above")"%s\n' "$R" "$N" + printf -- ' %s[ ERROR ] %s%s\n' "$R" "$_fail_msg" "$N" fi fi [ "$FAIL_N" -eq 0 ]