From c08efa81fe0f2a3576a22da3ae8ef665a57a547c Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Sat, 23 May 2026 05:02:16 +0000 Subject: [PATCH 1/2] chore: sync updates.xml 02.01.37 from main [skip ci] --- updates.xml | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/updates.xml b/updates.xml index b978c47..9857be8 100644 --- a/updates.xml +++ b/updates.xml @@ -1,7 +1,7 @@ @@ -10,15 +10,87 @@ System - MokoWaaS update mokowaas plugin - 02.01.36-dev + 02.01.37-dev site system development https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/plg_system_mokowaas-02.01.36-dev.zip + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/plg_system_mokowaas-02.01.37-dev.zip - 9f7e0df50d0073ecb69ba3c13c22aec07b584e2f09127fc36bcf7eeeef534481 + 9d71440040a957fb155c9951ea76ec9e684dca99565be8ff2c0acf5d1a3a5edd + + Moko Consulting + https://mokoconsulting.tech + + + System - MokoWaaS + System - MokoWaaS update + mokowaas + plugin + 02.01.37-alpha + site + system + alpha + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/alpha + + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/alpha/plg_system_mokowaas-02.01.37-alpha.zip + + 9d71440040a957fb155c9951ea76ec9e684dca99565be8ff2c0acf5d1a3a5edd + + Moko Consulting + https://mokoconsulting.tech + + + System - MokoWaaS + System - MokoWaaS update + mokowaas + plugin + 02.01.37-beta + site + system + beta + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/beta + + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/beta/plg_system_mokowaas-02.01.37-beta.zip + + 9d71440040a957fb155c9951ea76ec9e684dca99565be8ff2c0acf5d1a3a5edd + + Moko Consulting + https://mokoconsulting.tech + + + System - MokoWaaS + System - MokoWaaS update + mokowaas + plugin + 02.01.37-rc + site + system + rc + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/rc + + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/rc/plg_system_mokowaas-02.01.37-rc.zip + + 9d71440040a957fb155c9951ea76ec9e684dca99565be8ff2c0acf5d1a3a5edd + + Moko Consulting + https://mokoconsulting.tech + + + System - MokoWaaS + System - MokoWaaS update + mokowaas + plugin + 02.01.37 + site + system + stable + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/stable + + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/stable/plg_system_mokowaas-02.01.37.zip + + 9d71440040a957fb155c9951ea76ec9e684dca99565be8ff2c0acf5d1a3a5edd Moko Consulting https://mokoconsulting.tech -- 2.52.0 From f2e1dfe1144712a41c10c27788b8798a95942a35 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 23 May 2026 02:09:01 -0500 Subject: [PATCH 2/2] docs: update CHANGELOG and README for 02.01.37 release Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 54 +++++++++++++++++++++++++++++++++------------------- README.md | 6 +++++- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9f90bc..a836f7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,37 +31,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - License/subscription check - System email template branding (DB approach) -## [02.01.35] - 2026-05-22 +## [02.01.37] - 2026-05-23 ### Added -- Health check endpoint at `/?mokowaas=health` with token authentication (#54) -- Database connectivity and latency check -- Filesystem writability and disk space check -- Cache status and extension count checks -- Auto-generated API token (separate from Joomla user tokens) -- Grafana auto-provisioning: Infinity datasource + shared dashboard -- Grafana plugin install via API (replaces deprecated CLI) -- Dashboard with endpoint dropdown for multi-site monitoring -- Provisioning on plugin install/update via script.php postflight -- Error logging for all Grafana heartbeat attempts (HTTP code + cURL error) +- Health check endpoint at `/?mokowaas=health` with 16 diagnostic checks (#54) +- Core checks: database latency, filesystem writability/size, cache, extensions +- Backup checks: Akeeba Backup last backup date/status/size, days since, frequency +- Security checks: Admin Tools WAF status, blocked requests 24h/7d +- SSL certificate: expiry date, days left, issuer (degraded <30d, error <7d) +- Scheduled tasks: Joomla task scheduler status, failed tasks 24h +- Error log: PHP error log size, recent errors, last error message +- Database size: total MB, table count, top 5 largest tables +- Content stats: articles, categories, menu items, modules +- User activity: total users, active sessions, failed logins 24h, last login +- Mail system: mailer type, from address, SMTP host, queue count +- SEO health: robots.txt, sitemap, htaccess, SEF status +- Template info: site/admin template names, override count +- Configuration drift: debug mode, error reporting, force SSL, caching +- Human-readable `reason` field explaining degraded/error status +- Site size reporting (images, media, tmp, cache, logs directories) +- Heartbeat provisioning via receiver at bench.mokoconsulting.tech +- Grafana datasource auto-provisioning via YAML (no API token needed) +- ntfy notifications on heartbeat registration (mokowaas-heartbeat topic) +- Grafana dashboard with 9 rows covering all 16 health checks +- Auto-generated health API token (separate from Joomla user tokens) ### Changed - Health endpoint always enabled — no config toggle needed -- Grafana credentials hardcoded and obfuscated (XOR+base64) +- Grafana provisioning uses heartbeat receiver pattern (replaces direct API) - Removed config fields: enable_health_endpoint, grafana_url, grafana_api_key -- Grafana dashboard rebuilt: plugin-only panels, no Prometheus blackbox dependency - Migrated .gitea/ to .mokogitea/ directory standard -- Updated all workflow references from MokoStandards to moko-platform +- Updated all references from MokoStandards to moko-platform +- Renamed Gitea references to MokoGitea in docs ### Fixed -- SSL certificate verification disabled for Grafana cURL calls (shared hosting compatibility) -- cURL follow redirects enabled for Grafana API -- updates.xml download URL uses correct `development` tag (was `dev`) -- Grafana API token upgraded to Admin SA with datasource write permissions +- SSL verification disabled for Grafana cURL calls (shared hosting) +- cURL follow redirects enabled +- updates.xml download URL uses correct `development` tag ### Security -- Grafana API key obfuscated in source (not stored in plain text) -- Token rotated on each stable release cycle +- Plugin hidden from plugin list for non-master users +- Plugin settings restricted to master user only +- Self-healing lock (enforceLocked) runs every page load +- Uninstall blocked in preflight +- Health endpoint requires HTTPS + bearer token +- Heartbeat shared secret for receiver authentication ## [02.01.08] - 2026-04-07 diff --git a/README.md b/README.md index e3ec224..5679d7c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,11 @@ The MokoWaaS plugin operationalizes a unified naming convention, brand-controlle - **Joomla 5.x / 6.x Compatible**: Built using modern Joomla plugin architecture with dependency injection - **Multi-Language Support**: en-GB and en-US locales - **Admin & Frontend Coverage**: Dashboard, footer, login, installer, system info, update component, error pages, and more -- **Governance Compliant**: Aligned with [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards) +- **Health Monitoring**: 16 diagnostic checks via `/?mokowaas=health` — database, filesystem, cache, extensions, Akeeba Backup, Admin Tools, SSL, cron, errors, DB size, content, users, mail, SEO, templates, config +- **Grafana Integration**: Auto-provisions Infinity datasource via heartbeat receiver — 9-row dashboard with all health metrics +- **ntfy Notifications**: Heartbeat events pushed to `mokowaas-heartbeat` topic +- **Plugin Protection**: Hidden from non-super-admins, self-healing lock, uninstall blocked +- **Governance Compliant**: Aligned with [moko-platform](https://git.mokoconsulting.tech/MokoConsulting/moko-platform) ## System Requirements -- 2.52.0