Stormeo Connector for PrestaShop
Plugin officiel pour connecter une boutique PrestaShop à StormeoOS. Distribution :
- ZIP :
https://beta.stormeo.io/plugins/prestashop/stormeoconnector.zip - Version courante : 2.6.0
- Seuil HMAC obligatoire :
>= 2.6.0
Pré-requis
- PrestaShop 1.7.7+ (testé jusqu'à 8.1)
- PHP 7.4+ (recommandé 8.1+)
- HTTPS obligatoire
cronPS configuré (ou cron système)
Installation
- Télécharger le ZIP via l'UI agence (
SitePilot → Mon site → Installer le connector) - Uploader via
Modules → Catalogue de modules → Installer un moduledans le BO PS - Configurer dans
Modules installés → Stormeo Connector → Configurer - Coller le token de pairing (60s TTL)
- Vérifier le statut "Connecté"
Endpoints consommés (vers StormeoOS)
Heartbeat
POST /v1/ping— toutes les 5 min (cron PS)
Sync events
| Hook PS | Endpoint | Payload |
|---|---|---|
actionObjectProductAddAfter | /api/plugin/sync-content | { type: 'product', id, ref, price, stock } |
actionObjectProductUpdateAfter | /api/plugin/sync-content | idem |
actionValidateOrder | /api/plugin/sync-content | { type: 'order', id_order, total, customer_email_hash } |
actionAdminLoginControllerLoginBefore | /api/plugin/v2/security-event | { type: 'login_attempt', email_hash, ip } |
actionCustomerAccountAdd | /api/plugin/sync-content | { type: 'customer_signup', id, email_hash } |
Les emails clients sont hashés SHA-256 avant transmission (RGPD).
Métriques
POST /api/plugin/v2/disk-usage— usage/img,/upload,/download, dump DBPOST /api/plugin/v2/file-integrity— hash des fichiers core PSPOST /api/plugin/v2/site-info— version PS, version PHP, modules installés
Inventaire modules
POST /v1/cms-extensions— liste modules installés + versions → StormeoOS retourne alertes outdated
Sandbox FS stricte (v2.5+)
Pour les commandes qui touchent le filesystem (run_db_dump, read_log, etc.), le plugin applique une sandbox stricte :
Allowlist (chemins autorisés) :
/upload/— uploads PS/img/— images produits/themes/<active>/— thème actif (lecture seule)/var/logs/— logs PS
Blacklist (chemins refusés même si inclus dans allowlist) :
- Tout fichier avec extension
.php,.phtml,.phar,.htaccess - Tout fichier dans
/config/ - Tout fichier nommé
*secret*,*credentials*,*.cnf,*.env
→ Toute commande qui tente de lire/écrire hors sandbox est rejetée par le plugin (logged côté StormeoOS).
DB dump chiffré (v2.5+)
La commande ps.run_db_dump produit un dump :
- Pas de fichier
~/.my.cnf(ni équivalent) — credentials passées par stdin àmysqldump - Output streamé à un OpenSSL
aes-256-gcmavec une clé dérivée duapiSecret - Cleanup auto des dumps locaux > 7 jours
- Upload chiffré vers le storage StormeoOS
Le dump n'est jamais lisible en clair sur le serveur PS.
RGPD (v2.6+)
Endpoint POST /v1/gdpr/delete traité par le plugin :
- Anonymisation
customer:firstname/lastname→ "Anonymous",email→ hash,birthday→ null - Anonymisation
address: noms, adresse, téléphone → null - Conservation des
orders(légal) mais avec FK customer anonymisée - Audit log JSONL :
<adminDir>/stormeo-gdpr-audit.logavec{ timestamp, customerId, emailHash, deletedFields }
Sécurité spécifique au plugin PS
- Secrets chiffrés :
STORMEO_API_SECRETetSTORMEO_CLIENT_SECRETstockés enenc:salt:iv:tag:cipher(AES-256-GCM, dérivation depuis_COOKIE_KEY_PS) - HMAC sortant : tous les calls vers StormeoOS depuis v2.6+ signent avec HMAC-SHA256
- Auth ping/status : par défaut
anonymous(pas de leak d'info), bascule en authentifié si configuré - Timing-safe API key :
Tools::strcmpremplacé parhash_equals(PHP 5.6+ timing-safe) - Pas de RCE : v2.5 a fermé tous les
eval()/assert()/create_function/filesystem.writenon sandboxés (audit OWASP, voir mémoiresession_2026-04-26_stormeo-connector-pr-b-prestashop.md)
Désinstallation
Hook uninstall() du module PS :
- Supprime les rows
ps_configuration(STORMEO_*) - Conserve les logs RGPD historiques
- Notifie StormeoOS
Logs
<adminDir>/stormeo-logs/ :
connector.loghmac-failed.loggdpr-audit.log(JSONL, ne pas supprimer)
Limitations connues
- Multi-shop PS : v2.6 ne gère qu'un shop par instance plugin. Pour multi-shop, installer le plugin séparément par shop. Sera corrigé en v2.7.
- Webhooks PS natifs non utilisés (PrestaShop n'a pas de webhook outbound stable < 8.0).
- CRON externe recommandé : le
cronPS interne dépend du trafic visiteurs. Pour fiabilité, configurer un cron système qui appelleindex.php?fc=module&module=stormeoconnector&controller=cron.