BE/PLG: TZ timestamp work #1251

Signed-off-by: jokob-sk <jokob.sk@gmail.com>
This commit is contained in:
jokob-sk
2025-11-03 10:19:39 +11:00
parent 4c92a941a8
commit 288427c939
9 changed files with 33 additions and 44 deletions

View File

@@ -3,6 +3,7 @@ import subprocess
import conf
import os
import re
import datetime
from dateutil import parser
# Register NetAlertX directories
@@ -55,7 +56,7 @@ def exclude_ignored_devices(db):
#-------------------------------------------------------------------------------
def update_devices_data_from_scan (db):
sql = db.sql #TO-DO
startTime = timeNowTZ().strftime('%Y-%m-%d %H:%M:%S')
startTime = timeNowTZ().astimezone().isoformat()
# Update Last Connection
mylog('debug', '[Update Devices] 1 Last Connection')
@@ -528,23 +529,27 @@ def update_devices_names(pm):
# --- Short-circuit if no name-resolution plugin has changed ---
name_plugins = ["DIGSCAN", "NSLOOKUP", "NBTSCAN", "AVAHISCAN"]
# Retrieve last time name resolution was checked (string or datetime)
last_checked_str = pm.name_plugins_checked
last_checked_dt = parser.parse(last_checked_str) if isinstance(last_checked_str, str) else last_checked_str
# Retrieve last time name resolution was checked
last_checked = pm.name_plugins_checked
# Collect valid state update timestamps for name-related plugins
state_times = []
for p in name_plugins:
state_updated = pm.plugin_states.get(p, {}).get("stateUpdated")
if state_updated and state_updated.strip(): # skip empty or None
if state_updated: # skip empty or None
state_times.append(state_updated)
# Determine the latest valid stateUpdated timestamp
latest_state_str = max(state_times, default=None)
latest_state_dt = parser.parse(latest_state_str) if latest_state_str else None
if isinstance(latest_state_str, datetime.datetime):
latest_state = latest_state_str
elif latest_state_str:
latest_state = parser.parse(latest_state_str)
else:
latest_state = None
# Skip if no plugin state changed since last check
if last_checked_dt and latest_state_dt and latest_state_dt <= last_checked_dt:
if last_checked and latest_state and latest_state <= last_checked:
mylog('debug', '[Update Device Name] No relevant name plugin changes since last check — skipping update.')
return