09e92c8b70
Fix export CSV: colonne zone (alias dans SELECT = 'zone' pas 'zone_name')
2026-04-14 23:26:30 +02:00
0be4849ef2
Fix filtres zone/licence perdus lors tri/pagination/export CSV
...
Les macros sort_url et qs + le lien Export CSV ne propageaient pas les
parametres zone/licence ajoutes recemment. Ajout dans:
- servers.html (macros + export link)
- servers.py (endpoint export-csv: signature + filters dict)
2026-04-14 22:25:57 +02:00
e2b984c2c4
Servers: filtre licence (active/obsolete/els/sans licence)
2026-04-14 22:17:09 +02:00
5e9625764a
Dashboard: try/except autour KPIs DMZ/patch_history (resilient si table absente)
2026-04-14 21:47:41 +02:00
6ec1c4575d
Dashboard: KPIs DMZ + patching 2026 depuis patch_history
...
- Stats DMZ (cliquable vers filtre zone)
- Patched 2026, never patched, last week (depuis patch_history Excel)
- Couverture patching = patched / patchable
- KPIs cards cliquables (lien vers /servers filtre pre-applique)
- Fix alias stats.eol -> stats.obsolete
2026-04-14 21:45:36 +02:00
3211b81e60
Servers: filtre zone (liste zones + DMZ + Sans zone)
2026-04-14 21:15:49 +02:00
753d4076c9
Migre etat vers labels iTop verbatim (Production, Nouveau, etc.)
...
Aligne la colonne servers.etat sur les valeurs iTop exactes au lieu
des codes lowercase internes.
Impact:
- servers.etat stocke: Production, Implémentation, Stock, Obsolète,
EOL, prêt, tests, Nouveau, A récupérer, Cassé, Cédé, En panne,
Perdu, Recyclé, Occasion, A détruire, Volé
- Remplace tous les 'production'/'obsolete'/'stock'/'eol'/'implementation'
en WHERE/comparisons par les labels iTop verbatim (~10 fichiers)
- Templates badges/filtres: valeurs + labels iTop
- itop_service: maintient mapping iTop API internal code <-> DB label
- import_sanef_*: norm_etat retourne la valeur iTop verbatim ou None
(plus de fallback silencieux sur 'production')
Ajoute:
- tools/import_etat_itop.py : migration lowercase -> iTop + re-import CSV
- tools/import_environnement.py : fix dry-run pour ADD COLUMN idempotent
Supprime:
- tools/fix_etat_extend.py (obsolete par import_etat_itop.py)
2026-04-14 18:40:56 +02:00
67287b8256
Qualys: cancel button for ongoing refresh
2026-04-14 16:12:44 +02:00
69aeb0e77a
Qualys agents page: sync route + drop LOWER (citext is case-insensitive)
2026-04-14 16:09:56 +02:00
71f83d5d4f
Qualys refresh: threading lock + 409 if already running
2026-04-14 15:20:17 +02:00
e3bcf8fcc1
Qualys refresh: sync route so blocking requests run in threadpool
2026-04-14 15:18:16 +02:00
053c9a3b59
Add Voir detail button and results route for realtime audit
2026-04-14 13:10:23 +02:00
677f621c81
Admin applications + correspondance cleanup + tools presentation DSI
...
- Admin applications: CRUD module (list/add/edit/delete/assign/multi-app)
avec push iTop bidirectionnel (applications.py + 3 templates)
- Correspondance prod<->hors-prod: migration vers server_correspondance
globale, suppression ancien code quickwin, ajout filtre environnement
et solution applicative, colonne environnement dans builder
- Servers page: colonne application_name + equivalent(s) via get_links_bulk,
filtre application_id, push iTop sur changement application
- Patching: bulk_update_application, bulk_update_excludes, validations
- Fix paramiko sftp.put (remote_path -> positional arg)
- Tools: wiki_to_pdf.py (DokuWiki -> PDF) + generate_ppt.py (PPTX 19 slides
DSI patching) + contenu source (processus_patching.txt, script_presentation.txt)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:11:58 +02:00
caa2be71a4
Misc: servers page (application + equivalent), campagne tweaks
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:51:36 +02:00
a706e240ca
Patching: exclusions + correspondance prod<->hors-prod + validations
...
- /patching/config-exclusions: exclusions iTop par serveur + bulk + push iTop
- /quickwin/config: liste globale reboot packages (au lieu de per-server)
- /patching/correspondance: builder mark PROD/NON-PROD + bulk change env/app
+ auto-detect par nomenclature + exclut stock/obsolete
- /patching/validations: workflow post-patching (en_attente/OK/KO/force)
validator obligatoire depuis contacts iTop
- /patching/validations/history/{id}: historique par serveur
- Auto creation patch_validation apres status='patched' dans QuickWin
- check_prod_validations: banniere rouge sur quickwin detail si non-prod non valides
- Menu: Correspondance sous Serveurs, Config exclusions+Validations sous Patching
- Colonne Equivalent(s) sur /servers + section Correspondance sur detail
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:51:30 +02:00
ba0bff0f6e
Remove: safe-patching (remplace par QuickWin) + audit-full
...
- Safe Patching v1 redondant avec QuickWin, supprime
- audit-full: page supprimee, tables DB preservees
- menu + main.py nettoyes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:51:17 +02:00
3f47fea8e6
Audit: jobs background paralleles + progression live
...
- Audit global/realtime: threads paralleles, job_id retourne immediat
- /audit/realtime/progress/{job_id}: KPIs + barre progression + tableau live
- Polling AJAX toutes les 2s, etapes animees (DNS/SSH/Audit/OK)
- PRETTY_NAME correction: extraction via grep -E 'PRETTY_NAME' + cut
- OS version: normalisation lors de save_audit_to_db (Debian GNU/Linux -> Debian X (Bookworm))
- Mise a jour base: itop sync bidirectionnel avec push OS version
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:51:05 +02:00
5ea4100f4c
Qualys: deploy agent background jobs + upgrade/downgrade + AJAX overlays
...
- Background job system pour deploiement (threads paralleles, progression live)
- Upgrade/downgrade: compare versions installee vs package, rpm -Uvh --oldpackage
- Checkbox "Forcer le downgrade" dans UI
- Choix auto DEB/RPM base sur os_version (centos/rhel/rocky/oracle -> RPM)
- Check agent: rpm -q / dpkg -s (evite faux positifs "agent installe mais inactif")
- Bouton "Rafraichir depuis Qualys" AJAX avec timer
- Agents page: colonne version installee + statut
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:50:56 +02:00
8479d7280e
Users/Contacts: workflow profils + LDAP + sync iTop + etat aligne
...
- Users: 4 profils (admin/coordinator/operator/viewer) remplacent la matrix
- /users/add: picker contacts iTop (plus de creation libre)
- /me/change-password: flow force_password_change
- LDAP: service + section settings + option login
- Sync iTop contacts: filtre par teams (SecOps/iPOP/Externe/DSI/Admin DSI)
- Auto-desactivation users si contact inactif
- etat: alignement sur enum iTop (production/implementation/stock/obsolete)
- Menu: Contacts dans Administration, Serveurs en groupe repliable
- Audit bases: demo/prod via JWT mode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:50:43 +02:00
4fa5f67c32
Qualys agents: bouton Rafraichir + cron 6h
...
- refresh_all_agents(): bulk sync tous les assets depuis API Qualys QPS
- Bouton "Rafraîchir depuis Qualys" sur la page agents
- Cron toutes les 6h: refresh_agents.py (prod + demo)
- Message de confirmation après refresh
2026-04-11 21:56:59 +02:00
3d053019e6
Deploiement Agent Qualys complet
...
- Page /qualys/deploy: selection serveurs, config agent, choix package
- Deploiement SSH: copie package, install rpm/dpkg, activation, verification
- Verification agent: check status/version sur serveurs selectionnes
- Auto-detect OS (deb vs rpm)
- Packages stockes dans /opt/patchcenter/agents/
- Filtres: hostname, domaine, environnement, OS
- Log detaille du deploiement
- Menu "Deployer Agent" dans la navigation Qualys
2026-04-11 21:26:45 +02:00
b7b0965722
Fix: qualys/agents - convert rows to dicts pour compatibilite Jinja2 map/attribute
2026-04-11 21:07:44 +02:00
3964dd2c89
Fix: page qualys/agents - try/except sur get_activation_keys et get_agents_summary
2026-04-11 21:04:47 +02:00
29e5a28a27
Fix: KeyError 'updated' → 'servers_updated' dans sync_to route
2026-04-11 13:36:23 +02:00
d8a526368e
Refonte synchro iTop bidirectionnelle complète
...
- Import: typologies directement depuis iTop (Environnement, DomaineApplicatif, Zone, DomainLdap)
- Import: contacts, VMs avec tous champs custom, serveurs physiques, IPs
- Export: typologies + serveurs avec champs patching (tier, ssh, freq, window, excludes)
- Timestamp dernière synchro import/export
- Bandeau synchro visible sur TOUS les onglets du referentiel
2026-04-11 13:19:10 +02:00
66eeff99e8
Sync iTop: import IPs dans server_ips + traceback sur erreur sync
2026-04-11 03:54:45 +02:00
f73ea25d5d
Referentiel: boutons sync iTop (import/export) + messages status
2026-04-10 23:17:58 +02:00
33dd3a779e
Fix: GET /audit/realtime redirige vers dashboard au lieu de crash int_parsing
2026-04-10 22:49:05 +02:00
b190c04147
Fix: hosts manquants + no-cache sur resultats audit (evite re-POST)
2026-04-10 20:38:44 +02:00
c2f3d669eb
Mode Demo/Reel au login + base patchcenter_demo
...
- Choix Production/Demo sur la page de login
- Base patchcenter_demo avec schema identique + 10 serveurs mpcz
- Le mode est stocke dans le JWT token
- La session DB bascule automatiquement selon le mode
2026-04-10 19:39:35 +02:00
Khalid MOUTAOUAKIL
e96d79aae3
QuickWin: prereq/snapshot services, referentiel, logs, correspondance
...
- Split quickwin services: prereq, snapshot, log services
- Add referentiel router and template
- QuickWin detail: prereq/snapshot terminal divs for production
- Server edit partial updates
- QuickWin correspondance and logs templates
- Base template updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:13:00 +02:00
Khalid MOUTAOUAKIL
13290c1ebb
Phase 1 securite: permission checks sur tous les routers
...
- auth: verification is_active au login (compte desactive = bloque)
- settings: enforcement backend can_edit(settings) + role/section
- servers: can_view/can_edit(servers) sur toutes les routes
- planning: can_view/can_edit(planning) sur toutes les routes
- specifics: can_view/can_edit(specifics) sur toutes les routes
- contacts: rattache au module servers (can_view/can_edit)
- campaigns: can_view/can_edit(campaigns) sur toutes les routes manquantes
- audit/audit_full: can_view/can_edit(audit) sur toutes les routes
- qualys: can_view/can_edit(qualys) sur toutes les routes
- safe_patching: perm checks + authentification sur SSE stream
- quickwin: can_view/can_edit(campaigns|quickwin) sur toutes les routes
97 points d'injection securises, 0 route sans controle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 16:46:05 +02:00
Khalid MOUTAOUAKIL
5cc10c5b6c
Module QuickWin complet + filtres serveurs OS/owner
...
- QuickWin: campagnes patching rapide avec exclusions générales (OS/reboot) et spécifiques (applicatifs)
- Config serveurs: pagination, filtres (search, env, domain, zone, per_page), dry run, bulk edit
- Détail campagne: pagination hprod/prod séparée, filtres (search, status, domain), section prod masquée si hprod non terminé
- Auth: redirection qw_only vers /quickwin, profil lecture seule quickwin
- Serveurs: filtres OS (Linux/Windows) et Owner (secops/ipop/na), exclusion EOL
- Sidebar: lien QuickWin conditionné sur permission campaigns ou quickwin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 16:27:45 +02:00
Khalid MOUTAOUAKIL
c550597a86
Export CSV serveurs avec filtres (domaine, env, tier, état, recherche)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:49:23 +02:00
Khalid MOUTAOUAKIL
769e199735
Export CSV patching avec filtres (année, scope, domaine, recherche)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:30:17 +02:00
Khalid MOUTAOUAKIL
7f5e5c83eb
Export CSV: serveurs sans agent + agents inactifs
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:24:49 +02:00
Khalid MOUTAOUAKIL
6a5bdefde5
Sans agent: lister tous les serveurs sans exclusion
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:13:49 +02:00
Khalid MOUTAOUAKIL
b159960522
Qualys agents: colonne État ajoutée, exclure décommissionnés de la liste sans agent
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:06:49 +02:00
Khalid MOUTAOUAKIL
067dec6bcd
Agents inactifs: KPI cliquable avec *, légende RHEL5/EOL, liste détaillée
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 00:33:54 +02:00
Khalid MOUTAOUAKIL
29a377887f
KPI agents Qualys: actifs/inactifs/sans agent sur dashboard + page Agents avec liste détaillée
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 00:01:57 +02:00
Khalid MOUTAOUAKIL
ca16e42ef8
Cache 10min sur détail vulnérabilités (HTMX), indication (cache) affichée
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:52:55 +02:00
Khalid MOUTAOUAKIL
e11714c421
Comparaison même semaine 2026 vs 2025: barres, écart pts, objectif, données incomplètes
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:47:01 +02:00
Khalid MOUTAOUAKIL
340970c108
Comparaison 2026 vs 2025: barres progression, écart serveurs et points
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:45:17 +02:00
Khalid MOUTAOUAKIL
8286fe0624
Fix histogramme: cancelled_weeks séparés, barres empilées vert+rouge par semaine
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:30:30 +02:00
Khalid MOUTAOUAKIL
4517dcdd39
Histogramme patching: barres empilées vert (patché) + rouge (annulé/reporté), total affiché
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:27:14 +02:00
Khalid MOUTAOUAKIL
c05ec932db
Fix histogramme patching: exclure annulés/reportés du graphe semaines
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:25:36 +02:00
Khalid MOUTAOUAKIL
c139dfbaa2
Cache mémoire 10min pour Qualys API, bouton Resync temps réel, page Agents (activation keys + versions)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:04:48 +02:00
Khalid MOUTAOUAKIL
0dc0fc7643
Vulns: parser results en tableau Package/Version installée/Version requise
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:51:50 +02:00
Khalid MOUTAOUAKIL
31bf62651c
Qualys vulns: clic sur badges ouvre detail (QID, titre, CVE avec lien NVD, CVSS3, detection, solution)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:48:44 +02:00
Khalid MOUTAOUAKIL
662b9c3535
Fix vulns: utiliser IPs au lieu de QPS asset IDs pour API VMDR
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:42:30 +02:00