diff --git a/app/services/server_audit_full_service.py b/app/services/server_audit_full_service.py index 3d8b363..f0ba6fc 100644 --- a/app/services/server_audit_full_service.py +++ b/app/services/server_audit_full_service.py @@ -271,13 +271,20 @@ def _resolve_server_id(db, hostname): def _resolve_dest_server(db, dest_ip): - row = db.execute(text(""" - SELECT s.id, s.hostname FROM servers s - JOIN server_ips si ON s.id = si.server_id - WHERE si.ip_address = :ip::inet - LIMIT 1 - """), {"ip": dest_ip}).fetchone() - return (row.id, row.hostname) if row else (None, None) + # Nettoyer l'IP (retirer IPv6-mapped prefix, brackets) + clean_ip = dest_ip.replace("[::ffff:", "").replace("]", "").strip() + if not clean_ip or ":" in clean_ip: + return (None, None) # IPv6 pure, skip + try: + row = db.execute(text(""" + SELECT s.id, s.hostname FROM servers s + JOIN server_ips si ON s.id = si.server_id + WHERE si.ip_address = CAST(:ip AS inet) + LIMIT 1 + """), {"ip": clean_ip}).fetchone() + return (row.id, row.hostname) if row else (None, None) + except Exception: + return (None, None) def save_audit_to_db(db, parsed, raw_output="", status="ok", error_msg=None):