92175992f8
Qualys: tagName + CONTAINS (API field, not UI syntax)
2026-04-14 14:53:54 +02:00
a19281a771
Qualys filter: CONTAINS instead of EQUALS for tag
2026-04-14 14:48:29 +02:00
a331d16a12
Qualys filter: tags.name instead of tagName
2026-04-14 14:47:48 +02:00
faa267c3ff
Add SANEF contacts import script
2026-04-14 14:22:03 +02:00
612f3c7cea
Add SANEF IPs import script (from Interface réseau export)
2026-04-14 13:57:27 +02:00
b72f1244dd
Use autocommit mode to persist inserts immediately
2026-04-14 13:43:25 +02:00
c6113bc537
Drop ON CONFLICT (no unique constraint on hostname)
2026-04-14 13:39:11 +02:00
2215067987
Use savepoints per row to isolate failing inserts
2026-04-14 13:38:16 +02:00
f0fe6eba81
Fix etat mapping: use only production/implementation/stock/obsolete/eol
2026-04-14 13:34:07 +02:00
42fb16d67e
Fix import script: auto-detect FK tables before truncate
2026-04-14 13:31:00 +02:00
338c0ecc0f
Add SANEF asset CSV import script
2026-04-14 13:24:42 +02:00
053c9a3b59
Add Voir detail button and results route for realtime audit
2026-04-14 13:10:23 +02:00
747e883d22
Smart DNS suffix order based on hostname convention (r=rec, p/i=prod)
2026-04-14 13:02:24 +02:00
53545585f0
Configurable DNS suffixes + 2s socket timeout for faster resolve
2026-04-14 12:58:54 +02:00
da1042fef4
Fix SSH key: read PEM content from settings + ssh_key_default_user
2026-04-14 12:56:09 +02:00
8dba0706b0
Filter Qualys agent refresh on tag name=server
2026-04-14 12:18:43 +02:00
3d61293172
Add demo DB dump for deployment
2026-04-14 11:43:50 +02:00
5db5feebe1
Add requirements.txt for deployment
2026-04-14 11:38:58 +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
6411774004
Fix deploy page: NoneType sort + version extraite du nom fichier dans dropdown
2026-04-11 21:39: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
1f0c00c1dc
Suppression menu Specifiques de la navigation
2026-04-11 21:01:32 +02:00
32d602975b
Sync contacts: role depuis Teams iTop (SecOps→referent_technique, iPOP→responsable_applicatif)
2026-04-11 14:33:12 +02:00
3707308063
Sync iTop: responsables domaine par fréquence + emails
...
- domain_environments.responsable_nom/email = responsable_domaine iTop le plus fréquent par couple domaine×env
- servers.responsable_nom/email = responsable_serveur iTop (par VM)
- servers.referent_nom/email = responsable_domaine iTop (par VM)
- Mapping Excel: Resp Domaine DTS → domain_environments.responsable, Valideur RA = par serveur
2026-04-11 14:22:29 +02:00
73cec814b6
Fix: typologies iTop sans org_id (DomaineApplicatif, Environnement, Zone, DomainLdap)
2026-04-11 14:01:20 +02:00
df4cd3be6f
Sync iTop: import emails responsable serveur/domaine dans servers + domain_environments
2026-04-11 13:55:25 +02:00
29e5a28a27
Fix: KeyError 'updated' → 'servers_updated' dans sync_to route
2026-04-11 13:36:23 +02:00
6683813743
Export iTop: sync responsable serveur et responsable domaine
2026-04-11 13:26:51 +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
1ff6b3fd4d
Sync to iTop: export referentiel (environnements, domaines, zones) + serveurs
2026-04-11 04:17:22 +02:00
66eeff99e8
Sync iTop: import IPs dans server_ips + traceback sur erreur sync
2026-04-11 03:54:45 +02:00
322fa71324
Fix sync iTop: champs corrects (patch_window, contacts.role, ssh_method constraint, rollback)
2026-04-11 03:20:04 +02:00
be6c5158b8
Sync iTop: tous les champs custom (tier, connexion, ssh_user, patch_freq, pref_jour/heure, domain_ldap, excludes)
...
Correspondance complete iTop <-> PatchCenter:
- tier_name -> tier (Tier 0 -> tier0)
- connexion_method_name -> ssh_method
- ssh_user_name -> ssh_user
- patch_frequency_name -> patch_frequency (Monthly -> monthly)
- pref_patch_jour_name -> pref_patch_jour
- pref_patch_heure_name -> pref_patch_heure
- patch_excludes -> patch_excludes
- domain_ldap_name -> domain_ltd
2026-04-11 02:28:39 +02:00
3b5f0992b3
Refonte sync iTop: import complet contacts/domaines/envs/zones/serveurs
...
- Tables referentielles videes (iTop = maitre)
- Import: Person -> contacts, domaine_applicatif -> domains, environnement -> environments, zone -> zones
- Import: domain_environments auto-crees depuis les combinaisons VM
- Import: VirtualMachine + Server avec responsable_serveur, responsable_domaine, IP, OS, description
- Export: status, description, creation VMs manquantes
- Matching par hostname court (sans FQDN)
2026-04-11 01:58:31 +02:00
ba48e75b68
Fix matching iTop: compare aussi par hostname court (sans .mpcz.fr)
2026-04-11 00:23:33 +02:00
db74111d58
Sync iTop enrichie: responsable_serveur + responsable_domaine + creation VMs
...
- Import: responsable_serveur_name → responsable_nom, responsable_domaine_name → referent_nom
- Import: environnement iTop synchronise
- Export: cree les VMs manquantes dans iTop (classe VirtualMachine, org MPCZ)
- Export: hostname comme nom (pas fqdn)
2026-04-11 00:14:09 +02:00
53e59e7305
Sync iTop: ajout responsable serveur (contacts_list) + commentaire/description
2026-04-10 23:23:48 +02:00
f73ea25d5d
Referentiel: boutons sync iTop (import/export) + messages status
2026-04-10 23:17:58 +02:00
acf20c5890
Service iTop REST: synchro bidirectionnelle serveurs + contacts
...
- ITopClient: wrapper REST API v1.3 (get/create/update servers, contacts)
- sync_from_itop: import serveurs + contacts iTop vers PatchCenter
- sync_to_itop: export serveurs PatchCenter vers iTop
- Correspondance champs: hostname/name, os/osversion, etat/status, contacts
- Config iTop dans app_secrets (url, user, pass)
2026-04-10 23:11:32 +02:00
33dd3a779e
Fix: GET /audit/realtime redirige vers dashboard au lieu de crash int_parsing
2026-04-10 22:49:05 +02:00
4801d805b1
Fix: ip_type='primary' au lieu de 'ipv4' dans server_ips
2026-04-10 20:57:14 +02:00