Sync Qualys FQDN to servers + use fqdn first for DNS resolution

This commit is contained in:
Pierre & Lumière 2026-04-14 15:00:40 +02:00
parent 92175992f8
commit a422894f83
2 changed files with 25 additions and 0 deletions

View File

@ -586,6 +586,10 @@ def refresh_all_agents(db):
srv = db.execute(text("SELECT id FROM servers WHERE LOWER(hostname)=LOWER(:h)"),
{"h": hostname}).fetchone()
server_id = srv.id if srv else None
# Sync du FQDN Qualys vers servers.fqdn si présent
if server_id and fqdn:
db.execute(text("UPDATE servers SET fqdn=:fqdn WHERE id=:sid AND (fqdn IS NULL OR fqdn='')"),
{"fqdn": fqdn, "sid": server_id})
existing = db.execute(text("SELECT id FROM qualys_assets WHERE qualys_asset_id=:qid"),
{"qid": int(asset_id)}).fetchone()

View File

@ -97,6 +97,27 @@ def _ordered_suffixes(hostname):
def _resolve(hostname):
# 1. Essaie d'abord le FQDN stocké en base (issu de Qualys ou iTop)
try:
from .secrets_service import get_secret # noqa
from ..database import SessionLocal
db = SessionLocal()
row = db.execute(text("SELECT fqdn FROM servers WHERE LOWER(hostname)=LOWER(:h) AND fqdn IS NOT NULL AND fqdn != ''"),
{"h": hostname}).fetchone()
db.close()
if row and row.fqdn:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
r = sock.connect_ex((row.fqdn, 22))
sock.close()
if r == 0:
return row.fqdn
except Exception:
pass
except Exception:
pass
# 2. Fallback : boucle sur les suffixes DNS
for suffix in _ordered_suffixes(hostname):
target = hostname + suffix
try: