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/domainBIND domain configuration
- 1.1.0
+ 1.1.1
@@ -58,7 +58,7 @@
name
- N
+ YN
@@ -69,7 +69,7 @@
name
- N
+ YN
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/generalBIND configuration
- 1.0.9
+ 1.0.100
@@ -91,7 +91,7 @@
name
- N
+ YNChoose an ACL.
@@ -103,9 +103,20 @@
name
- N
+ YN
+
+
+
+ OPNsense.Bind.Acl
+ acls.acl
+ name
+
+
+ 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) %}