Commit Graph

31 Commits

Author SHA1 Message Date
5b6e113792 Qualys deploy: filtre s.os_family=linux + retire dropdown OS du UI 2026-04-15 13:18:09 +02:00
55d08921f9 Qualys deploy: persiste activation_ids/customer/uri en secrets + selection auto Linux/Windows 2026-04-15 13:12:15 +02:00
f59c6dcbdb Qualys deploy: 2 dropdowns ActivationId Linux et Windows (separes) 2026-04-15 13:04:34 +02:00
0095f7914f Qualys deploy: POD SANEF = QG1 par defaut (pas QG2) 2026-04-15 13:00:45 +02:00
2972baca1f Qualys deploy: dropdown ActivationId depuis API + ServerUri auto-deduit URL Qualys 2026-04-15 12:53:18 +02:00
9e03fd84c0 Qualys tags page: bandeau sync en cours + bouton Resync API disable 2026-04-15 12:39:40 +02:00
48249d1c82 Qualys agents page: bandeau sync en cours + boutons sync desactives + bouton Annuler 2026-04-15 12:37:49 +02:00
1dc7560f44 Qualys tags resync: message clair si busy + erreur API detaillee 2026-04-15 12:35:34 +02:00
a62f9a4146 Qualys sync dual mode: diff (rapide, lastCheckedIn) + full (complet)
- refresh_all_agents accepte mode='diff'|'full' (defaut diff)
- Mode diff: filtre Qualys lastCheckedIn > qualys_last_diff_sync (settings)
- Mode full: pull tous les assets (comme avant)
- Skip early-exit en diff si dernier diff < 5 min
- 2 boutons UI: 'Sync rapide (diff)' et 'Sync complete'
- JS refreshAgents(mode) passe le mode en query param
2026-04-15 12:33:48 +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
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
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
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
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
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
Khalid MOUTAOUAKIL
f04d04224d Qualys: vulnérabilités severity 3/4/5 dans résultats recherche (API VMDR)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:38:56 +02:00
Khalid MOUTAOUAKIL
8e62b1fb11 Qualys complet, contacts, audit refactoré, bulk serveurs
Qualys:
- Recherche API temps réel + cache 24h base locale
- Tags: liste DYN/STAT, mapping V3 (DOM-*, TYP-*, APP-*), nb assets cliquable
- CRUD tags: créer STAT, supprimer, resync API
- Détail asset: infos + décodage nomenclature V3 + tags assignés
- Ajout/retrait tag unitaire avec autocomplete filtrable
- Bulk add/remove tag en masse avec dropdown filtrable
- Tags retirer: charge dynamiquement les STAT assignés aux assets sélectionnés
- Resync assets sélectionnés + retour même recherche

Contacts:
- 50 contacts importés avec 93 scopes (domaine/app/serveur/zone par env)
- 13 rôles (responsable_domaine, ra_prod, ra_recette, referent_technique...)
- Recherche par nom/email/serveur (affiche contacts liés)
- CRUD complet: éditer, scopes, activer/désactiver, supprimer
- Serveurs liés calculés dynamiquement depuis les scopes

Audit:
- Restructuré: Audit général + sous-menu Spécifique
- Dernier audit global affiché avec date
- Lancer audit général avec exclusions (domaines/zones) et parallélisme
- KPIs Qualys KO et S1 KO cliquables
- Export CSV

Serveurs:
- Actions groupées bulk (domaine, env, tier, état, owner, licence)
- Dashboard: KPI EOL ajouté
- Filtre état: EOL + en décommissionnement ajoutés
- 138 serveurs EOL importés depuis Qualys (owner=na, hors périmètre)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 00:47:26 +02:00