fix(0.32.2): résolution par requête des URL dracodev, base agent dérivée et CSP du panneau
CI / test (push) Successful in 2m21s

La dérivation 0.32.1 ne couvrait que les URL sœurs depuis
AGENT_EVENEMENTS_URL, jamais agent_url : sur la dev, le panneau
visait le défaut prod (agent injoignable, prod non installée),
console morte. Désormais, pour tout rendu à une requête (barre,
iframe du panneau, CSP frame-src) : explicite > hôte public au
motif fermé dracodev > dérivation élargie (événements ou base du
service) > défaut officiel. Contextes sans requête inchangés
sinon ; aucun SSO ajouté.
This commit is contained in:
Spark
2026-10-26 02:07:46 +00:00
parent 65c467bc90
commit d419fe3086
6 changed files with 441 additions and 41 deletions
+59
View File
@@ -1,5 +1,64 @@
# Changelog
## 0.32.2 — 2026-10-25
### Corrigé — console du panneau morte et liens pas tous en dev : résolution par requête
Sur kanbante-dev, le mode console du panneau était une page morte
et les liens inter-apps n'étaient pas tous en dev. Couche fautive
trouvée dans `app/config.py` : la dérivation de la 0.32.1 ne
couvrait que les URL sœurs depuis `AGENT_EVENEMENTS_URL` — jamais
`agent_url` lui-même. Sur la dev, où seul le journal est déclaré
en `-dev`, le panneau recevait donc le défaut prod
`https://agent.dracodev.net` : iframe de console pointant un agent
prod pas encore installé, donc injoignable. Et aucune résolution
ne tenait compte de la requête : sans variable d'environnement,
un hôte public en `-dev` retombait entièrement sur la prod.
Enfin, aucune CSP n'existait : l'origine de l'agent n'était
énoncée nulle part.
- **Résolution par requête** (`resoudre_urls_draco` dans
`app/config.py`, consommée par `render()` dans `app/main.py`)
pour tout ce qui est rendu à une requête — liens de la barre
(`draco_urls`), source de l'iframe du panneau
(`DRACO_PANNEAU_CONFIG.api`) et origine agent de la CSP — dans
l'ordre : 1) la variable explicite de l'installation,
prioritaire et inchangée (`DRACO_SSO_URL` pour ObsiGate,
`DRACO_FLOWDECK_URL`, `DRACO_TIKTAK_URL`,
`KANBANTE_PUBLIC_URL` pour Kanbante elle-même, `AGENT_URL`
pour l'agent) ; 2) l'hôte public de la requête, motif fermé
`^(og|flowdeck|tiktak|kanbante|agent)<SUFFIXE>\.dracodev\.net$`
(suffixe optionnel : vide en prod, `-dev` en dev), appliqué à
toutes les sœurs et à l'agent — jamais de suffixe inventé
depuis un hôte arbitraire ; hors motif (LAN, IP), étape
suivante ; 3) la dérivation par les adresses de l'agent connues
en configuration, **élargie** : URL d'événements **ou** base du
service, selon ce que l'installation déclare ; 4) le défaut
officiel.
- **Base de l'agent dérivée** (contextes sans requête aussi) :
sans `AGENT_URL` explicite, si l'adresse connue de l'agent
(événements ou base) suit `agent<SUFFIXE>.dracodev.net`,
`agent_url` devient `https://agent<SUFFIXE>.dracodev.net` au
lieu de rester au défaut prod.
- **CSP nouvelle** : chaque page rendue énonce
`Content-Security-Policy: frame-src 'self' <origine agent>` —
exactement l'origine résolue pour cette même réponse, celle de
l'iframe de la console (seule iframe de l'application).
- Les contextes sans requête gardent la résolution par
configuration, inchangée sinon. Aucun SSO ajouté : Kanbante
n'en a pas par conception ; périmètre limité à ses liens et à
son panneau.
- Tests : requête `Host: kanbante-dev.dracodev.net` sans aucune
variable → barre, iframe et CSP entièrement en `-dev` ; hôte
prod → noms officiels ; hôte LAN → repli configuration/défauts ;
explicite gagne sur l'hôte ; base de l'agent dérivée du seul
journal et dérivation élargie à la base du service ; contextes
sans requête inchangés. Suite complète : 278 tests réussis.
- **Déploiement** : cette version part avec le prochain
redéploiement Docker (la 0.32.1 n'a jamais été redéployée) —
preuve en direct **en attente du redéploiement Docker de
Bruno**, la version vivante sur kanbante-dev reste l'ancienne.
## 0.32.1 — 2026-10-25
### Corrigé — URL sœurs de la barre dérivées de l'environnement de l'agent