Set-OPS-Public/scripts
Daniel Allaire 073c5b6b69 frontiere : poster en formulaire encode — independant de la version du boitier
Mesure du 2026-08-13 sur un OPNsense 24.7 (version ANCIENNE, en cours de mise a
jour depuis) : toute ecriture du moteur y echouait. Alias, regles, NAT, routes —
`make frontiere-appliquer` n'aurait rien pose sur ce boitier.

Ce n'est donc PAS un defaut universel du moteur : il ecrit correctement sur la
frontiere de Chezlepro, plus recente. C'est un probleme de COMPATIBILITE, et le
correctif vaut surtout comme garantie de portabilite — le jour ou l'on arrive sur
un site dont on ne choisit pas le firmware, ce qui est exactement le cas ici.

LE SYMPTOME MERITE D'ETRE RETENU, lui, quelle que soit la version. Le controleur
d'OPNsense lit ses champs avec `hasPost(<racine>)`. Si le corps arrive en
`application/json` et que le boitier ne le decompose pas en variables de POST, ce
test est FAUX : reponse `{"result":"failed"}` NUE — HTTP 200, aucune redirection,
et surtout AUCUNE validation. Le controleur ne dit pas quel champ manque, parce que
de son point de vue il n'y avait aucun champ.

Trois fausses pistes avant la bonne : valeur invalide (un corps VIDE echouait
pareil), racine de payload erronee (elle etait juste), privileges de la cle (la
lecture passait). Ce qui a tranche : un corps vide aurait DU produire des
validations. Leur absence disait que le controleur n'avait rien recu.

CORRECTIF : `Frontiere` poste desormais `racine[champ]=valeur`. C'est la forme que
poste l'interface web elle-meme — aucune version d'OPNsense ne la refuse, alors que
le JSON depend du boitier. Tous les corps du moteur sont des dicts plats de chaines
(alias, rule, route) : un seul niveau d'imbrication suffit.

EPROUVE SUR LE BOITIER, dans les deux sens : addItem d'un alias sonde -> `saved`,
delItem -> `deleted`, aucune trace laissee, lecture intacte (11 alias). A re-eprouver
apres la mise a jour, pour verifier que le formulaire reste bon sur la version
recente — c'est le seul point qui reste ouvert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 23:57:10 -04:00
..
tests adressage : l'index est borne [0-255] — 10.300.0.0/16 n'est pas un reseau 2026-08-12 16:21:33 -04:00
applications.py Trois preuves qui regardent au-dela d'une seule instance + champ liens/websocket au GUI 2026-07-22 21:32:42 -04:00
appliquer_opnsense.py frontiere : poster en formulaire encode — independant de la version du boitier 2026-08-13 23:57:10 -04:00
appliquer_proxmox_fw.py premiere VM tenant : quatre defauts leves sur le chemin 2026-08-06 20:33:12 -04:00
appliquer_sdn.py proxmox-fw : un applicateur, et un refus assume 2026-08-06 19:39:33 -04:00
bases_donnees.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
config_proxmox.py gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur 2026-08-12 14:36:44 -04:00
couverture_gui.py Trois preuves qui regardent au-dela d'une seule instance + champ liens/websocket au GUI 2026-07-22 21:32:42 -04:00
devis_certificats.py devis des certificats : disque contre memoire, et l'AC etait expiree 2026-08-08 07:20:56 -04:00
devis_courriel.py courriel : routage local par identifiant, et la livraison interne remise en marche 2026-08-08 09:42:45 -04:00
devis_expositions.py devis des expositions : une vraie requete, depuis deux points de vue 2026-08-08 07:33:49 -04:00
devis_frontiere.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
devis_identite.py devis d'identite : comparer le deploye au declare 2026-08-08 06:55:06 -04:00
devis_mtu.py mtu : le 1450 de la zone n'atteignait pas les invites 2026-08-10 17:54:03 -04:00
devis_opnsense.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
devis_placement.py placement : un devis confronte les QUATRE objets au cluster — dont le gabarit 2026-08-13 10:11:25 -04:00
devis_postgresql.py devis PostgreSQL et courriel : la serie des devis de service est complete 2026-08-08 08:53:49 -04:00
devis_proxmox_fw.py flux : admin devient un pair, et make ca-racine livre la racine 2026-08-07 17:26:35 -04:00
devis_proxmox_pools.py proxmox : pools créés, jeton normalisé, reliquat de voûte supprimé 2026-08-03 15:52:44 -04:00
devis_reseau.py nommage : bifrost-N, où N est le dernier octet (D-60 ; D-12 renversée) 2026-08-04 20:01:10 -04:00
devis_sdn.py SDN : un puits sur le supernet du tenant dans son propre VRF 2026-08-09 16:01:24 -04:00
devis_versions.py devis : make versions-mesurer — l'ecart avec l'amont devient lisible 2026-08-10 23:02:16 -04:00
domaines.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
instance_creer.py Créer une instance depuis un modèle (CLI + GUI) 2026-07-23 14:13:36 -04:00
instances.py adressage : l'index est borne [0-255] — 10.300.0.0/16 n'est pas un reseau 2026-08-12 16:21:33 -04:00
instancier.py P03 : la preuve du diff-vide peut enfin echouer — et elle echoue 2026-08-12 16:28:30 -04:00
inventory_gui.py GUI : le « pont reseau » n'est pas un reglage de la flotte — l'intitule le dit 2026-08-13 11:31:41 -04:00
inventory_host.py gabarit : deriver le domaine de recherche, et vider resolv.conf a la capture 2026-08-09 10:25:03 -04:00
inventory_rules.py adressage : l'index est borne [0-255] — 10.300.0.0/16 n'est pas un reseau 2026-08-12 16:21:33 -04:00
model_creer.py gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur 2026-08-12 14:36:44 -04:00
modeles.py modèles : l'underlay devient modélisable, et P17 le valide 2026-08-02 17:11:18 -04:00
orchestrer.py Mise en conformité prouvable : registre d'affirmations + make prouver 2026-07-20 19:53:18 -04:00
plan_recette.py Plan de recette (P22) : le pendant manuel de make prouver 2026-07-23 15:49:16 -04:00
prouver.py D-80 : un tenant est agnostique de son underlay, a trois cles pres 2026-08-13 09:47:38 -04:00
proxmox_api.py proxmox-fw : un applicateur, et un refus assume 2026-08-06 19:39:33 -04:00
raser.py raser : lire le RESULTAT de la destruction, pas son accuse de reception 2026-08-10 22:47:28 -04:00
resoudre_flux.py portabilite : le repli nftables survivait a la bascule et annulait tout 2026-08-10 12:24:41 -04:00
serveurs.py intégrations : le rôle déclare sa politique ; le cluster passe à l'hébergeur 2026-08-03 14:09:22 -04:00
socle_amorcage.py D-71 : PKI et DNS debout avant tout, et la zone inverse manquait 2026-08-08 15:29:57 -04:00
sonde_tcp.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
underlay.py D-78 : destination ou chemin — et le VLAN 50 pour eviter une collision 2026-08-12 17:50:05 -04:00
verifier_gui.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
verifier_intrants.py P32 / D-72 : tout intrant exige par un role est fourni par l'instance 2026-08-09 09:40:25 -04:00
verifier_ports.py P33 / D-73 : aucune collision de port entre roles co-localises 2026-08-09 09:46:17 -04:00
verifier_signature.py forgejo : epingle 16.0.2, et le verificateur accepte la cle PRIMAIRE 2026-08-11 01:04:16 -04:00
voute.py amorcage_acces : le role qui cree UN acces puis se retire 2026-08-07 13:42:27 -04:00