Sync Qualys FQDN to servers + use fqdn first for DNS resolution
This commit is contained in:
parent
92175992f8
commit
a422894f83
@ -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()
|
||||
|
||||
@ -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:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user