From ae6c94897dbd5bcccf50ae6cbe2d6c9bb6e3437f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A2ni=20Marques?= Date: Sun, 19 Jul 2026 00:50:37 +0200 Subject: [PATCH] release 1.9.1: fix stale mon-page docs and scripts/ paths --- VERSION | 2 +- VERSIONS.md | 5 ++- android-test/GUI-AUTOMATION-NOTES.md | 2 +- check_monitoring_pages.sh | 2 +- host-agent/README.md | 5 +-- lib.sh | 6 ++-- site-gen/console_to_html.py | 52 ++++++++++++++-------------- 7 files changed, 37 insertions(+), 37 deletions(-) diff --git a/VERSION b/VERSION index f8e233b..9ab8337 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.0 +1.9.1 diff --git a/VERSIONS.md b/VERSIONS.md index 18f12c7..e2047f8 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -17,12 +17,15 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre | Tag | Date (UTC) | Notes | |-----|------------|--------| +| **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). | | **v1.9.0** | 2026-07-19 | **monpages content:** ERROR if page missing or markers incomplete — top (sticky-bar/status-bar/generated) + bottom (footer/`taler-mon:bottom`); mid-run (progress <100% / incomplete meta) relaxes bottom only. Surface required on normal GOA runs with meaningful body (not progress-only). HTML emits `taler-mon:top` / `taler-mon:bottom:complete|incomplete`. | | **v1.8.0** | 2026-07-19 | **Simplified public pages:** only `/taler-monitoring-surface(+_err)` on `taler.hacktivism.ch` for ecosystem software/versions; **9 landing stacks** each keep `/monitoring(+_err)`. Mail (firefly.gnunet.org + anastasis.taler-systems.com) and Mattermost folded into surface job; separate mail/mattermost mon pages + timers deprecated. **nmap** OS fingerprinting on surface (`SURFACE_NMAP`); **ERROR** when packages are behind (`TALER_PKG_BEHIND=error` default) or OS fingerprint is EOL. | | **v1.8.1** | *planned* | **L10n** packs: **fr-CH** (FrancPaysan) and **de-CH** (hacktivism / Taler CH German). | | **v1.7.7** | 2026-07-18 | **domains:** stage mytops merchant FQDN is `stage.my.taler-ops.ch` (betel mon sites). | +| **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). | | **v1.9.0** | 2026-07-19 | **monpages content:** ERROR if page missing or markers incomplete — top (sticky-bar/status-bar/generated) + bottom (footer/`taler-mon:bottom`); mid-run (progress <100% / incomplete meta) relaxes bottom only. Surface required on normal GOA runs with meaningful body (not progress-only). HTML emits `taler-mon:top` / `taler-mon:bottom:complete|incomplete`. | | **v1.8.0** | 2026-07-18 | **monpages obligatory (ERROR):** GOA checks full suite inventory (bank/exchange/taler `/monitoring/` + surface/aptdeploy/mattermost/mail + on-disk discovery); FP only its own mon hosts; `MONPAGES_REQUIRE_PUBLIC=1` default (escape hatch `=0`). **Bugfix:** `with_timeout` no longer re-runs a phase when it exits non-zero. | +| **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). | | **v1.9.0** | 2026-07-19 | **monpages content:** ERROR if page missing or markers incomplete — top (sticky-bar/status-bar/generated) + bottom (footer/`taler-mon:bottom`); mid-run (progress <100% / incomplete meta) relaxes bottom only. Surface required on normal GOA runs with meaningful body (not progress-only). HTML emits `taler-mon:top` / `taler-mon:bottom:complete|incomplete`. | | **v1.8.0** | 2026-07-18 | **Bugfix:** monpages soft mode `MONPAGES_REQUIRE_PUBLIC=0` (FP wrappers default) — missing public HTML is WARN until vhost publish; generic publish hints. | | **v1.7.4** | 2026-07-18 | **Bugfix:** monpages bare URLs (`/monitoring` without `/`) WARN by default (trailing slash remains ERROR); avoids false red when slash form is live. | @@ -75,5 +78,5 @@ Full locale packs (fr-CH / de-CH): **v1.8.0** (planned). ```bash git clone https://git.hacktivism.ch/hernani/taler-monitoring.git ~/src/taler-monitoring -cd ~/src/taler-monitoring && git checkout v1.8.0 +cd ~/src/taler-monitoring && git checkout v1.9.1 ``` diff --git a/android-test/GUI-AUTOMATION-NOTES.md b/android-test/GUI-AUTOMATION-NOTES.md index f37992a..333179f 100644 --- a/android-test/GUI-AUTOMATION-NOTES.md +++ b/android-test/GUI-AUTOMATION-NOTES.md @@ -92,7 +92,7 @@ Host-CLI-Settlement. - iOS / Dual-Platform → andere Repos/Flags, nicht diese Skripte. ```bash -cd scripts/taler-monitoring/android-test +cd ~/src/taler-monitoring/android-test # Minimal hybrid (install + deep-link + light taps) STACK=goa ./run-android-pay-smoke.sh diff --git a/check_monitoring_pages.sh b/check_monitoring_pages.sh index b60facd..06001dd 100755 --- a/check_monitoring_pages.sh +++ b/check_monitoring_pages.sh @@ -491,7 +491,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: full inventory (bank/exchange/taler /monitoring/ + surface/aptdeploy/mattermost/mail)" + echo " GOA: bank/exchange/taler /monitoring/ + taler-monitoring-surface (v1.8+ 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/README.md b/host-agent/README.md index b6e978b..4ee1768 100644 --- a/host-agent/README.md +++ b/host-agent/README.md @@ -121,10 +121,7 @@ Units: | `taler-monitoring-hacktivism.service` | oneshot → `/monitoring*` (urls inside versions) | | `taler-monitoring-surface.timer` | every **1h** | | `taler-monitoring-surface.service` | → `/taler-monitoring-surface*` (taler only) | -| `taler-monitoring-mattermost.timer` | every **1h** | -| `taler-monitoring-mattermost.service` | → `/taler-monitoring-mattermost*` (mattermost.taler.net) | -| `taler-monitoring-mail.timer` | every **4h** | -| `taler-monitoring-mail.service` | → `/taler-monitoring-mail*` (firefly + pixel MX/SMTP/IMAP) | +| `taler-monitoring-mattermost.*` / `mail.*` | **disabled** (v1.8.0+); content via surface job | | `taler-monitoring-aptdeploy.timer` | every **4h** | | `taler-monitoring-aptdeploy.service` | → `/taler-monitoring-aptdeploy*` (taler only) | diff --git a/lib.sh b/lib.sh index bdd4887..7eb8e99 100755 --- a/lib.sh +++ b/lib.sh @@ -63,7 +63,7 @@ MERCHANT_PUBLIC=${MERCHANT_PUBLIC%/} # --------------------------------------------------------------------------- # Domain profiles → bank / exchange / merchant base URLs # -# Single place to declare a stack: scripts/taler-monitoring/domains.conf +# Single place to declare a stack: domains.conf (suite root) # (or TALER_DOMAINS_CONF). Each profile names the three public endpoints. # # CLI still wins after profile load: @@ -1226,8 +1226,8 @@ read_secret() { secrets_hint() { cat < str: "what_monitors": "What this monitors", "what_monitors_title": "Expand: what this page checks", "surface_title": "Remote ecosystem surface inventory", - "surface_summary": "Public catalog hosts · DNS / TCP / HTTPS / TLS · Server version · CVE", + "surface_summary": "Public catalog · DNS/TCP/HTTPS/TLS · nmap OS/service · versions · CVE", "surface_i1": "Outside-in only: no SSH and no podman exec on remote targets", - "surface_i2": "Catalog (surface-catalog.conf): taler.net, demo/test, gnunet.org, taler-ops.ch, taler-systems.com, deb.taler.net, ftp.gnu.org, …", - "surface_i3": "Per host: DNS resolve, ICMP (info), open ports, protocol probes, TLS cert expiry, Server-header software version, optional CVE check", - "surface_i4": "HTML published only on taler.hacktivism.ch (this page host: {host})", - "surface_i5": "Timer: taler-monitoring-surface.timer (hourly)", + "surface_i2": "Catalog (surface-catalog.conf): taler.net, demo/test, gnunet.org, taler-ops.ch, taler-systems.com, firefly, anastasis, …", + "surface_i3": "Per host: DNS, ports, protocol probes, TLS, Server-header version, nmap fingerprint (SURFACE_NMAP), optional CVE", + "surface_i4": "Also runs mattermost + mail (firefly.gnunet.org, anastasis.taler-systems.com) + versions into this single HTML page", + "surface_i5": "HTML only /taler-monitoring-surface(+_err)/ on taler.hacktivism.ch · timer hourly", "apt_title": "apt-src merchant deploy tests (podman on koopa)", "apt_summary": "4 containers · fresh + upgrade tracks · trixie & trixie-testing", "apt_i1": "koopa-taler-deploy-test-apt-src-trixie (fresh, suite trixie)", @@ -68,22 +68,22 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_title": "Monitoring pages (suite HTML)", "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": "Stack pages: /monitoring/ on bank, exchange, and merchant public hosts", - "pages_i3": "Suite pages on taler.hacktivism.ch: /taler-monitoring-surface/, /taler-monitoring-aptdeploy/, /taler-monitoring-mattermost/, /taler-monitoring-mail/", - "pages_i4": "Phase monpages: outside-in check that each public FQDN serves real suite HTML (not merchant JSON code 21)", - "pages_i5": "Host-agent publishes staging → DEPLOY_WWW_ROOT; Caddy must handle paths (see site-gen/caddy-monitoring-handles.snippet)", + "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_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}", "pages_section_lead": "Monitoring pages themselves (suite):", "mm_title": "Mattermost chat health", "mm_summary": "mattermost.taler.net · SPA + /api/v4/system/ping · TLS", "mm_i1": "Outside-in phase mattermost (default https://mattermost.taler.net)", "mm_i2": "Landing SPA, /api/v4/system/ping JSON, /login, TLS certificate expiry", - "mm_i3": "HTML on taler.hacktivism.ch /taler-monitoring-mattermost/", + "mm_i3": "Reported on taler-monitoring-surface HTML (no separate /taler-monitoring-mattermost* page)", "mail_title": "Mail (MX / SMTP / IMAP)", - "mail_summary": "firefly + pixel/TSA · catalog mail-catalog.conf", + "mail_summary": "firefly.gnunet.org + anastasis.taler-systems.com · mail-catalog.conf", "mail_i1": "Outside-in phase mail: MX, SMTP/IMAP ports and handshakes, SPF/DMARC", - "mail_i2": "Domains: taler.net & gnunet.org (firefly), taler-systems.com (pixel / mail.anastasis.lu)", - "mail_i3": "HTML on taler.hacktivism.ch /taler-monitoring-mail/", + "mail_i2": "Mail hosts: firefly.gnunet.org (taler.net/gnunet.org) and anastasis.taler-systems.com", + "mail_i3": "Reported on taler-monitoring-surface HTML (no separate /taler-monitoring-mail* page)", "footer": "Console-style render of taler-monitoring output. Sticky bar: green = clean · yellow = warnings · red = errors. Commit pins the exact tree used for this run.", "redirect_fail": "has failures.", "redirect_see": "See {link} for the full console log, error index, and sticky status bar.", @@ -110,12 +110,12 @@ def ui(lang: str, key: str, **kwargs) -> str: "what_monitors": "Ce que cette page contrôle", "what_monitors_title": "Déplier : ce que cette page vérifie", "surface_title": "Inventaire de surface de l'écosystème (distant)", - "surface_summary": "Hôtes du catalogue public · DNS / TCP / HTTPS / TLS · version serveur · CVE", + "surface_summary": "Catalogue public · DNS/TCP/HTTPS/TLS · nmap OS/service · versions · CVE", "surface_i1": "Uniquement de l'extérieur : pas de SSH ni de podman exec sur les cibles distantes", - "surface_i2": "Catalogue (surface-catalog.conf) : taler.net, demo/test, gnunet.org, taler-ops.ch, taler-systems.com, deb.taler.net, ftp.gnu.org, …", - "surface_i3": "Par hôte : résolution DNS, ICMP (info), ports ouverts, sondes de protocole, expiration du certificat TLS, version logicielle (en-tête Server), CVE optionnel", - "surface_i4": "HTML publié uniquement sur taler.hacktivism.ch (hôte de cette page : {host})", - "surface_i5": "Minuterie : taler-monitoring-surface.timer (horaire)", + "surface_i2": "Catalogue (surface-catalog.conf) : taler.net, demo/test, gnunet.org, taler-ops.ch, firefly, anastasis, …", + "surface_i3": "Par hôte : DNS, ports, protocoles, TLS, en-tête Server, nmap (SURFACE_NMAP), CVE optionnel", + "surface_i4": "Inclut aussi mattermost + mail (firefly.gnunet.org, anastasis.taler-systems.com) + versions dans cette seule page HTML", + "surface_i5": "HTML uniquement /taler-monitoring-surface(+_err)/ sur taler.hacktivism.ch · minuterie horaire", "apt_title": "Tests de déploiement apt-src marchand (podman sur koopa)", "apt_summary": "4 conteneurs · pistes fresh + upgrade · trixie et trixie-testing", "apt_i1": "koopa-taler-deploy-test-apt-src-trixie (fresh, suite trixie)", @@ -140,22 +140,22 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_title": "Pages de monitoring (HTML de la suite)", "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": "Pages pile : /monitoring/ sur bank, exchange et hôtes marchands publics", - "pages_i3": "Pages suite sur taler.hacktivism.ch : /taler-monitoring-surface/, /taler-monitoring-aptdeploy/, /taler-monitoring-mattermost/, /taler-monitoring-mail/", - "pages_i4": "Phase monpages : contrôle outside-in que chaque FQDN public sert le HTML de la suite (pas JSON merchant code 21)", - "pages_i5": "Host-agent publie staging → DEPLOY_WWW_ROOT ; Caddy doit gérer les chemins (voir site-gen/caddy-monitoring-handles.snippet)", + "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_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}", "pages_section_lead": "Les pages de monitoring elles-mêmes (suite) :", "mm_title": "Santé du chat Mattermost", "mm_summary": "mattermost.taler.net · SPA + /api/v4/system/ping · TLS", "mm_i1": "Phase outside-in mattermost (défaut https://mattermost.taler.net)", "mm_i2": "SPA d'accueil, /api/v4/system/ping JSON, /login, expiration du certificat TLS", - "mm_i3": "HTML sur taler.hacktivism.ch /taler-monitoring-mattermost/", + "mm_i3": "Rapporté dans le HTML taler-monitoring-surface (pas de page /taler-monitoring-mattermost*)", "mail_title": "Mail (MX / SMTP / IMAP)", - "mail_summary": "firefly + pixel/TSA · catalogue mail-catalog.conf", + "mail_summary": "firefly.gnunet.org + anastasis.taler-systems.com · mail-catalog.conf", "mail_i1": "Phase outside-in mail : MX, ports SMTP/IMAP et handshakes, SPF/DMARC", - "mail_i2": "Domaines : taler.net & gnunet.org (firefly), taler-systems.com (pixel / mail.anastasis.lu)", - "mail_i3": "HTML sur taler.hacktivism.ch /taler-monitoring-mail/", + "mail_i2": "Hôtes mail : firefly.gnunet.org (taler.net/gnunet.org) et anastasis.taler-systems.com", + "mail_i3": "Rapporté dans le HTML taler-monitoring-surface (pas de page /taler-monitoring-mail*)", "footer": "Rendu console de taler-monitoring. Barre collante : vert = OK · jaune = avertissements · rouge = erreurs. Le commit fixe l'arbre exact de cette exécution.", "redirect_fail": "a des échecs.", "redirect_see": "Voir {link} pour le journal console complet, l'index d'erreurs et la barre de statut.",