Commit Graph

41 Commits

Author SHA1 Message Date
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
40b0307f62 Accents dans tous les templates: audité, réseau, corrélation, patché, données, décommissionnés
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:28:33 +02:00
Khalid MOUTAOUAKIL
cb8ade24e4 Patching: filtre SecOps/Hors SecOps, KPIs par perimetre, detail partial "pas encore audite"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:11:35 +02:00
Khalid MOUTAOUAKIL
390a162cf4 Fix: inclure status partial (serveurs Ayoub) dans toutes les requetes audit/patching/dashboard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:20:33 +02:00
Khalid MOUTAOUAKIL
dc3efd081e Fix sidebar Complet/Patching actif, domaines cliquables dans patching
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:18:44 +02:00
Khalid MOUTAOUAKIL
dea2889746 Module Patching: KPIs, graphe semaines, domaine, detail par serveur, tri, filtre, 2025/2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:06:38 +02:00
Khalid MOUTAOUAKIL
24c1db2aca Fix pagination: conserve sort/dir dans les liens de page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:55:11 +02:00
Khalid MOUTAOUAKIL
ed23cc3fb6 Dashboard patching 2026: KPIs, barre progression, graphe semaines, domaine/env/zone
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:54:00 +02:00
Khalid MOUTAOUAKIL
2b2fac7c13 Dernier patch: date/semaine depuis Excel, colonne triable, couleur vert/jaune/rouge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:48:11 +02:00
Khalid MOUTAOUAKIL
2ac263e80a Tri colonnes hostname, uptime, reboot (asc/desc) avec indicateur fleche
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:35:38 +02:00
Khalid MOUTAOUAKIL
df03852c86 Export CSV avec filtres (domaine/zone/recherche/KPI), BOM UTF-8
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:20:35 +02:00
Khalid MOUTAOUAKIL
c42708db75 Processus: restart_hint et cmdline affiches en entier, plus de troncature
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:13:39 +02:00
Khalid MOUTAOUAKIL
cdd550c84b KPIs applicatifs: Oracle, PostgreSQL, MariaDB, HANA, httpd, nginx, HAProxy, Tomcat, Java, Node.js, Redis, MongoDB, Elastic, Docker/Podman — cliquables avec filtre
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:08:25 +02:00
Khalid MOUTAOUAKIL
38b27beb9d Fix KPIs detail serveur sur une seule ligne (inline flex-nowrap)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:49:45 +02:00
Khalid MOUTAOUAKIL
f6571c2b10 Flow map: filtre par domaine/zone, recherche serveur avec autocompletion
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:48:29 +02:00
Khalid MOUTAOUAKIL
532ecf7e3d Carte flux visuelle SVG: noeuds, liens verts, pan/zoom, tooltip, recherche
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:44:20 +02:00
Khalid MOUTAOUAKIL
0a309ea4f7 Filtre domaine + zones (DMZ, EMV, LAN) dans dropdown
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:38:54 +02:00
Khalid MOUTAOUAKIL
c7831f5b86 KPIs sur une seule ligne (flex-nowrap, min-width:0)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:37:00 +02:00
Khalid MOUTAOUAKIL
a20318f010 Pagination 20 lignes par page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:34:04 +02:00
Khalid MOUTAOUAKIL
d283e8ab8c Pagination 50/page, recherche hostname, filtre domaine
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:32:07 +02:00
Khalid MOUTAOUAKIL
2864a15817 KPIs audit complet: reboot, disque 90%/80%, uptime > 4 mois, filtres cliquables
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:29:52 +02:00
Khalid MOUTAOUAKIL
09a039a6fd Fix route order: flow-map avant {audit_id}
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:27:48 +02:00
Khalid MOUTAOUAKIL
6834710af6 Fix CAST inet + IPv6 cleanup dans resolve_dest_server
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:23:32 +02:00
Khalid MOUTAOUAKIL
20cd9c7d80 Audit complet: import JSON, carte flux, carte applicative
- server_audit_full_service.py: SSH PSMP/cle, parsing, stockage JSONB, flow map
- server_audit.sh: script bash avec sudo (compatible PSMP cybsecope)
- audit_full router: import JSON, liste, detail, carte flux
- Templates: liste audits, detail 8 onglets, carte flux + carte applicative
- Jointures: server_id via servers, dest_server via server_ips
- Sous-menu Audit > Complet dans la sidebar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:06:55 +02:00
Khalid MOUTAOUAKIL
833c4fc3d2 Quick Win delete, UI planning/specifics reorganises, accents retires
- Safe Patching: bouton supprimer campagne (admin only)
- Safe Patching: boutons nouvelle campagne et planning en haut
- Safe Patching: message suppression dans les notifications
- Planning: formulaire ajouter deplace apres le Gantt (compact)
- Planning: accents retires des messages flash
- Specifics: formulaire ajouter deplace en haut avant le tableau
- Specifics: colonne Wave retiree, colonnes Stop/Start renommees

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 15:44:22 +02:00
Khalid MOUTAOUAKIL
49d5658475 Safe Patching wizard, SSE terminal, SSH password fallback, Qualys VMDR testé
Safe Patching Quick Win:
- Wizard 4 steps: Prérequis → Snapshot → Exécution → Post-patch
- Step 1: vérif SSH/disque/satellite par branche, exclure les KO
- Step 2: snapshot vSphere VMs
- Step 3: commande yum éditable, lancer hprod puis prod (100% requis)
- Step 4: vérification post-patch, export CSV
- Terminal SSE live (Server-Sent Events) avec couleurs
- Exclusion serveurs par checkbox dans chaque branche
- Label auto Quick Win SXX YYYY

SSH:
- Fallback password depuis settings si clé SSH absente
- Détection auto root (id -u) → pas de sudo si déjà root
- Testé sur VM doli CentOS 7 (10.0.2.4)

Qualys VMDR:
- API 2.0 testée et fonctionnelle avec compte sanef-ae
- Knowledge Base (CVE/QID/packages) accessible
- Host Detections (vulns par host) accessible
- Migration vers API 4.0 à prévoir (EOL dans 85 jours)

Qualys Agent installé sur doli (activation perso qg2)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 06:49:31 +02:00
Khalid MOUTAOUAKIL
977733343a Server pairs, campaign types, wave notes, in_progress fixes
- Table server_pairs: 682 paires prod/hprod auto-détectées via app_group
- Campaign types: standard, quickwin, safe_patching
- Patch waves: note explicative dans spécifiques
- Opérateur peut planifier en in_progress
- Limites intervenants visibles en in_progress
- Formulaires inline actifs en in_progress
- Backup DB uploadé sur Drive

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 05:32:37 +02:00
Khalid MOUTAOUAKIL
032e91a90c BOC SAP corrigé, stop/start order, patch waves, DMZ zone, préférences patching
- BOC SAP: stop_order ajouté (SolMan→CM→CC→AS→CI→HANA), conforme doc v3.1.4
- 3 serveurs BOC HO ajoutés (vpbocarep1, vpbocasec1, vpbocjump1)
- Patch waves: DNS (V1: 1+3, V2: 2+4), SMTP (V1: smtp2, V2: smtp1)
- Colonnes Stop order / Start order dans Spécifiques
- Campagne: colonne Zone (DMZ rouge, EMV jaune, LAN bleu) + KPI DMZ
- DMZ: filtre par zone au lieu de domaine (27 serveurs récupérés)
- Préférences patching: jour/heure éditables dans serveurs, hérités en campagne
- KPIs campagne en flex (une seule ligne)
- Limites intervenants: layout compact (max-width 400px)
- Tri campagne: domaine → hors-prod/prod → hostname
- Opérateur peut prendre en in_progress + planned
- Actions bulk campagne: prendre/assigner/exclure en masse
- Formulaires inline: fix Alpine.js → JS pur (display:none par défaut)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 03:52:46 +02:00
Khalid MOUTAOUAKIL
87a4585cf1 Sécurité: nginx CSP, ACL réseau, SSH hardening, PostgreSQL, assets locaux
- Nginx: headers HSTS/X-Frame/nosniff/CSP, rate limit login 5r/m
- CSP: self only, unsafe-inline (Tailwind JIT), object-src none, pas de CDN externe
- Assets locaux: Tailwind/HTMX/Alpine.js téléchargés dans /static/js/
- ACL réseau: table allowed_networks administrable depuis Settings
- Fichier /etc/nginx/patchcenter_acl.conf régénéré auto depuis la base
- PostgreSQL: logs connexion/déconnexion, requêtes lentes >1s, max 50 conn
- REVOKE CREATE pour user patchcenter, role readonly créé
- SSH: clé only, 3 tentatives, pas de TCP forwarding
- Backup toutes les 30min, rétention 3 jours
- Application 100% hors ligne (aucune dépendance internet côté navigateur)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 01:39:19 +02:00
Khalid MOUTAOUAKIL
a8f7329a48 Loading overlay, fix specifics edit, fix quotes, data-loading
- Overlay plein écran avec spinner pendant les actions longues
- data-loading attribute au lieu de onclick (évite problèmes quotes)
- Auto-attach JS sur tous les boutons data-loading
- Fix panel édition spécifiques (déplacé en haut)
- Fix double display:none sur overlay
- Messages descriptifs par action (resync, bulk, audit, prereqs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 01:07:12 +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
Khalid MOUTAOUAKIL
e0105e7e00 Fix assignations datalist restore + intervenant list filter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:28:40 +02:00
Khalid MOUTAOUAKIL
53c393b49b Permissions DB, créneaux auto, assignations, audit Splunk, accents
- Permissions 100% depuis user_permissions (plus de hardcode)
- Middleware injecte perms dans chaque requête
- Créneaux auto: 09h-12h30 / 14h-16h45, pas 15min, hprod lun-mar, prod mer-jeu
- Assignations par défaut: par domaine, app_type, zone, serveur (table default_assignments)
- Auto-liaison app_group: même intervenant recette+prod
- Audit Splunk: /var/log/patchcenter_audit.json (JSON one-line par event)
- Login/logout/campagnes/prereqs loggés en base + fichier
- Page erreur maintenance (500/404) avec contact SecOps
- Accents français dans toute lUI
- Operator affiché comme Intervenant
- Session 1h, redirect / vers dashboard si connecté
- Demo mode prereqs (DEMO_MODE=True)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:25:43 +02:00
Khalid MOUTAOUAKIL
ba8a969366 Campagnes: workflow complet, audit serveurs, assignation operateurs
- Workflow: draft → pending_validation (COMEP) → planned → in_progress → completed
- Prereqs auto: SSH, disque (1.2Go /, 800Mo /var), satellite
- Assignation: operateurs prennent/liberent, coordinateur assigne/force
- Limites par operateur par campagne (max_servers + raison)
- Default intervenant permanent par serveur (auto-assigne)
- Planning jours: lun+mar hors-prod, mer+jeu prod, jamais vendredi
- Preferences serveur: pref_patch_jour, pref_patch_heure (permanents)
- Audit serveurs: import Excel, 29 colonnes, KPIs, detail HTMX
- Jours en francais (Lun, Mar, Mer, Jeu)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 13:06:08 +02:00
Khalid MOUTAOUAKIL
7adb9e553c Add deployment guide for SANEF
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 03:04:14 +02:00
Khalid MOUTAOUAKIL
80a49ec540 Merge branch 'main' of https://github.com/kalidmoutaouakil-dot/SLPM 2026-04-04 03:00:48 +02:00
Khalid MOUTAOUAKIL
8277653c43 PatchCenter v2.0 — Initial commit
Modules: Dashboard, Serveurs, Campagnes, Planning, Specifiques, Settings, Users
Stack: FastAPI + Jinja2 + HTMX + Alpine.js + TailwindCSS + PostgreSQL
Features: Qualys sync, prereqs auto, planning annuel, server specifics, role-based access

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 03:00:12 +02:00
kalidmoutaouakil-dot
4d1500a736
Initial commit 2026-04-04 02:51:27 +02:00