From 66be049f142be803c80ec3676114722167d3987e Mon Sep 17 00:00:00 2001 From: Matthew Grotke Date: Tue, 9 Jun 2026 12:07:38 -0400 Subject: [PATCH] Development --- docker/routlin-dash/app/pages/dnsblocking/view.py | 12 ++++++++++-- routlin/mod_dnsmasq.py | 10 +--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docker/routlin-dash/app/pages/dnsblocking/view.py b/docker/routlin-dash/app/pages/dnsblocking/view.py index 21ff75d..5b2ae32 100644 --- a/docker/routlin-dash/app/pages/dnsblocking/view.py +++ b/docker/routlin-dash/app/pages/dnsblocking/view.py @@ -49,8 +49,12 @@ def _last_dl_time(): def blocklist_stats_html(cfg): - db_rows = config_utils._bl_db_rows() - last_dl = _last_dl_time() + db_rows = config_utils._bl_db_rows() + last_dl = _last_dl_time() + bl_vlans = {} + for vlan in cfg.get('vlans', []): + for bl_name in vlan.get('use_blocklists', []): + bl_vlans.setdefault(bl_name, []).append(vlan['name']) rows = '' for bl in cfg.get('dns_blocking', {}).get('blocklists', []): name = bl.get('name', '') @@ -90,12 +94,15 @@ def blocklist_stats_html(cfg): warn = WARN_ICON else: warn = '' + vlan_names = bl_vlans.get(name, []) + used_by = ', '.join(factory.e(v) for v in vlan_names) if vlan_names else 'Not used by any VLANs' rows += ( '' f'{factory.e(name)}' f'{entries}' f'{size_str}' f'{factory.e(last_refreshed)}{warn}' + f'{used_by}' '' ) if not rows: @@ -106,6 +113,7 @@ def blocklist_stats_html(cfg): 'Entries' 'Size' 'Last Refreshed' + 'Used by VLAN(s)' '' f'{rows}' ) diff --git a/routlin/mod_dnsmasq.py b/routlin/mod_dnsmasq.py index 15f28dc..c05acfc 100644 --- a/routlin/mod_dnsmasq.py +++ b/routlin/mod_dnsmasq.py @@ -225,18 +225,10 @@ def update_blocklist_hosts(data): db = _open_db() bl_library = {bl["name"]: bl for bl in data.get("dns_blocking", {}).get("blocklists", [])} - needed = set() - for vlan in data.get("vlans", []): - needed.update(vlan.get("use_blocklists", [])) - changed = set() any_fail = False - for name in needed: - if name not in bl_library: - _log.warning(f"Blocklist '{name}' referenced by a VLAN but not defined -- skipping") - continue - entry = bl_library[name] + for name, entry in bl_library.items(): is_local = entry.get("bl_type") == "local" save_as = entry.get("save_as", "")