Skip to content

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.3.0
  • 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

  1. Télécharger le ZIP depuis l'UI agence (SitePilot → Mon site → Installer le connector)
  2. Uploader via Extensions → Ajouter → Téléverser dans wp-admin
  3. Activer
  4. Coller le token de pairing (60s TTL) dans Réglages → Stormeo Connector
  5. Vérifier le statut "Connecté" (heartbeat reçu sous 60s)

Endpoints consommés (vers StormeoOS)

Heartbeat

  • POST /v1/ping — toutes les 5 min via wp_schedule_event

Sync de contenu (event-driven)

Hook WPEndpoint StormeoOSPayload
save_post (post, page)/api/plugin/sync-content{ type: 'content', items: [...] }
comment_post/api/plugin/v2/security-event{ type: 'comment', commentId, status, ip }
wp_login_failed/api/plugin/v2/security-event{ type: 'login_failed', user_login, ip, ua }
wp_login/api/plugin/v2/security-event{ type: 'login_success', user_id, ip }
attachment_added (media)/api/plugin/sync-content{ type: 'media', file, mime, size }

WooCommerce (si actif)

HookEndpointPayload
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 hebdo
  • POST /v1/cms-extensions — liste plugins+themes installés + versions disponibles → StormeoOS calcule les securityAlerts (outdated plugins) et les renvoie en réponse

Endpoints exposés (depuis StormeoOS vers le plugin)

Aucun. Le plugin n'expose pas d'endpoint inbound (sécurité). StormeoOS communique exclusivement via :

  1. La queue /api/plugin/commands (poll par le plugin toutes les 60s)
  2. Les webhooks /v1/webhooks émis par StormeoOS vers une targetUrl dé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.

TypePayloadAction
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_dump produit un dump AES-256-GCM at-rest, uploadé chiffré vers s3://stormeo-backups/<agencyId>/<siteId>/. Auto-delete après 7 jours.

Sécurité spécifique au plugin WP

  • wp_options chiffrés : apiKey, apiSecret, pairingNonce stockés en AES-256-GCM at-rest (clé dérivée de AUTH_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 :

  1. Anonymise les commentaires (auteur → "Anonyme", email → hash)
  2. Notifie StormeoOS via POST /v1/gdpr/delete
  3. Renvoie le rapport au mécanisme RGPD natif WP

Désinstallation

uninstall.php du plugin :

  • Supprime toutes les options wp_options créées (stormeo_*)
  • Ne supprime pas les events RGPD historiques (rétention légale)
  • Notifie StormeoOS via POST /v1/disconnect (best-effort, fail silently)

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é.

StormeoOS API