feat: Update plugin configurations to include additional SET_EMPTY options

This commit is contained in:
Jokob @NetAlertX
2026-01-21 08:48:47 +00:00
parent 54d01f0a65
commit 9f1d04bcd4
22 changed files with 81 additions and 167 deletions

View File

@@ -380,7 +380,11 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -354,7 +354,10 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -313,7 +313,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devVendor",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -174,7 +174,10 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -728,7 +728,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -350,7 +350,11 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -343,7 +343,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -457,7 +457,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -177,7 +177,11 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -430,7 +430,8 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -314,7 +314,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -498,7 +498,10 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -514,7 +514,12 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devParentMAC",
"devSSID",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -487,7 +487,13 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devParentMAC",
"devSSID",
"devType",
"devSourcePlugin",
"devSite"
],
"localized": ["name", "description"],
"name": [

View File

@@ -164,7 +164,8 @@
"devName",
"devLastIP",
"devVendor",
"devFQDN"
"devMac",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -230,7 +230,11 @@
},
"default_value": [],
"options": [
"devLastIP"
"devMac",
"devLastIP",
"devName",
"devVendor",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -632,7 +632,9 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -643,7 +643,11 @@
"default_value": [],
"options": [
"devMac",
"devLastIP"
"devLastIP",
"devName",
"devVendor",
"devSyncHubNode",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -548,7 +548,9 @@
"devMac",
"devLastIP",
"devName",
"devParentMAC"
"devParentMAC",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -972,7 +972,9 @@
"devVendor",
"devSSID",
"devParentMAC",
"devParentPort"
"devParentPort",
"devType",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -274,7 +274,9 @@
"options": [
"devMac",
"devVendor",
"devName"
"devName",
"devLastIP",
"devSourcePlugin"
],
"localized": ["name", "description"],
"name": [

View File

@@ -72,103 +72,6 @@ def ip_test_db():
conn.close()
@pytest.fixture
def new_device_db():
"""Create an in-memory SQLite database for create_new_devices tests."""
conn = sqlite3.connect(":memory:")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute(
"""
CREATE TABLE Devices (
devMac TEXT PRIMARY KEY,
devName TEXT,
devVendor TEXT,
devLastIP TEXT,
devPrimaryIPv4 TEXT,
devPrimaryIPv6 TEXT,
devFirstConnection TEXT,
devLastConnection TEXT,
devSyncHubNode TEXT,
devGUID TEXT,
devParentMAC TEXT,
devParentPort TEXT,
devSite TEXT,
devSSID TEXT,
devType TEXT,
devSourcePlugin TEXT,
devAlertEvents INTEGER,
devAlertDown INTEGER,
devPresentLastScan INTEGER,
devIsArchived INTEGER,
devIsNew INTEGER,
devSkipRepeated INTEGER,
devScan INTEGER,
devOwner TEXT,
devFavorite INTEGER,
devGroup TEXT,
devComments TEXT,
devLogEvents INTEGER,
devLocation TEXT,
devCustomProps TEXT,
devParentRelType TEXT,
devReqNicsOnline INTEGER
)
"""
)
cur.execute(
"""
CREATE TABLE CurrentScan (
cur_MAC TEXT,
cur_Name TEXT,
cur_Vendor TEXT,
cur_ScanMethod TEXT,
cur_IP TEXT,
cur_SyncHubNodeName TEXT,
cur_NetworkNodeMAC TEXT,
cur_PORT TEXT,
cur_NetworkSite TEXT,
cur_SSID TEXT,
cur_Type TEXT
)
"""
)
cur.execute(
"""
CREATE TABLE Events (
eve_MAC TEXT,
eve_IP TEXT,
eve_DateTime TEXT,
eve_EventType TEXT,
eve_AdditionalInfo TEXT,
eve_PendingAlertEmail INTEGER
)
"""
)
cur.execute(
"""
CREATE TABLE Sessions (
ses_MAC TEXT,
ses_IP TEXT,
ses_EventTypeConnection TEXT,
ses_DateTimeConnection TEXT,
ses_EventTypeDisconnection TEXT,
ses_DateTimeDisconnection TEXT,
ses_StillConnected INTEGER,
ses_AdditionalInfo TEXT
)
"""
)
conn.commit()
yield conn
conn.close()
@pytest.fixture
def mock_ip_handlers():
"""Mock device_handling helper functions."""
@@ -408,55 +311,6 @@ def test_invalid_ip_values_rejected(ip_test_db, mock_ip_handlers):
), f"Invalid IP '{invalid_ip}' should not overwrite valid IPv4"
def test_invalid_ipv6_rejected_on_create_new_devices(new_device_db):
"""Invalid IPv6 values should not be persisted when creating new devices."""
cur = new_device_db.cursor()
cur.execute(
"""
INSERT INTO CurrentScan (
cur_MAC, cur_Name, cur_Vendor, cur_ScanMethod, cur_IP,
cur_SyncHubNodeName, cur_NetworkNodeMAC, cur_PORT,
cur_NetworkSite, cur_SSID, cur_Type
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(
"AA:BB:CC:DD:EE:10",
"",
"Vendor",
"ARPSCAN",
"fe80::zz",
"",
"",
"",
"",
"",
"",
),
)
new_device_db.commit()
db = Mock()
db.sql_connection = new_device_db
db.sql = cur
db.commitDB = Mock(side_effect=new_device_db.commit)
with patch("helper.get_setting_value", return_value=""), patch.object(
device_handling, "get_setting_value", return_value=""
):
device_handling.create_new_devices(db)
row = cur.execute(
"SELECT devLastIP, devPrimaryIPv4, devPrimaryIPv6 FROM Devices WHERE devMac = ?",
("AA:BB:CC:DD:EE:10",),
).fetchone()
assert row is not None, "Device should be created"
assert row["devLastIP"] == "", "Invalid IPv6 should not set devLastIP"
assert row["devPrimaryIPv4"] == "", "Invalid IPv6 should not set devPrimaryIPv4"
assert row["devPrimaryIPv6"] == "", "Invalid IPv6 should not set devPrimaryIPv6"
def test_ipv4_ipv6_mixed_in_multiple_scans(ip_test_db, mock_ip_handlers):
"""Multiple scans with different IP types should set both primary fields correctly."""
cur = ip_test_db.cursor()