From e6c5a8136c2880620e0b9cb9854e2be82d6ea985 Mon Sep 17 00:00:00 2001 From: Matthew Grotke Date: Tue, 2 Jun 2026 00:00:39 -0400 Subject: [PATCH] Development --- .../app/pages/dhcpleases/content.json | 3 +- docker/routlin-dash/app/view_page.py | 29 +++++++++++++------ docker/routlin-dash/requirements.txt | 2 +- 3 files changed, 23 insertions(+), 11 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 31f2019..4d43cfe 100644 --- a/docker/routlin-dash/app/view_page.py +++ b/docker/routlin-dash/app/view_page.py @@ -17,18 +17,29 @@ HEALTH_FILE = os.path.join(CONFIGS_DIR, '.health') bp = Blueprint('view_page', __name__) try: - from mac_vendor_lookup import MacLookup as _MacLookup - _mac_lookup = _MacLookup() + import manuf as _manuf_mod + _mac_parser = _manuf_mod.MacParser() except Exception: - _mac_lookup = None + _mac_parser = None def _get_vendor(mac): - if _mac_lookup is None: - return '' + """Return (short, long) vendor names. long may be empty if no comment available.""" + if _mac_parser is None: + return ('', '') try: - return _mac_lookup.lookup(mac) or '' + short = _mac_parser.get_manuf(mac) or '' + long = _mac_parser.get_comment(mac) or '' + return (short, long) except Exception: - return '' + return ('', '') + +def _vendor_html(vendor): + short, long = vendor + if not short: + return '-' + if long and long != short: + return f'{e(short)}' + return e(short) # File loaders ====================================================== @@ -228,10 +239,10 @@ def live_dhcp_leases(): 'hostname': hostname_html, 'ip_address': parts[2], 'mac_address': parts[1], - 'vendor': _get_vendor(parts[1]), + 'vendor': _vendor_html(_get_vendor(parts[1])), 'vlan_name': vlan_name, 'last_active': last_active, - 'renews': 'in ' + relative_time(renews_ts or expiry, now), + 'renews': 'in ' + relative_time(renews_ts or expiry, now, short=True), }) except Exception: pass diff --git a/docker/routlin-dash/requirements.txt b/docker/routlin-dash/requirements.txt index b2fed68..1cdb17b 100644 --- a/docker/routlin-dash/requirements.txt +++ b/docker/routlin-dash/requirements.txt @@ -1,3 +1,3 @@ flask bcrypt -mac-vendor-lookup +manuf