Omnifloo — Garde-fous du magasin
Robots d'analyse des dépôts partenaires, validation humaine, retrait d'urgence, signalements, security.txt, identification des éditeurs, conditions et règles du magasin versionnées.
Omnifloo — Garde-fous du magasin (omnifloo_store_guard)
Odoo 20 Community · OPL-1 · DYONYSOS SASU. Dépend de omnifloo_app_store (magasin apps.omnifloo.com),
omnifloo_legal (documents juridiques versionnés), auth_totp_portal (double authentification du portail).
Ce que fait le module
| Garde-fou | Où | Détail |
|---|---|---|
| Robots d'analyse | store/guard (générateur), appelés par store/precheck.py et la quarantaine |
70 règles (catalogue store/guard/rules.py, instantané data/guard_rules.json) : règles Odoo par arbre syntaxique (sources décodées selon leur déclaration d'encodage PEP 263 ; encodage exotique bloquant), fichiers et secrets, JavaScript/QWeb, dépendances (OSV) ; robots libres bandit, pylint-odoo, detect-secrets, gitleaks, pip-audit |
| Quand | soumission (robots internes en direct, analyse complète par tâche planifiée), chaque nouveau commit, ré-analyse quotidienne des dépôts publiés, quarantaine (commit exact publié) | tâche « Magasin : robots d'analyse… » toutes les 10 min ; délai de ré-analyse omnifloo_store_guard.rescan_hours (24) |
| Résultats | omnifloo.store.scan + omnifloo.store.scan.finding |
verdict (bloquant / à revoir / aucune alerte / impossible), score 0-100, robots effectués ou non, analyse dynamique (installation, tests, mise à jour, désinstallation) |
| Visibilité | éditeur : /my/partenaire (colonne « Analyse des robots ») et /my/partenaire/depot/<id>/analyse ; équipe : Store Omnifloo › Garde-fous |
chaque constat avec « pourquoi » et « comment corriger » |
| Décision humaine | constat « à revoir » : faux positif / risque accepté (motif obligatoire) / correction exigée ; lever un bloquant = administrateur | décisions reprises d'une analyse à l'autre par empreinte du constat |
| Porte de publication | action_publish du dépôt |
conditions acceptées, éditeur identifié (DSA art. 30), aucune alerte non décidée pour le commit vérifié, motif obligatoire à la 1re publication |
| Soumission | /my/partenaire/depot/nouveau |
refusée tant que conditions non acceptées, identification incomplète ou 2FA absente (réglage omnifloo_store_guard.require_2fa) |
| Retrait d'urgence | bouton « Retirer du magasin » (dépôt, fiche, signalement) | portée dépôt / applications, motif, fondement, exposé des motifs notifié à l'éditeur, espaces clients concernés, code laissé en place par défaut (option de retrait du code via le provisionneur) ; levée motivée |
| Signalement | « Signaler cette application » sur chaque fiche → /apps/<module>/signaler |
champ piège, jeton signé horodaté (3 s à 2 h), 5 envois/heure/IP ; accusé de réception, file de traitement, décision motivée envoyée au déclarant |
| security.txt | /.well-known/security.txt (RFC 9116) |
contact omnifloo_store_guard.security_contact (security@omnifloo.com, à confirmer), expiration à 180 jours, politique /conditions/securite |
| Textes | data/legal/legal_documents.xml (noupdate) |
CGU, CGV, contrat éditeur, règles de publication (tableau des robots généré), sécurité, annexe RGPD, programme partenaires — brouillons non relus |
| Pages | héritages sans modifier les gabarits existants | pied de page du magasin (liens juridiques), fiche (panneau « Signaler » + analyse), /publier (tableau étendu des contrôles, robots, garde-fous humains) |
Ce que le module ne fait pas
- Il ne rend aucun texte juridique opposable tant que Julien ne l'a pas fait relire et publié (case « Relue par un avocat »).
- Il ne retire jamais une application automatiquement : les robots alertent, une personne décide.
- Il n'impose pas la 2FA à tous les comptes portail (Odoo 20 ne sait le faire que pour tous :
auth_totp.policy) : la 2FA est vérifiée à chaque soumission d'un éditeur. - Il ne vérifie pas l'identité de l'éditeur auprès d'un registre officiel (bouton « Identification vérifiée » manuel).
- Pas de captcha tiers (Turnstile / reCAPTCHA installables séparément) ; pas de traduction des textes.
- L'analyse dynamique n'exécute que les tests fournis par l'éditeur ; elle ne prouve pas l'absence de défaut.
- Aucun reversement ni commission (aucune application payante sur le magasin à ce jour).
Réglages (ir.config_parameter)
omnifloo_store_guard.security_contact, omnifloo_store_guard.require_2fa, omnifloo_store_guard.rescan_hours,
omnifloo_store_guard.report_sender ; la commande du pré-contrôle reste omnifloo_app_store.precheck_command.
Tests
--test-tags /omnifloo_store_guard (modèles et HTTP) ; robots : pytest store/tests/test_guard.py ;
quarantaine : pytest provisioner/tests/test_store_dynamic.py.
Ce que l'application ne fait pas
- Il ne rend aucun texte juridique opposable tant que Julien ne l'a pas fait relire et publié (case « Relue par un avocat »).
- Il ne retire jamais une application automatiquement : les robots alertent, une personne décide.
- Il n'impose pas la 2FA à tous les comptes portail (Odoo 20 ne sait le faire que pour tous : authtotp.policy) :
- Il ne vérifie pas l'identité de l'éditeur auprès d'un registre officiel (bouton « Identification vérifiée » manuel).
- Pas de captcha tiers (Turnstile / reCAPTCHA installables séparément) ; pas de traduction des textes.
- L'analyse dynamique n'exécute que les tests fournis par l'éditeur ; elle ne prouve pas l'absence de défaut.
- Aucun reversement ni commission (aucune application payante sur le magasin à ce jour).
Applications du magasin nécessaires
- Omnifloo — Magasin d'applications
omnifloo_app_store - Omnifloo — Documents juridiques versionnés
omnifloo_legal
Modules Odoo Community utilisés
auth_totp_portalmail
| Série | Version | État | Publiée le |
|---|---|---|---|
| 20.0 | 20.0.1.0.0 | Disponible | 02/10/2026 |
Fiche générée depuis le code de l'éditeur (dépôt privé, branche 20.0) : le code source n'est pas publié.
Contrôle automatique du magasin (distinct de l'éditeur), appliqué à toutes les applications. À corriger : Icône static/description/icon.png.
| Contrôle | Résultat | Effet si absent |
|---|---|---|
| Manifeste lisible sans exécution | conforme | bloquant |
| Licence reconnue (OPL-1) | conforme | bloquant |
| Aucune dépendance vers Odoo Enterprise | conforme | bloquant |
| Aucun import de code Enterprise | conforme | bloquant |
| Aucun en-tête de licence Enterprise | conforme | bloquant |
| Icône static/description/icon.png | absent | déclasse |
| Description (static/description/index.html ou README) | conforme | déclasse |
| Tests automatisés (tests/test_*.py) | conforme | déclasse |
| Traduction française (i18n/fr.po) | absent | info |
| Section « Ce que le module ne fait pas » | conforme | info |
| Titre de 70 caractères au plus (32 actuellement) | conforme | info |
| Résumé en français | conforme | info |
Guide — Garde-fous du magasin Omnifloo
Pour l'équipe Omnifloo (back-office : Store Omnifloo › Garde-fous)
- Alertes à décider : chaque constat « bloquant » ou « à revoir » non décidé. Ouvrir, lire « Pourquoi » et « Comment corriger », choisir Faux positif accepté, Risque accepté (motif obligatoire) ou Correction exigée. Lever un constat bloquant est réservé aux administrateurs.
- Dépôt partenaire : onglet « Analyses des robots », bloc « Ce qui empêche la publication ». Bouton « Analyse complète des robots » pour relancer tout de suite. À la première publication, remplir « Motif de la validation » (ce qui a été relu).
- Alerte sur un dépôt publié (bandeau rouge) : la ré-analyse du code publié est devenue bloquante. Décider d'un retrait si nécessaire.
- Retirer du magasin (dépôt, fiche ou signalement) : choisir la portée, le motif, le fondement, rédiger l'exposé des motifs (transmis à l'éditeur). La liste des espaces clients concernés s'affiche avant validation. Ne cocher « Retirer aussi le code » que pour un code malveillant : les espaces qui l'utilisent ne démarreront plus. Lever un retrait : menu Retraits, motif de levée obligatoire.
- Signalements : prendre en charge, décider d'une mesure si fondé, puis « Répondre : fondé / non fondé » avec une décision motivée (envoyée au déclarant).
- Documents juridiques : relire chaque texte en Aperçu (bandeau « Projet »), faire relire par un avocat, cocher « Relue par un avocat », Publier. Pour modifier un texte publié : Nouvelle version (préavis de 15 jours minimum pour les éditeurs ; exception motivée seulement pour obligation légale ou urgence de sécurité). Les « Règles de publication » régénèrent automatiquement le tableau des robots à chaque nouvelle version.
Pour l'éditeur partenaire (/my/partenaire)
- Accepter le contrat éditeur, les règles de publication et l'annexe RGPD (/my/conditions).
- Compléter l'identification de la société (/my/partenaire/identification).
- Activer la double authentification (/my/security).
- Soumettre le dépôt ; consulter « Voir l'analyse » : chaque constat indique comment corriger. « Relancer l'analyse » après correction.
Pour les visiteurs
Lien « Signaler cette application » sur chaque fiche ; failles : adresse de /.well-known/security.txt.
Avis des clients connectés. Un avis noté par client ; l'éditeur peut y répondre. Connectez-vous pour laisser un avis.
- Éditeur
- Omnifloo (DYONYSOS)
- contact@omnifloo.com
- Clients Omnifloo
- Support inclus selon votre formule : centre d'aide.