summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2022-06-30 12:03:26 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2022-07-04 10:03:53 +0000
commit9cda38bbc7ef5debbbdfba267a430d621e6da3d0 (patch)
treecb037e7b2cae41b870f27cc012347f0dcd46af9f
parentcefc7ce9bfcf7750700e73edbc21864fe8ab0bee (diff)
downloadvyos-1x-9cda38bbc7ef5debbbdfba267a430d621e6da3d0.tar.gz
vyos-1x-9cda38bbc7ef5debbbdfba267a430d621e6da3d0.zip
dns: T4378: Allow wildcard A AAAA record with option any
Ability to set wildcard record for authoritative-domain set authoritative-domain example.com records a any address 192.0.2.11 cat /run/powerdns/zone.example.com.conf * 300 A 192.0.2.11
-rw-r--r--interface-definitions/dns-forwarding.xml.in12
-rwxr-xr-xsrc/conf_mode/dns_forwarding.py3
2 files changed, 13 insertions, 2 deletions
diff --git a/interface-definitions/dns-forwarding.xml.in b/interface-definitions/dns-forwarding.xml.in
index 12dc11de5..baff4a841 100644
--- a/interface-definitions/dns-forwarding.xml.in
+++ b/interface-definitions/dns-forwarding.xml.in
@@ -133,8 +133,12 @@
<format>@</format>
<description>Root record</description>
</valueHelp>
+ <valueHelp>
+ <format>any</format>
+ <description>Wildcard record (any subdomain)</description>
+ </valueHelp>
<constraint>
- <regex>([-_a-zA-Z0-9.]{1,63}|@)(?&lt;!\.)</regex>
+ <regex>([-_a-zA-Z0-9.]{1,63}|@|any)(?&lt;!\.)</regex>
</constraint>
</properties>
<children>
@@ -166,8 +170,12 @@
<format>@</format>
<description>Root record</description>
</valueHelp>
+ <valueHelp>
+ <format>any</format>
+ <description>Wildcard record (any subdomain)</description>
+ </valueHelp>
<constraint>
- <regex>([-_a-zA-Z0-9.]{1,63}|@)(?&lt;!\.)</regex>
+ <regex>([-_a-zA-Z0-9.]{1,63}|@|any)(?&lt;!\.)</regex>
</constraint>
</properties>
<children>
diff --git a/src/conf_mode/dns_forwarding.py b/src/conf_mode/dns_forwarding.py
index f1c2d1f43..41023c135 100755
--- a/src/conf_mode/dns_forwarding.py
+++ b/src/conf_mode/dns_forwarding.py
@@ -98,6 +98,9 @@ def get_config(config=None):
dns['authoritative_zone_errors'].append('{}.{}: at least one address is required'.format(subnode, node))
continue
+ if subnode == 'any':
+ subnode = '*'
+
for address in rdata['address']:
zone['records'].append({
'name': subnode,