Enroll on first contact — 1 source is better than none

This commit is contained in:
Cobra
2026-04-14 14:21:52 -04:00
parent b50fc4238b
commit c01064c12e
+5 -5
View File
@@ -218,7 +218,7 @@ def _fire_active_probes(identity_id: str, mac: str, signal_type: str, dhcp_fp: s
def _fire_enrollment_callback(identity_id: str) -> None:
"""Called when a device meets enrollment criteria (2+ signal types or mdns present).
"""Called when a device meets enrollment criteria (1+ signal types).
Logs enrollment, sends no alert (silent enrollment).
Caller must hold device_store_lock.
@@ -263,7 +263,7 @@ def _correlate_or_create_identity(mac: str, signal_type: str, dhcp_fp: str = "",
dev['signal_types'].add(signal_category)
logging.debug(f"MAC {mac} already linked to identity {iid}, updated {signal_category} signal")
# Check if meets enrollment criteria: (2+ signal types) OR (mdns present)
if not dev['enrolled'] and (len(dev['signal_types']) >= 2 or 'mdns' in dev['signal_types']):
if not dev['enrolled'] and len(dev['signal_types']) >= 1:
_fire_enrollment_callback(iid)
return iid
@@ -292,7 +292,7 @@ def _correlate_or_create_identity(mac: str, signal_type: str, dhcp_fp: str = "",
# Add wifi signal type if not already present
dev['signal_types'].add('wifi')
# Check if meets enrollment criteria: (2+ signal types) OR (mdns present)
if not dev['enrolled'] and (len(dev['signal_types']) >= 2 or 'mdns' in dev['signal_types']):
if not dev['enrolled'] and len(dev['signal_types']) >= 1:
_fire_enrollment_callback(iid)
return iid
@@ -322,7 +322,7 @@ def _correlate_or_create_identity(mac: str, signal_type: str, dhcp_fp: str = "",
dev['signal_types'].add(signal_category)
dev['last_seen'][mac] = time.time()
# Check if meets enrollment criteria: (2+ signal types) OR (mdns present)
if not dev['enrolled'] and (len(dev['signal_types']) >= 2 or 'mdns' in dev['signal_types']):
if not dev['enrolled'] and len(dev['signal_types']) >= 1:
_fire_enrollment_callback(identity_id)
logging.debug(f"Updated device identity {identity_id} with {signal_type} signal (MAC: {mac})")
else:
@@ -369,7 +369,7 @@ def _ingest_signal(mac: str, signal_type: str, dhcp_fp: str = "", handoff_seq: i
dev['last_seen'][mac] = time.time()
# Enrollment check: if we have (2+ distinct signal types) OR (mdns present) and not yet enrolled
if not dev['enrolled'] and (len(dev['signal_types']) >= 2 or 'mdns' in dev['signal_types']):
if not dev['enrolled'] and len(dev['signal_types']) >= 1:
_fire_enrollment_callback(identity_id)
# Eviction: if device_store exceeds 500 entries, evict 100 oldest by first_seen