From 07d67b4dea011c09c9d097173a9842ece667489a Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 10 Jul 2025 10:08:47 +0200 Subject: [PATCH] dns/bind: Add Forward Zones (#4802) --- dns/bind/pkg-descr | 1 + .../OPNsense/Bind/Api/DomainController.php | 17 ++++++ .../OPNsense/Bind/GeneralController.php | 1 + .../forms/dialogEditBindForwardDomain.xml | 22 +++++++ .../mvc/app/models/OPNsense/Bind/Domain.xml | 6 +- .../mvc/app/views/OPNsense/Bind/general.volt | 58 +++++++++++++++++++ .../templates/OPNsense/Bind/named.conf | 8 ++- 7 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindForwardDomain.xml diff --git a/dns/bind/pkg-descr b/dns/bind/pkg-descr index 418a9b4b7..dbf188bb0 100644 --- a/dns/bind/pkg-descr +++ b/dns/bind/pkg-descr @@ -12,6 +12,7 @@ Plugin Changelog 1.34 * Add custom configuration include directory /usr/local/etc/namedb/named.conf.d (contributed by Nicholas Card) +* Add forward zones 1.33 diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/Api/DomainController.php b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/Api/DomainController.php index 841588c02..87c71db3f 100644 --- a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/Api/DomainController.php +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/Api/DomainController.php @@ -73,6 +73,18 @@ class DomainController extends ApiMutableModelControllerBase ); } + public function searchForwardDomainAction() + { + return $this->searchBase( + 'domains.domain', + [ 'enabled', 'type', 'domainname', 'forwardserver' ], + 'domainname', + function ($record) { + return $record->type->getNodeData()['forward']['selected'] === 1; + } + ); + } + public function getDomainAction($uuid = null) { return $this->getBase('domain', 'domains.domain', $uuid); @@ -88,6 +100,11 @@ class DomainController extends ApiMutableModelControllerBase return $this->addBase('domain', 'domains.domain', ['type' => 'secondary']); } + public function addForwardDomainAction($uuid = null) + { + return $this->addBase('domain', 'domains.domain', ['type' => 'forward']); + } + public function delDomainAction($uuid) { return $this->delBase('domains.domain', $uuid); diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/GeneralController.php b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/GeneralController.php index 663acb058..cfa86649d 100644 --- a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/GeneralController.php +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/GeneralController.php @@ -37,6 +37,7 @@ class GeneralController extends \OPNsense\Base\IndexController $this->view->formDialogEditBindAcl = $this->getForm("dialogEditBindAcl"); $this->view->formDialogEditBindPrimaryDomain = $this->getForm("dialogEditBindPrimaryDomain"); $this->view->formDialogEditBindSecondaryDomain = $this->getForm("dialogEditBindSecondaryDomain"); + $this->view->formDialogEditBindForwardDomain = $this->getForm("dialogEditBindForwardDomain"); $this->view->formDialogEditBindRecord = $this->getForm("dialogEditBindRecord"); $this->view->pick('OPNsense/Bind/general'); } diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindForwardDomain.xml b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindForwardDomain.xml new file mode 100644 index 000000000..4ca30f87c --- /dev/null +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindForwardDomain.xml @@ -0,0 +1,22 @@ +
+ + domain.enabled + + checkbox + This will enable or disable this zone. + + + domain.domainname + + text + Set the name for this zone. Both forward and reverse zones may be specified, i.e. example.com or 0.168.192.in-addr.arpa. + + + domain.forwardserver + + + select_multiple + true + Set the IP address of server to forward requests to. + +
diff --git a/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/Domain.xml b/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/Domain.xml index 4a939da39..f82783ffe 100644 --- a/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/Domain.xml +++ b/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/Domain.xml @@ -1,7 +1,7 @@ //OPNsense/bind/domain BIND domain configuration - 1.1.1 + 1.1.2 @@ -15,12 +15,16 @@ primary secondary + forward , Y + + Y + HMAC-SHA512 diff --git a/dns/bind/src/opnsense/mvc/app/views/OPNsense/Bind/general.volt b/dns/bind/src/opnsense/mvc/app/views/OPNsense/Bind/general.volt index 82856aa72..30d3fcc1d 100644 --- a/dns/bind/src/opnsense/mvc/app/views/OPNsense/Bind/general.volt +++ b/dns/bind/src/opnsense/mvc/app/views/OPNsense/Bind/general.volt @@ -33,6 +33,7 @@
  • {{ lang._('ACLs') }}
  • {{ lang._('Primary Zones') }}
  • {{ lang._('Secondary Zones') }}
  • +
  • {{ lang._('Forward Zones') }}
  • @@ -189,11 +190,48 @@

    +
    +
    +

    {{ lang._('Zones') }}

    +
    +
    + + + + + + + + + + + + + + + + + + +
    {{ lang._('Enabled') }}{{ lang._('Zone') }}{{ lang._('Forwarder IPs') }}{{ lang._('ID') }}{{ lang._('Commands') }}
    + +
    +
    +
    +
    + + +

    +
    +
    {{ partial("layout_partials/base_dialog",['fields':formDialogEditBindAcl,'id':'dialogEditBindAcl','label':lang._('Edit ACL')])}} {{ partial("layout_partials/base_dialog",['fields':formDialogEditBindPrimaryDomain,'id':'dialogEditBindPrimaryDomain','label':lang._('Edit Primary Zone')])}} {{ partial("layout_partials/base_dialog",['fields':formDialogEditBindSecondaryDomain,'id':'dialogEditBindSecondaryDomain','label':lang._('Edit Secondary Zone')])}} +{{ partial("layout_partials/base_dialog",['fields':formDialogEditBindForwardDomain,'id':'dialogEditBindForwardDomain','label':lang._('Edit Forward Zone')])}} {{ partial("layout_partials/base_dialog",['fields':formDialogEditBindRecord,'id':'dialogEditBindRecord','label':lang._('Edit Record')])}}