diff --git a/VERSION b/VERSION index 77fee73..d615fd0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.3 +1.9.4 diff --git a/VERSIONS.md b/VERSIONS.md index 253f9b3..4a9b77a 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -17,6 +17,7 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre | Tag | Date (UTC) | Notes | |-----|------------|--------| +| **v1.9.4** | 2026-07-19 | **Fix:** restore **taler-monitoring-aptdeploy(+_err)** as first-class GOA mon page (catalog + monpages path allow + surface docs). Mail/mattermost stay folded into surface. | | **v1.9.3** | 2026-07-19 | **Bugfix (suite):** monpages merchant **code 21** always ERROR (bare no longer soft-WARN); apply hints use absolute `/home/hernani/koopa-caddy/…`; ship `host-agent/apply-monitoring-live.sh` (smoke array, bare check); fix ROOT-ON-KOOPA wrong `redir /path/ 302` examples. | | **v1.9.2** | 2026-07-19 | **Bugfix:** Caddy bare-path redir footgun — inside `handle` use `redir * /path/ 302` (not `redir /path/ 302`, which becomes `Location: 302` and bare URLs fall through to merchant **code 21**). Snippet + ROOT-APPLY: absolute apply path (`/home/hernani/koopa-caddy/…`, not `~` as root). | | **v1.9.1** | 2026-07-19 | **Bugfix:** stale path confusions in repo — sticky `pages_i3` no longer lists mail/mattermost/aptdeploy mon pages; lib.sh/android-test drop `scripts/taler-monitoring/`; monpages/host-agent hints match v1.8 layout; clarify GIT vs GUI vs CLI `*AUTOMATION-NOTES.md` (three files by design). | diff --git a/check_monitoring_pages.sh b/check_monitoring_pages.sh index 0f7b740..35b7314 100755 --- a/check_monitoring_pages.sh +++ b/check_monitoring_pages.sh @@ -99,16 +99,17 @@ _host_allowed() { esac } -# Public page layout (v1.8.0+ simplified): +# Public page layout (v1.9.4+): # • 9 landing stacks → /monitoring/ (+ /monitoring_err/ when present) -# • ecosystem software/versions inventory → only -# https://taler.hacktivism.ch/taler-monitoring-surface/ -# https://taler.hacktivism.ch/taler-monitoring-surface_err/ -# Legacy /taler-monitoring-{mail,mattermost,aptdeploy}* are NOT first-class pages. +# • ecosystem software/versions → taler.hacktivism.ch/taler-monitoring-surface(+_err)/ +# • apt-src deploy tests → taler.hacktivism.ch/taler-monitoring-aptdeploy(+_err)/ +# Legacy /taler-monitoring-{mail,mattermost}* stay folded into surface (no first-class pages). _path_allowed() { case "$1" in - monitoring|monitoring_err|taler-monitoring-surface|taler-monitoring-surface_err) return 0 ;; + monitoring|monitoring_err|\ + taler-monitoring-surface|taler-monitoring-surface_err|\ + taler-monitoring-aptdeploy|taler-monitoring-aptdeploy_err) return 0 ;; *) return 1 ;; esac } @@ -147,8 +148,9 @@ _catalog_urls() { for h in bank.hacktivism.ch exchange.hacktivism.ch taler.hacktivism.ch; do printf 'https://%s/monitoring/\n' "$h" done - # ecosystem surface only (versions / software found in Taler universe) + # ecosystem surface (versions / software) + apt-src deploy mon page printf 'https://taler.hacktivism.ch/taler-monitoring-surface/\n' + printf 'https://taler.hacktivism.ch/taler-monitoring-aptdeploy/\n' ;; fp) for h in $MON_HOSTS; do @@ -158,12 +160,13 @@ _catalog_urls() { done ;; all|nine) - # optional: all nine landings + surface + # optional: all nine landings + surface + aptdeploy while IFS= read -r h; do [ -n "$h" ] || continue printf 'https://%s/monitoring/\n' "$h" done < <(_landing_nine) printf 'https://taler.hacktivism.ch/taler-monitoring-surface/\n' + printf 'https://taler.hacktivism.ch/taler-monitoring-aptdeploy/\n' ;; esac } @@ -192,15 +195,16 @@ build_urls() { case "$inv" in job) _job_urls - # v1.9.0: normal GOA runs always require surface page (content-checked) + # GOA: always require surface + aptdeploy pages (content-checked) if [ "$fam" = "goa" ]; then printf 'https://taler.hacktivism.ch/taler-monitoring-surface/\n' + printf 'https://taler.hacktivism.ch/taler-monitoring-aptdeploy/\n' fi ;; full|auto|*) # Always include this job’s paths (host-agent post-check). _job_urls - # Stack inventory: GOA = landings + surface; FP = only FP mon hosts. + # Stack inventory: GOA = landings + surface + aptdeploy; FP = only FP mon hosts. if [ "$fam" = "goa" ] || [ "$fam" = "fp" ]; then _catalog_urls "$fam" # On-disk discovery (err pages only exist after failed runs; extras welcome) @@ -489,7 +493,7 @@ if [ "$ec" -ne 0 ]; then echo " FP: only FP mon hosts are checked — wire Infomaniak vhost for /monitoring*" fi if [ "$_fam" = "goa" ]; then - echo " GOA: bank/exchange/taler /monitoring/ + taler-monitoring-surface (v1.8+ layout)" + echo " GOA: bank/exchange/taler /monitoring/ + surface + aptdeploy (v1.9.4+ layout)" fi # Staging vs public diagnosis (host-agent sets MONPAGES_STAGING_BASE / HTML_OUT) _stg="${MONPAGES_STAGING_BASE:-${HTML_OUT:-${HTML_BASE:-$HOME/monitoring-sites-staging}}}" diff --git a/host-agent/run-surface-monitoring.sh b/host-agent/run-surface-monitoring.sh index f760565..04fbc02 100755 --- a/host-agent/run-surface-monitoring.sh +++ b/host-agent/run-surface-monitoring.sh @@ -5,9 +5,11 @@ # https://taler.hacktivism.ch/taler-monitoring-surface/ # https://taler.hacktivism.ch/taler-monitoring-surface_err/ # -# This single page covers remote ecosystem inventory: host/port probes, nmap OS +# This page covers remote ecosystem inventory: host/port probes, nmap OS # fingerprint, Mattermost, mail (firefly + anastasis), package/version signals. -# There are NO separate public pages for mail / mattermost / aptdeploy. +# There are NO separate public pages for mail / mattermost (folded here). +# Apt-src deploy tests keep their own page + timer: +# run-aptdeploy-monitoring.sh → /taler-monitoring-aptdeploy(+_err)/ # # Landing-stack reports stay on each of the 9 fronts as /monitoring(/_err). # diff --git a/site-gen/console_to_html.py b/site-gen/console_to_html.py index 867f17f..f708d31 100755 --- a/site-gen/console_to_html.py +++ b/site-gen/console_to_html.py @@ -69,7 +69,7 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_summary": "Public sticky-bar reports · phase monpages · part of taler-monitoring", "pages_i1": "These HTML reports are generated by taler-monitoring (site-gen/console_to_html.py + host-agent)", "pages_i2": "Landing stacks (9): /monitoring(+_err)/ on bank/exchange/merchant fronts (GOA + FP stage + FP prod)", - "pages_i3": "Ecosystem page only: https://taler.hacktivism.ch/taler-monitoring-surface(+_err)/ — no separate mail/mattermost mon pages", + "pages_i3": "GOA: /monitoring/ on bank+exchange+taler; surface + aptdeploy on taler.hacktivism.ch — mail/mattermost folded into surface", "pages_i4": "Phase monpages: outside-in check (existence + top/bottom content markers; not merchant JSON code 21)", "pages_i5": "Host-agent: staging → DEPLOY_WWW_ROOT; reverse-proxy must serve /monitoring* and /taler-monitoring-surface*", "pages_i6": "This page host: {host} · path label: {label}", @@ -141,7 +141,7 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_summary": "Rapports publics sticky-bar · phase monpages · partie de taler-monitoring", "pages_i1": "Ces rapports HTML sont générés par taler-monitoring (site-gen/console_to_html.py + host-agent)", "pages_i2": "Piles landing (9) : /monitoring(+_err)/ sur bank/exchange/merchant (GOA + FP stage + FP prod)", - "pages_i3": "Page écosystème seule : https://taler.hacktivism.ch/taler-monitoring-surface(+_err)/ — pas de pages mail/mattermost séparées", + "pages_i3": "GOA : /monitoring/ bank+exchange+taler ; surface + aptdeploy sur taler.hacktivism.ch — mail/mattermost dans surface", "pages_i4": "Phase monpages : existence + marqueurs haut/bas (pas JSON merchant code 21)", "pages_i5": "Host-agent : staging → DEPLOY_WWW_ROOT ; le reverse-proxy sert /monitoring* et /taler-monitoring-surface*", "pages_i6": "Hôte de cette page : {host} · libellé : {label}",