Enroll on first contact — 1 source is better than none
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user