From 9d1fccfe290fadc7c4154e6bdaa898b5840cf29b Mon Sep 17 00:00:00 2001 From: johnwang16 Date: Sat, 19 Oct 2024 15:12:33 -0400 Subject: [PATCH 1/2] Add connection event for devices already connected --- server/networkscan.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/networkscan.py b/server/networkscan.py index 20e3f281..7d28aeb9 100755 --- a/server/networkscan.py +++ b/server/networkscan.py @@ -206,10 +206,10 @@ def insert_events (db): END, '', 1 - FROM LatestEventsPerMAC AS d - JOIN CurrentScan AS c ON d.dev_MAC = c.cur_MAC + FROM CurrentScan AS c + LEFT JOIN LatestEventsPerMAC AS d ON d.dev_MAC = c.cur_MAC LEFT JOIN LatestEventsPerMAC AS last_event ON d.dev_MAC = last_event.eve_MAC - WHERE d.dev_PresentLastScan = 0 + WHERE d.dev_PresentLastScan = 0 OR d.dev_MAC IS NULL """) # Check disconnections From 400edd35d1dce6b33216dc9bac53df1e26b2bdec Mon Sep 17 00:00:00 2001 From: johnwang16 Date: Sat, 19 Oct 2024 21:24:51 -0400 Subject: [PATCH 2/2] refactor redundant joins, bugfix event insert --- server/database.py | 3 ++- server/device.py | 7 ++----- server/networkscan.py | 5 ++--- server/plugin.py | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/server/database.py b/server/database.py index 08ed187b..d1c7a079 100755 --- a/server/database.py +++ b/server/database.py @@ -549,7 +549,8 @@ class DB(): cur_SSID STRING(250), cur_NetworkNodeMAC STRING(250), cur_PORT STRING(250), - cur_Type STRING(250) + cur_Type STRING(250), + UNIQUE(cur_MAC) ); """) diff --git a/server/device.py b/server/device.py index ffabdb53..09703500 100755 --- a/server/device.py +++ b/server/device.py @@ -93,10 +93,7 @@ def save_scanned_devices (db): # Proceed if variable contains valid MAC if check_mac_or_internet(local_mac): - # Check if local mac has been detected with other methods - sql.execute (f"SELECT COUNT(*) FROM CurrentScan WHERE cur_MAC = '{local_mac}'") - if sql.fetchone()[0] == 0 : - sql.execute (f"""INSERT INTO CurrentScan (cur_MAC, cur_IP, cur_Vendor, cur_ScanMethod) VALUES ( '{local_mac}', '{local_ip}', Null, 'local_MAC') """) + sql.execute (f"""INSERT OR IGNORE INTO CurrentScan (cur_MAC, cur_IP, cur_Vendor, cur_ScanMethod) VALUES ( '{local_mac}', '{local_ip}', Null, 'local_MAC') """) #------------------------------------------------------------------------------- def print_scan_stats(db): @@ -769,4 +766,4 @@ def guess_type(vendor, mac, ip, name, default): result = "Router" return result - \ No newline at end of file + diff --git a/server/networkscan.py b/server/networkscan.py index 7d28aeb9..a7f631c0 100755 --- a/server/networkscan.py +++ b/server/networkscan.py @@ -207,9 +207,8 @@ def insert_events (db): '', 1 FROM CurrentScan AS c - LEFT JOIN LatestEventsPerMAC AS d ON d.dev_MAC = c.cur_MAC - LEFT JOIN LatestEventsPerMAC AS last_event ON d.dev_MAC = last_event.eve_MAC - WHERE d.dev_PresentLastScan = 0 OR d.dev_MAC IS NULL + LEFT JOIN LatestEventsPerMAC AS last_event ON c.cur_MAC = last_event.eve_MAC + WHERE last_event.dev_PresentLastScan = 0 OR last_event.eve_MAC IS NULL """) # Check disconnections diff --git a/server/plugin.py b/server/plugin.py index 568137a4..bbdf5c30 100755 --- a/server/plugin.py +++ b/server/plugin.py @@ -747,7 +747,7 @@ def process_plugin_events(db, plugin, pluginsState, plugEventsArr): sqlParams.append(tuple(tmpList)) # Generate the SQL INSERT query using the collected information. - q = f'INSERT into {dbTable} ({columnsStr}) VALUES ({valuesStr})' + q = f'INSERT OR IGNORE INTO {dbTable} ({columnsStr}) VALUES ({valuesStr})' # Log a debug message showing the generated SQL query for mapping. mylog('debug', ['[Plugins] SQL query for mapping: ', q])