mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-04-03 16:51:24 -07:00
FIX: lowercase MAC normalization across project v0.2
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
This commit is contained in:
@@ -96,12 +96,14 @@
|
||||
COUNT(child.devMac) AS node_ports_count
|
||||
FROM Devices AS parent
|
||||
LEFT JOIN Devices AS child
|
||||
ON child.devParentMAC = parent.devMac
|
||||
WHERE parent.devType IN (
|
||||
${networkDeviceTypes})
|
||||
/* CRITICAL FIX: COLLATE NOCASE ensures the join works
|
||||
even if devParentMAC is uppercase and devMac is lowercase
|
||||
*/
|
||||
ON child.devParentMAC = parent.devMac COLLATE NOCASE
|
||||
WHERE parent.devType IN (${networkDeviceTypes})
|
||||
AND parent.devIsArchived = 0
|
||||
GROUP BY parent.devMac, parent.devName, parent.devPresentLastScan,
|
||||
parent.devType, parent.devParentMAC, parent.devIcon, parent.devAlertDown
|
||||
parent.devType, parent.devParentMAC, parent.devIcon, parent.devAlertDown
|
||||
ORDER BY parent.devName;
|
||||
`;
|
||||
|
||||
@@ -381,9 +383,8 @@
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
function loadConnectedDevices(node_mac) {
|
||||
|
||||
// 1. Force to lowercase to match the new DB standard
|
||||
function loadConnectedDevices(node_mac) {
|
||||
// Standardize the input just in case
|
||||
const normalized_mac = node_mac.toLowerCase();
|
||||
|
||||
const sql = `
|
||||
@@ -397,13 +398,14 @@
|
||||
ELSE 'Unknown status'
|
||||
END AS devStatus
|
||||
FROM Devices
|
||||
WHERE devParentMac = '${normalized_mac}'`;
|
||||
/* Using COLLATE NOCASE here solves the 'TEXT' vs 'NOCASE' mismatch */
|
||||
WHERE devParentMac = '${normalized_mac}' COLLATE NOCASE`;
|
||||
|
||||
const id = node_mac.replace(/:/g, '_');
|
||||
// Keep the ID generation consistent
|
||||
const id = normalized_mac.replace(/:/g, '_');
|
||||
|
||||
const wrapperHtml = `
|
||||
<table class="table table-bordered table-striped node-leafs-table " id="table_leafs_${id}" data-node-mac="${normalized_mac}">
|
||||
|
||||
</table>`;
|
||||
|
||||
loadDeviceTable({
|
||||
|
||||
@@ -91,11 +91,11 @@ def is_typical_router_ip(ip_address):
|
||||
def is_mac(input):
|
||||
input_str = str(input).lower().strip() # Convert to string and lowercase so non-string values won't raise errors
|
||||
|
||||
# Full MAC (6 octets) e.g. AA:BB:CC:DD:EE:FF
|
||||
# Full MAC (6 octets) e.g. aa:bb:cc:dd:ee:ff
|
||||
full_mac_re = re.compile(r"^[0-9a-f]{2}([-:]?)[0-9a-f]{2}(\1[0-9a-f]{2}){4}$")
|
||||
|
||||
# Wildcard prefix format: exactly 3 octets followed by a trailing '*' component
|
||||
# Examples: AA:BB:CC:*
|
||||
# Examples: aa:bb:cc:*
|
||||
wildcard_re = re.compile(r"^[0-9a-f]{2}[-:]?[0-9a-f]{2}[-:]?[0-9a-f]{2}[-:]?\*$")
|
||||
|
||||
if full_mac_re.match(input_str) or wildcard_re.match(input_str):
|
||||
|
||||
Reference in New Issue
Block a user