diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/DiagnosticsController.php b/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/DiagnosticsController.php
index 62cef8ac9a..0552010e07 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/DiagnosticsController.php
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/DiagnosticsController.php
@@ -123,6 +123,20 @@ class DiagnosticsController extends ApiControllerBase
]), true);
if (!empty($response)) {
+ $mdl = new \OPNsense\Unbound\Unbound();
+ $policies = $mdl->dnsbl->blocklist->getNodeContent();
+ $types = $mdl->dnsbl->blocklist->getTemplateNode()->type->getNodeData();
+ foreach ($response as $key => $value) {
+ if (isset($value['bl'])) {
+ if (isset($types[$value['bl']]['optgroup'])) {
+ $response[$key]['category'] = $types[$value['bl']]['optgroup'];
+ }
+ $response[$key]['bl'] = $types[$value['bl']]['value'] ?? $value['bl'];
+ }
+ if (isset($value['uuid'])) {
+ $response[$key]['policy'] = $policies[$value['uuid']]['description'] ?? '';
+ }
+ }
return $response;
}
}
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php b/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
index efbe547845..4985d2da39 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
@@ -72,8 +72,12 @@ class OverviewController extends ApiControllerBase
return [];
}
+ $types = $this->mdl->dnsbl->blocklist->getTemplateNode()->type->getNodeData();
foreach ($parsed['top_blocked'] as $domain => $props) {
- $parsed['top_blocked'][$domain]['blocklist'] ??= $this->getBlocklistDescription($props['blocklist']);
+ if (isset($types[$props['blocklist']]['optgroup'])) {
+ $parsed['top_blocked'][$domain]['category'] = $types[$props['blocklist']]['optgroup'];
+ }
+ $parsed['top_blocked'][$domain]['blocklist'] = $types[$props['blocklist']]['value'] ?? $props['blocklist'];
}
return $parsed;
@@ -100,6 +104,9 @@ class OverviewController extends ApiControllerBase
$types = $this->mdl->dnsbl->blocklist->getTemplateNode()->type->getNodeData();
foreach ($parsed as $idx => $query) {
+ if (isset($types[$query['blocklist']]['optgroup'])) {
+ $parsed[$idx]['category'] = $types[$query['blocklist']]['optgroup'];
+ }
$parsed[$idx]['blocklist'] = $types[$query['blocklist']]['value'] ?? $query['blocklist'];
$parsed[$idx]['policy'] = $policies[$query['uuid']]['description'] ?? '';
/* Handle front-end color status mapping, start off with OK */
diff --git a/src/opnsense/mvc/app/models/OPNsense/Unbound/Unbound.xml b/src/opnsense/mvc/app/models/OPNsense/Unbound/Unbound.xml
index 10232e59dd..dcb4093472 100644
--- a/src/opnsense/mvc/app/models/OPNsense/Unbound/Unbound.xml
+++ b/src/opnsense/mvc/app/models/OPNsense/Unbound/Unbound.xml
@@ -184,36 +184,47 @@
Y
- Abuse.ch - ThreatFox IOC database
- AdGuard List
- EasyList
- EasyPrivacy
- [hagezi] Multi LIGHT - Basic protection
- [hagezi] Multi NORMAL - All-round protection
- [hagezi] Multi PRO - Extended protection
- [hagezi] Multi PRO mini
- [hagezi] Multi PRO++ - Maximum protection
- [hagezi] Multi PRO++ mini
- [hagezi] Multi ULTIMATE - Aggressive protection
- [hagezi] Multi ULTIMATE mini
- [hagezi] Fake - scams / fakes
- [hagezi] Pop-Up Ads
- [hagezi] Threat Intelligence Feeds
- [hagezi] Threat Intelligence Feeds - Medium
- [hagezi] Threat Intelligence Feeds - Mini
- [hagezi] DoH/VPN/TOR/Proxy Bypass
- [hagezi] Safesearch not supported
- [hagezi] Dynamic DNS blocking
- [hagezi] Badware Hoster blocking
- [hagezi] Anti Piracy
- [hagezi] Gambling
- [hagezi] Gambling - Medium
- [hagezi] Gambling - Mini
- OISD - Domain Blocklist Ads
- OISD - Domain Blocklist Big
- OISD - Domain Blocklist NSFW
- Steven Black List
- YoYo List
+
+ Abuse.ch - ThreatFox IOC
+ AdGuard List
+ EasyList
+ EasyPrivacy
+ Steven Black List
+ YoYo List
+
+
+ LIGHT - Relaxed Blocking
+ NORMAL - Relaxed/Balanced Blocking
+ PRO - Balanced Blocking
+ PRO++ - Balanced/Aggressive Blocking
+ ULTIMATE - Aggressive Blocking
+
+
+ Ads Blocklist
+ Big Blocklist (incl. Ads)
+ NSFW Blocklist
+
+
+ Threat Intelligence Feeds
+ Fake - scams / fakes
+ Pop-Up Ads
+ DoH/VPN/TOR/Proxy Bypass
+ Safesearch not supported
+ Dynamic DNS blocking
+ Badware Hoster blocking
+ Anti Piracy
+ Gambling
+ Social Networks
+
+
+ Multi PRO - Mini
+ Multi PRO++ - Mini
+ Multi ULTIMATE - Mini
+ Threat Intelligence Feeds - Medium
+ Threat Intelligence Feeds - Mini
+ Gambling - Medium
+ Gambling - Mini
+
diff --git a/src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt b/src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt
index a98815ca3c..d68f77e749 100644
--- a/src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt
+++ b/src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt
@@ -408,7 +408,7 @@
`).on('click', function () {
- openPoliciesDialog(domain, uuid, action, statObj?.blocklist ?? "");
+ openPoliciesDialog(domain, uuid, action, statObj);
});
let bl = (uuid && uuid in policies) ? `(${policies[uuid].description})` : '';
@@ -562,6 +562,10 @@
function refreshPoliciesDialog(dialogRef, domain, uuid, appliedAction, blocklist) {
const cleanDomain = domain.replace(/\.$/, "");
+ const category = blocklist?.category ?? '';
+ const provider = category;
+ blocklist = blocklist?.blocklist ?? blocklist ?? '';
+ let bl_category = blocklist;
ajaxGet('/api/unbound/overview/get_policies', {}, function (data, status) {
let $container = $('
');
@@ -628,9 +632,13 @@
}
if (blocklist != "") {
+ let display_text = blocklist;
+ if (provider) {
+ bl_category += ' - ' + category;
+ }
$container = $(`
- {{ lang._('Blocklist match:')}} ${blocklist}
+ {{ lang._('Blocklist match:')}} ${bl_category}
`);
}
@@ -691,10 +699,9 @@
const uuid = data.uuid;
const domain = data.domain;
const appliedAction = data.action;
- const blocklist = data.blocklist;
$el.click(function() {
- openPoliciesDialog(domain, uuid, appliedAction, blocklist);
+ openPoliciesDialog(domain, uuid, appliedAction, data);
});
}
}
@@ -725,6 +732,12 @@
},
"domain": function (column, row) {
return row.domain;
+ },
+ "blocklist": function (column, row) {
+ if (row.category) {
+ return row.blocklist + ' - ' + row.category;
+ }
+ return row.blocklist;
}
},
statusMapping: {
diff --git a/src/opnsense/service/templates/OPNsense/Unbound/core/blocklists.conf b/src/opnsense/service/templates/OPNsense/Unbound/core/blocklists.conf
index 59b98b010f..21026d5120 100644
--- a/src/opnsense/service/templates/OPNsense/Unbound/core/blocklists.conf
+++ b/src/opnsense/service/templates/OPNsense/Unbound/core/blocklists.conf
@@ -30,6 +30,7 @@
"hgz019": "https://raw.githubusercontent.com/hagezi/dns-blocklists/main/wildcard/gambling.txt",
"hgz020": "https://raw.githubusercontent.com/hagezi/dns-blocklists/main/wildcard/gambling.medium.txt",
"hgz021": "https://raw.githubusercontent.com/hagezi/dns-blocklists/main/wildcard/gambling.mini.txt",
+ "hgz022": "https://raw.githubusercontent.com/hagezi/dns-blocklists/main/wildcard/social.txt",
"*** below fields are deprecated, but still exist. Not selectable anymore ***":"",
"bla0": "https://blocklistproject.github.io/Lists/alt-version/abuse-nl.txt",
"bla": "https://blocklistproject.github.io/Lists/alt-version/ads-nl.txt",