diff --git a/server/const.py b/server/const.py index 34cd033a..9762ed69 100755 --- a/server/const.py +++ b/server/const.py @@ -68,46 +68,46 @@ sql_devices_all = """ """ sql_appevents = """select * from AppEvents order by dateTimeCreated desc""" -sql_devices_filters = """ +sql_devices_filters = f""" SELECT DISTINCT 'devSite' AS columnName, devSite AS columnValue, devSite AS columnLabel - FROM Devices WHERE devSite NOT IN ('', 'null') AND devSite IS NOT NULL + FROM Devices WHERE devSite NOT IN ({NULL_EQUIVALENTS_SQL}) AND devSite IS NOT NULL UNION SELECT DISTINCT 'devSourcePlugin' AS columnName, devSourcePlugin AS columnValue, devSourcePlugin AS columnLabel - FROM Devices WHERE devSourcePlugin NOT IN ('', 'null') AND devSourcePlugin IS NOT NULL + FROM Devices WHERE devSourcePlugin NOT IN ({NULL_EQUIVALENTS_SQL}) AND devSourcePlugin IS NOT NULL UNION SELECT DISTINCT 'devOwner' AS columnName, devOwner AS columnValue, devOwner AS columnLabel - FROM Devices WHERE devOwner NOT IN ('', 'null') AND devOwner IS NOT NULL + FROM Devices WHERE devOwner NOT IN ({NULL_EQUIVALENTS_SQL}) AND devOwner IS NOT NULL UNION SELECT DISTINCT 'devType' AS columnName, devType AS columnValue, devType AS columnLabel - FROM Devices WHERE devType NOT IN ('', 'null') AND devType IS NOT NULL + FROM Devices WHERE devType NOT IN ({NULL_EQUIVALENTS_SQL}) AND devType IS NOT NULL UNION SELECT DISTINCT 'devGroup' AS columnName, devGroup AS columnValue, devGroup AS columnLabel - FROM Devices WHERE devGroup NOT IN ('', 'null') AND devGroup IS NOT NULL + FROM Devices WHERE devGroup NOT IN ({NULL_EQUIVALENTS_SQL}) AND devGroup IS NOT NULL UNION SELECT DISTINCT 'devLocation' AS columnName, devLocation AS columnValue, devLocation AS columnLabel - FROM Devices WHERE devLocation NOT IN ('', 'null') AND devLocation IS NOT NULL + FROM Devices WHERE devLocation NOT IN ({NULL_EQUIVALENTS_SQL}) AND devLocation IS NOT NULL UNION SELECT DISTINCT 'devVendor' AS columnName, devVendor AS columnValue, devVendor AS columnLabel - FROM Devices WHERE devVendor NOT IN ('', 'null') AND devVendor IS NOT NULL + FROM Devices WHERE devVendor NOT IN ({NULL_EQUIVALENTS_SQL}) AND devVendor IS NOT NULL UNION SELECT DISTINCT 'devSyncHubNode' AS columnName, devSyncHubNode AS columnValue, devSyncHubNode AS columnLabel - FROM Devices WHERE devSyncHubNode NOT IN ('', 'null') AND devSyncHubNode IS NOT NULL + FROM Devices WHERE devSyncHubNode NOT IN ({NULL_EQUIVALENTS_SQL}) AND devSyncHubNode IS NOT NULL UNION SELECT DISTINCT 'devVlan' AS columnName, devVlan AS columnValue, devVlan AS columnLabel - FROM Devices WHERE devVlan NOT IN ('', 'null') AND devVlan IS NOT NULL + FROM Devices WHERE devVlan NOT IN ({NULL_EQUIVALENTS_SQL}) AND devVlan IS NOT NULL UNION SELECT 'devParentMAC' AS columnName, d.devParentMAC AS columnValue, COALESCE(p.devName, d.devParentMAC) AS columnLabel FROM Devices d LEFT JOIN Devices p ON LOWER(p.devMac) = LOWER(d.devParentMAC) - WHERE d.devParentMAC NOT IN ('', 'null') AND d.devParentMAC IS NOT NULL + WHERE d.devParentMAC NOT IN ({NULL_EQUIVALENTS_SQL}) AND d.devParentMAC IS NOT NULL GROUP BY d.devParentMAC COLLATE NOCASE UNION SELECT DISTINCT 'devParentRelType' AS columnName, devParentRelType AS columnValue, devParentRelType AS columnLabel - FROM Devices WHERE devParentRelType NOT IN ('', 'null') AND devParentRelType IS NOT NULL + FROM Devices WHERE devParentRelType NOT IN ({NULL_EQUIVALENTS_SQL}) AND devParentRelType IS NOT NULL UNION SELECT DISTINCT 'devSSID' AS columnName, devSSID AS columnValue, devSSID AS columnLabel - FROM Devices WHERE devSSID NOT IN ('', 'null') AND devSSID IS NOT NULL + FROM Devices WHERE devSSID NOT IN ({NULL_EQUIVALENTS_SQL}) AND devSSID IS NOT NULL ORDER BY columnName; """ diff --git a/server/scan/device_handling.py b/server/scan/device_handling.py index 5479f471..1029caa8 100755 --- a/server/scan/device_handling.py +++ b/server/scan/device_handling.py @@ -5,7 +5,7 @@ import ipaddress from helper import get_setting_value, check_IP_format from utils.datetime_utils import timeNowUTC, normalizeTimeStamp from logger import mylog, Logger -from const import vendorsPath, vendorsPathNewest, sql_generateGuid, NULL_EQUIVALENTS +from const import vendorsPath, vendorsPathNewest, sql_generateGuid, NULL_EQUIVALENTS, NULL_EQUIVALENTS_SQL from models.device_instance import DeviceInstance from scan.name_resolution import NameResolver from scan.device_heuristics import guess_icon, guess_type @@ -246,16 +246,16 @@ def update_sync_hub_node(db): Mirrors the fallback already used in create_new_devices. """ sql = db.sql - node_name = get_setting_value("SYNC_node_name") + node_name = str(get_setting_value("SYNC_node_name") or "").strip() if not node_name: return sql.execute( - """ + f""" UPDATE Devices SET devSyncHubNode = ? - WHERE COALESCE(devSyncHubNode, '') IN ('', 'null') + WHERE COALESCE(LOWER(TRIM(devSyncHubNode)), '') IN ({NULL_EQUIVALENTS_SQL}) """, (node_name,), ) @@ -401,11 +401,11 @@ def update_icons_and_types(db): if get_setting_value("NEWDEV_replace_preset_icon"): query = f"""SELECT * FROM Devices - WHERE devIcon in ('', 'null', '{default_icon}') + WHERE devIcon in ({NULL_EQUIVALENTS_SQL}, '{default_icon}') OR devIcon IS NULL""" else: - query = """SELECT * FROM Devices - WHERE devIcon in ('', 'null') + query = f"""SELECT * FROM Devices + WHERE devIcon in ({NULL_EQUIVALENTS_SQL}) OR devIcon IS NULL""" for device in sql.execute(query): @@ -429,8 +429,8 @@ def update_icons_and_types(db): # Guess Type recordsToUpdate = [] - query = """SELECT * FROM Devices - WHERE devType in ('', 'null') + query = f"""SELECT * FROM Devices + WHERE devType in ({NULL_EQUIVALENTS_SQL}) OR devType IS NULL""" default_type = get_setting_value("NEWDEV_devType") @@ -552,7 +552,7 @@ def save_scanned_devices(db): def print_scan_stats(db): sql = db.sql # TO-DO - query = """ + query = f""" SELECT (SELECT COUNT(*) FROM CurrentScan) AS devices_detected, (SELECT COUNT(*) FROM CurrentScan WHERE NOT EXISTS (SELECT 1 FROM Devices WHERE devMac = scanMac)) AS new_devices, @@ -567,7 +567,7 @@ def print_scan_stats(db): (SELECT COUNT(*) FROM Devices, CurrentScan WHERE devMac = scanMac AND scanLastIP IS NOT NULL - AND scanLastIP NOT IN ('', 'null', '(unknown)', '(Unknown)') + AND scanLastIP NOT IN ({NULL_EQUIVALENTS_SQL}) AND scanLastIP <> COALESCE(devPrimaryIPv4, '') AND scanLastIP <> COALESCE(devPrimaryIPv6, '') AND scanLastIP <> COALESCE(devLastIP, '')