"""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 FROM Devices WHERE devSite NOT IN ('', 'null') AND devSite IS NOT NULL UNION SELECT DISTINCT 'devSourcePlugin' AS columnName, devSourcePlugin AS columnValue FROM Devices WHERE devSourcePlugin NOT IN ('', 'null') AND devSourcePlugin IS NOT NULL UNION SELECT DISTINCT 'devOwner' AS columnName, devOwner AS columnValue FROM Devices WHERE devOwner NOT IN ('', 'null') AND devOwner IS NOT NULL UNION SELECT DISTINCT 'devType' AS columnName, devType AS columnValue FROM Devices WHERE devType NOT IN ('', 'null') AND devType IS NOT NULL UNION SELECT DISTINCT 'devGroup' AS columnName, devGroup AS columnValue FROM Devices WHERE devGroup NOT IN ('', 'null') AND devGroup IS NOT NULL UNION SELECT DISTINCT 'devLocation' AS columnName, devLocation AS columnValue FROM Devices WHERE devLocation NOT IN ('', 'null') AND devLocation IS NOT NULL UNION SELECT DISTINCT 'devVendor' AS columnName, devVendor AS columnValue FROM Devices WHERE devVendor NOT IN ('', 'null') AND devVendor IS NOT NULL UNION SELECT DISTINCT 'devSyncHubNode' AS columnName, devSyncHubNode AS columnValue FROM Devices WHERE devSyncHubNode NOT IN ('', 'null') AND devSyncHubNode IS NOT NULL UNION SELECT DISTINCT 'devVlan' AS columnName, devVlan AS columnValue FROM Devices WHERE devVlan NOT IN ('', 'null') AND devVlan IS NOT NULL UNION SELECT DISTINCT 'devParentRelType' AS columnName, devParentRelType AS columnValue FROM Devices WHERE devParentRelType NOT IN ('', 'null') AND devParentRelType IS NOT NULL UNION SELECT DISTINCT 'devSSID' AS columnName, devSSID AS columnValue 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_settings = "SELECT * FROM Settings" sql_plugins_objects = "SELECT * FROM Plugins_Objects" 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)) ) """