Stormeo Connector for WordPress
Plugin officiel pour connecter un site WordPress à StormeoOS. Distribution :
- ZIP :
https://beta.stormeo.io/plugins/wordpress/stormeo-connector.zip - Version courante : 3.13.4
- Seuil HMAC obligatoire :
>= 3.1.0
Pré-requis
- WordPress 6.0+ (testé jusqu'à 6.4)
- PHP 7.4+ (recommandé 8.1+)
- HTTPS obligatoire (le site doit être joignable en HTTPS depuis StormeoOS)
- Cron WP fonctionnel (ou cron système)
Installation
- Télécharger le ZIP depuis l'UI agence (
SitePilot → Mon site → Installer le connector) - Uploader via
Extensions → Ajouter → Téléverserdans wp-admin - Activer
- Coller le token de pairing (60s TTL) dans
Réglages → Stormeo Connector - Vérifier le statut "Connecté" (heartbeat reçu sous 60s)
Endpoints consommés (vers StormeoOS)
Heartbeat
POST /v1/ping— toutes les 5 min viawp_schedule_event
Sync de contenu (event-driven)
| Hook WP | Endpoint StormeoOS | Usage |
|---|---|---|
save_post (post, page) | /api/plugin/v2/sync-content-extended | Upsert du contenu (table dédiée) |
transition_post_status, wp_trash_post, untrash_post | /api/plugin/v2/activity | Journal d'activité (post.published, post.trashed…) |
wp_insert_comment, transition_comment_status | /api/plugin/v2/activity | Journal d'activité (comment.*) |
wp_login, wp_login_failed, user_register | /api/plugin/v2/activity (+ /api/plugin/v2/security-event côté monitoring) | Journal + événements sécurité |
activated_plugin, switch_theme, upgrader_process_complete… | /api/plugin/v2/activity | Journal d'activité (plugin.*, theme.*) |
Catalogue complet des types et enveloppe : events.md.
WooCommerce (si actif)
| Hook | Endpoint | Payload |
|---|---|---|
woocommerce_new_order | /api/plugin/sync-content | { type: 'wc_order', order_id, total, status } |
woocommerce_order_status_changed | /api/plugin/sync-content | { type: 'wc_order_status', from, to } |
woocommerce_product_set_stock | /api/plugin/sync-content | { type: 'wc_stock', product_id, qty } |
Métriques (cron daily)
POST /api/plugin/v2/disk-usage— usage disque (uploads, db dump size, total)POST /api/plugin/v2/file-integrity— hash des fichiers core WP (détection altération)POST /api/plugin/v2/site-info— métadonnées (PHP version, WP version, plugins/themes installés)
Inventaire
POST /v1/site-contents— résumé du contenu (counts par type) — sync hebdoPOST /v1/cms-extensions— liste plugins+themes installés + versions disponibles → StormeoOS calcule lessecurityAlerts(outdated plugins) et les renvoie en réponse
Endpoints exposés (REST WordPress, namespace stormeo/v1)
Le plugin expose des routes sous /wp-json/stormeo/v1/ :
| Route | Auth | Description |
|---|---|---|
/ping | publique | Sonde de joignabilité (payload minimal, sans données) |
/status | publique | Statut de connexion (payload minimal) |
/sso | publique | Point d'entrée SSO wp-admin (jeton à usage unique) |
/data-request | Bearer secret | Requêtes de données à la demande |
/mcp-execute | Bearer secret | Exécution d'une commande approuvée (RPC chiffré, voir MCP) |
/mcp-preview | Bearer secret | Prévisualisation d'une commande avant approbation |
/mcp-rollback | Bearer secret | Retour arrière via snapshot |
/mcp | auth REST WP | Serveur MCP natif (MCP Adapter + Abilities API, si présents — voir MCP) |
Les routes authentifiées vérifient le secret d'appairage en comparaison timing-safe ; les payloads mcp-* sont chiffrés AES-256-GCM et signés HMAC (voir ../mcp/hitl-workflow.md).
En complément, StormeoOS pilote le plugin via :
- La queue
/api/plugin/commands(poll par le plugin) - Les webhooks
/v1/webhooksémis par StormeoOS vers unetargetUrldéfinie côté serveur (rare)
Commandes supportées
Reçues via GET /api/plugin/commands, exécutées côté plugin, résultat retourné via POST /api/plugin/command-result.
| Type | Payload | Action |
|---|---|---|
wp.update_plugin | { plugin: "akismet", version: "5.3" } | Met à jour un plugin |
wp.update_theme | { theme: "twentytwenty" } | Met à jour un thème |
wp.update_core | { version: "6.4.2" } | Met à jour WordPress core |
wp.flush_cache | {} | Flush page cache (plugin si présent) |
wp.flush_object_cache | {} | Flush object cache (Redis/Memcached) |
wp.run_db_optimize | {} | OPTIMIZE TABLE sur toutes les tables wp_* |
wp.toggle_maintenance | { enabled: true } | Bascule mode maintenance |
wp.run_db_dump | { tables: ['wp_posts', '...'] } | Dump DB chiffré (post v3.3+) |
v3.3+ : la commande
run_db_dumpproduit un dump AES-256-GCM at-rest, uploadé chiffré verss3://stormeo-backups/<agencyId>/<siteId>/. Auto-delete après 7 jours.
Abilities & serveur MCP natif (v3.13+)
Depuis la v3.13, le plugin enregistre ses opérations comme abilities (Abilities API WordPress) et, si le MCP Adapter est présent sur le site, publie un serveur MCP natif sur /wp-json/stormeo/v1/mcp exposant une liste explicite d'abilities en lecture seule (10 exposées, mutations et opérations retenues).
L'état est remonté à StormeoOS dans le heartbeat (payload.abilities) et détermine la maturité du connecteur : legacy-only → abilities-ready → mcp-ready.
Détails : MCP & Abilities.
Sécurité spécifique au plugin WP
wp_optionschiffrés :apiKey,apiSecret,pairingNoncestockés en AES-256-GCM at-rest (clé dérivée deAUTH_KEY+ sel par site)- CSP : le panel admin du plugin n'utilise pas d'inline scripts (
script-src 'self'strict) - Capability check : tous les endpoints d'admin demandent
manage_options(admin uniquement) - Nonces : tous les actions admin protégées par
wp_create_nonce+check_admin_referer - HTTPS only : refus de pairing si
is_ssl() === false
RGPD
Hook wp_privacy_personal_data_eraser enregistré : sur demande de suppression d'un utilisateur, le plugin :
- Anonymise les commentaires (auteur → "Anonyme", email → hash)
- Notifie StormeoOS via
POST /v1/gdpr/delete - Renvoie le rapport au mécanisme RGPD natif WP
Désinstallation
uninstall.php du plugin :
- Supprime toutes les options
wp_optionscréées (stormeo_*) - Ne supprime pas les events RGPD historiques (rétention légale)
Il n'y a pas d'endpoint de déconnexion côté StormeoOS : le connecteur passe en état « injoignable » quand le heartbeat cesse. La suppression du connecteur se fait depuis l'UI StormeoOS.
Logs
Le plugin écrit dans wp-content/uploads/stormeo-logs/ :
connector.log— événements généraux (rotation 7 jours)hmac-failed.log— signatures rejetées (debugging clock skew)command-results.log— résultats des commandes exécutées
Niveau de log configurable via Réglages → Stormeo Connector → Avancé → Verbosité.