From 6d9aac0460555839fbac92e727b53643eb774f5f Mon Sep 17 00:00:00 2001 From: Matthew Grotke Date: Tue, 2 Jun 2026 00:15:40 -0400 Subject: [PATCH] Development --- .../app/pages/dhcpleases/content.json | 3 ++- docker/routlin-dash/app/view_page.py | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docker/routlin-dash/app/pages/dhcpleases/content.json b/docker/routlin-dash/app/pages/dhcpleases/content.json index 8b445c7..27097ea 100644 --- a/docker/routlin-dash/app/pages/dhcpleases/content.json +++ b/docker/routlin-dash/app/pages/dhcpleases/content.json @@ -47,7 +47,8 @@ }, { "label": "Vendor", - "field": "vendor" + "field": "vendor", + "render": "raw_html" }, { "label": "VLAN", diff --git a/docker/routlin-dash/app/view_page.py b/docker/routlin-dash/app/view_page.py index 0e18268..505eaea 100644 --- a/docker/routlin-dash/app/view_page.py +++ b/docker/routlin-dash/app/view_page.py @@ -22,14 +22,34 @@ try: except Exception: _mac_parser = None +try: + from mac_vendor_lookup import MacLookup as _MacLookup + _mac_lookup = _MacLookup() +except Exception: + _mac_lookup = None def _get_vendor(mac): + short, long = '', '' if _mac_parser: try: - return _mac_parser.get_manuf(mac) or '' + short = _mac_parser.get_manuf(mac) or '' except Exception: pass - return '' + if _mac_lookup: + try: + long = _mac_lookup.lookup(mac) or '' + except Exception: + pass + return (short, long) + +def _vendor_cell(vendor): + short, long = vendor + display = short if short else (long[:8] if long else '') + if not display: + return '-' + if long: + return f'{e(display)}' + return e(display) # File loaders ====================================================== @@ -229,7 +249,7 @@ def live_dhcp_leases(): 'hostname': hostname_html, 'ip_address': parts[2], 'mac_address': parts[1], - 'vendor': _get_vendor(parts[1]), + 'vendor': _vendor_cell(_get_vendor(parts[1])), 'vlan_name': vlan_name, 'last_active': last_active, 'renews': 'in ' + relative_time(renews_ts or expiry, now, short=True),