"""CONSTANTS for NetAlertX""" import os from config_paths import ( API_PATH_STR, API_PATH_WITH_TRAILING_SEP, APP_PATH_STR, CONFIG_PATH_STR, CONFIG_PATH_WITH_TRAILING_SEP, DATA_PATH_STR, DB_PATH_STR, DB_PATH_WITH_TRAILING_SEP, LOG_PATH_STR, LOG_PATH_WITH_TRAILING_SEP, PLUGINS_PATH_WITH_TRAILING_SEP, REPORT_TEMPLATES_PATH_WITH_TRAILING_SEP, ) # =============================================================================== # PATHS # =============================================================================== applicationPath = APP_PATH_STR dataPath = DATA_PATH_STR configPath = CONFIG_PATH_STR dbFolderPath = DB_PATH_STR apiRoot = API_PATH_STR logRoot = LOG_PATH_STR dbFileName = "app.db" confFileName = "app.conf" confPath = CONFIG_PATH_WITH_TRAILING_SEP + confFileName dbPath = DB_PATH_WITH_TRAILING_SEP + dbFileName pluginsPath = PLUGINS_PATH_WITH_TRAILING_SEP.rstrip(os.sep) logPath = LOG_PATH_WITH_TRAILING_SEP.rstrip(os.sep) apiPath = API_PATH_WITH_TRAILING_SEP reportTemplatesPath = REPORT_TEMPLATES_PATH_WITH_TRAILING_SEP fullConfFolder = configPath fullConfPath = confPath fullDbPath = dbPath vendorsPath = os.getenv("VENDORSPATH", "/usr/share/arp-scan/ieee-oui.txt") vendorsPathNewest = os.getenv( "VENDORSPATH_NEWEST", "/usr/share/arp-scan/ieee-oui_all_filtered.txt" ) NATIVE_SPEEDTEST_PATH = os.getenv("NATIVE_SPEEDTEST_PATH", "/usr/bin/speedtest") default_tz = "Europe/Berlin" # =============================================================================== # Magic strings # =============================================================================== NULL_EQUIVALENTS = ["", "null", "(unknown)", "(Unknown)", "(name not found)"] # Convert list to SQL string: wrap each value in single quotes and escape single quotes if needed NULL_EQUIVALENTS_SQL = ",".join("'" + v.replace("'", "''") + "'" for v in NULL_EQUIVALENTS) # =============================================================================== # SQL queries # =============================================================================== sql_devices_all = """ SELECT * FROM DevicesView """ sql_appevents = """select * from AppEvents order by dateTimeCreated desc""" sql_devices_filters = """ SELECT DISTINCT 'devSite' AS columnName, devSite AS columnValue, devSite AS columnLabel FROM Devices WHERE devSite NOT IN ('', 'null') 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 UNION SELECT DISTINCT 'devOwner' AS columnName, devOwner AS columnValue, devOwner AS columnLabel FROM Devices WHERE devOwner NOT IN ('', 'null') 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 UNION SELECT DISTINCT 'devGroup' AS columnName, devGroup AS columnValue, devGroup AS columnLabel FROM Devices WHERE devGroup NOT IN ('', 'null') 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 UNION SELECT DISTINCT 'devVendor' AS columnName, devVendor AS columnValue, devVendor AS columnLabel FROM Devices WHERE devVendor NOT IN ('', 'null') 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 UNION SELECT DISTINCT 'devVlan' AS columnName, devVlan AS columnValue, devVlan AS columnLabel FROM Devices WHERE devVlan NOT IN ('', 'null') 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 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 UNION SELECT DISTINCT 'devSSID' AS columnName, devSSID AS columnValue, devSSID AS columnLabel FROM Devices WHERE devSSID NOT IN ('', 'null') AND devSSID IS NOT NULL ORDER BY columnName; """ sql_devices_stats = f""" SELECT onlineDevices as online, downDevices as down, allDevices as 'all', archivedDevices as archived, (SELECT COUNT(*) FROM Devices a WHERE devIsNew = 1) as new, (SELECT COUNT(*) FROM Devices a WHERE devName IN ({NULL_EQUIVALENTS_SQL}) OR devName IS NULL) as unknown FROM Online_History ORDER BY scanDate DESC LIMIT 1 """ sql_events_pending_alert = "SELECT * FROM Events where evePendingAlertEmail is not 0" sql_events_all = "SELECT rowid, * FROM Events ORDER BY eveDateTime DESC" sql_settings = "SELECT * FROM Settings" sql_plugins_objects = "SELECT * FROM Plugins_Objects" sql_plugins_stats = """SELECT 'objects' AS tableName, plugin, COUNT(*) AS cnt FROM Plugins_Objects GROUP BY plugin UNION ALL SELECT 'events', plugin, COUNT(*) FROM Plugins_Events GROUP BY plugin UNION ALL SELECT 'history', plugin, COUNT(*) FROM Plugins_History GROUP BY plugin""" sql_language_strings = "SELECT * FROM Plugins_Language_Strings" sql_notifications_all = "SELECT * FROM Notifications" sql_online_history = "SELECT * FROM Online_History" sql_plugins_events = "SELECT * FROM Plugins_Events" sql_plugins_history = "SELECT * FROM Plugins_History ORDER BY dateTimeChanged DESC" sql_new_devices = """SELECT * FROM ( SELECT eveIp as devLastIP, eveMac as devMac, MAX(eveDateTime) as lastEvent FROM Events_Devices WHERE evePendingAlertEmail = 1 AND eveEventType = 'New Device' GROUP BY eveMac ORDER BY lastEvent ) t1 LEFT JOIN ( SELECT devName, devMac as devMac_t2 FROM Devices ) t2 ON t1.devMac = t2.devMac_t2""" sql_generateGuid = """ lower( hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-' || '4' || substr(hex( randomblob(2)), 2) || '-' || substr('AB89', 1 + (abs(random()) % 4) , 1) || substr(hex(randomblob(2)), 2) || '-' || hex(randomblob(6)) ) """