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
- 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 | Payload |
|---|---|---|
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)
| 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 (depuis StormeoOS vers le plugin)
Aucun. Le plugin n'expose pas d'endpoint inbound (sécurité). StormeoOS communique exclusivement via :
- La queue
/api/plugin/commands(poll par le plugin toutes les 60s) - 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.
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)
- 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é.