diff --git a/dns/bind/pkg-descr b/dns/bind/pkg-descr index 4ae5a0759..b7dc07278 100644 --- a/dns/bind/pkg-descr +++ b/dns/bind/pkg-descr @@ -11,7 +11,9 @@ Plugin Changelog 1.26 +* Allow multiple ACLs to be selected for Transfers/Queries (contributed by Robbert Rijkse) * Rename Master/Slave to Primary/Secondary (contributed by Robbert Rijkse) +* Add PR record type (contributed by Robbert Rijkse) 1.25 diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindPrimaryDomain.xml b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindPrimaryDomain.xml index 2141fb0ad..f22169f61 100644 --- a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindPrimaryDomain.xml +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindPrimaryDomain.xml @@ -14,14 +14,14 @@ domain.allowtransfer - dropdown - Define an ACL where you allow which server can retrieve this zone. + select_multiple + Define the ACLs where you allow which server can retrieve this zone. domain.allowquery - dropdown - Define an ACL where you allow which client are allowed to query this zone. + select_multiple + Define the ACLs where you allow which client are allowed to query this zone. domain.ttl diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindSecondaryDomain.xml b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindSecondaryDomain.xml index 38c563c1d..a6380c283 100644 --- a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindSecondaryDomain.xml +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/dialogEditBindSecondaryDomain.xml @@ -14,14 +14,14 @@ domain.allowtransfer - dropdown - Define an ACL where you allow which server can retrieve this zone. + select_multiple + Define the ACLs where you allow which server can retrieve this zone. domain.allowquery - dropdown - Define an ACL where you allow which client are allowed to query this zone. + select_multiple + Define the ACLs where you allow which client are allowed to query this zone. domain.primaryip diff --git a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/general.xml b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/general.xml index 8c1521210..f929beedd 100644 --- a/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/general.xml +++ b/dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/general.xml @@ -110,8 +110,14 @@ general.allowtransfer - dropdown - Define an ACL where you allow which server can retrieve zones. + select_multiple + Define the ACLs where you allow which server can retrieve zones. + + + general.allowquery + + select_multiple + Define the ACLs where you allow which client are allowed to query this server. general.dnssecvalidation 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 e00591dec..f7122536c 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.0 + 1.1.1 @@ -58,7 +58,7 @@ name - N + Y N @@ -69,7 +69,7 @@ name - N + Y N diff --git a/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/General.xml b/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/General.xml index 1424be508..d7232ca2c 100644 --- a/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/General.xml +++ b/dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/General.xml @@ -1,7 +1,7 @@ //OPNsense/bind/general BIND configuration - 1.0.9 + 1.0.10 0 @@ -91,7 +91,7 @@ name - N + Y N Choose an ACL. @@ -103,9 +103,20 @@ name - N + Y N + + + + + Y + N + No diff --git a/dns/bind/src/opnsense/service/templates/OPNsense/Bind/named.conf b/dns/bind/src/opnsense/service/templates/OPNsense/Bind/named.conf index c34573007..08db14ef1 100644 --- a/dns/bind/src/opnsense/service/templates/OPNsense/Bind/named.conf +++ b/dns/bind/src/opnsense/service/templates/OPNsense/Bind/named.conf @@ -47,18 +47,31 @@ options { {% endif %} {% if helpers.exists('OPNsense.bind.general.recursion') and OPNsense.bind.general.recursion != '' %} -{% for list in helpers.toList('OPNsense.bind.general.recursion') %} -{% set recursionlist = helpers.getUUID(list) %} recursion yes; - allow-recursion { {{ recursionlist.name }}; }; -{% endfor %} + allow-recursion { +{% for acl in helpers.toList('OPNsense.bind.general.recursion') %} +{% set recursion_acl = helpers.getUUID(acl) %} + {{ recursion_acl.name }}; +{% endfor %} + }; {% endif %} {% if helpers.exists('OPNsense.bind.general.allowtransfer') and OPNsense.bind.general.allowtransfer != '' %} -{% for list in helpers.toList('OPNsense.bind.general.allowtransfer') %} -{% set allowtransfer = helpers.getUUID(list) %} - allow-transfer { {{ allowtransfer.name }}; }; -{% endfor %} + allow-transfer { +{% for acl in helpers.toList('OPNsense.bind.general.allowtransfer') %} +{% set transfer_acl = helpers.getUUID(acl) %} + {{ transfer_acl.name }}; +{% endfor %} + }; +{% endif %} + +{% if helpers.exists('OPNsense.bind.general.allowquery') and OPNsense.bind.general.allowquery != '' %} + allow-query { +{% for acl in helpers.toList('OPNsense.bind.general.allowquery') %} +{% set query_acl = helpers.getUUID(list) %} + {{ query_acl.name }}; +{% endfor %} + }; {% endif %} {% if helpers.exists('OPNsense.bind.general.maxcachesize') and OPNsense.bind.general.maxcachesize != '' %} @@ -136,8 +149,6 @@ zone "rpzbing" { type primary; file "/usr/local/etc/namedb/primary/bing.db"; not {% set usedkeys = [] %} {% for domain in helpers.toList('OPNsense.bind.domain.domains.domain') %} {% if domain.enabled == '1' %} -{% set allow_transfer = helpers.getUUID(domain.allowtransfer) %} -{% set allow_query = helpers.getUUID(domain.allowquery) %} zone "{{ domain.domainname }}" { type {{ domain.type }}; {% if domain.type == 'secondary' %} @@ -153,12 +164,22 @@ zone "{{ domain.domainname }}" { {% else %} file "/usr/local/etc/namedb/primary/{{ domain.domainname }}.db"; {% endif %} -{% if domain.allowtransfer is defined %} - allow-transfer { {{ allow_transfer.name }}; }; -{% endif %} -{% if domain.allowquery is defined %} - allow-query { {{ allow_query.name }}; }; -{% endif %} +{% if domain.allowtransfer is defined %} + allow-transfer { +{% for acl in domain.allowtransfer.split(',') %} +{% set transfer_acl = helpers.getUUID(acl) %} + {{ transfer_acl.name }}; +{% endfor %} + }; +{% endif %} +{% if domain.allowquery is defined %} + allow-query { +{% for acl in domain.allowquery.split(',') %} +{% set query_acl = helpers.getUUID(acl) %} + {{ query_acl.name }}; +{% endfor %} + }; +{% endif %} }; {% if domain.type == 'secondary' and domain.transferkey is defined and not(domain.transferkeyname in usedkeys) %} {% do usedkeys.append(domain.transferkeyname) %}