From dec3ef80b282dd84276b6de9b1bb9d9f12fba9ac Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Tue, 28 Mar 2023 22:19:12 -0700 Subject: [PATCH] Allow DNS proxy option to control if some or all records are proxied --- feature-dns.pl | 38 +++++++++++++++++------------ help/template_dns_cloud.html | 4 +-- help/template_dns_cloud_import.html | 8 ++++++ help/template_dns_cloud_proxy.html | 8 ++++++ lang/en | 6 +++-- 5 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 help/template_dns_cloud_import.html create mode 100644 help/template_dns_cloud_proxy.html diff --git a/feature-dns.pl b/feature-dns.pl index 8a9799e47..78fd5f30c 100755 --- a/feature-dns.pl +++ b/feature-dns.pl @@ -1160,16 +1160,20 @@ sub split_long_txt_record # Adds MX and mail.domain records to a DNS domain sub create_mail_records { -local ($recs, $file, $d, $ip, $ip6) = @_; +my ($recs, $file, $d, $ip, $ip6) = @_; +my $tmpl = &get_template($d->{'template'}); +my $proxied = $tmpl->{'dns_cloud_proxy'}; local $withdot = $d->{'dom'}."."; my $r = { 'name' => "mail.$withdot", 'type' => "A", + 'proxied' => $proxied == 1 ? 1 : 0, 'values' => [ $ip ] }; my ($already) = grep { $_->{'name'} eq $r->{'name'} } @$recs; &create_dns_record($recs, $file, $r) if (!$already); if ($d->{'ip6'} && $ip6) { my $r = { 'name' => "mail.$withdot", 'type' => "AAAA", + 'proxied' => $proxied == 1 ? 1 : 0, 'values' => [ $ip6 ] }; my ($already) = grep { $_->{'name'} eq $r->{'name'} } @$recs; &create_dns_record($recs, $file, $r) if (!$already); @@ -1318,7 +1322,7 @@ sub create_standard_records &create_dns_record($recs, $file, { 'name' => $r, 'type' => 'A', - 'proxied' => $proxied, + 'proxied' => $proxied == 1 ? 1 : 0, 'values' => [ $a ] }); $i++; } @@ -1359,7 +1363,7 @@ sub create_standard_records &create_dns_record($recs, $file, { 'name' => $n, 'type' => 'A', - 'proxied' => $proxied, + 'proxied' => $proxied ? 1 : 0, 'values' => [ $ip ] }); } } @@ -1374,7 +1378,7 @@ sub create_standard_records &create_dns_record($recs, $file, { 'name' => $ns, 'type' => 'A', - 'proxied' => $proxied, + 'proxied' => $proxied == 1 ? 1 : 0, 'values' => [ $ip ] }); } } @@ -1386,7 +1390,6 @@ sub create_standard_records &create_dns_record($recs, $file, { 'name' => $n, 'type' => 'A', - 'proxied' => $proxied, 'values' => [ "127.0.0.1" ] }); } @@ -1397,7 +1400,7 @@ sub create_standard_records &create_dns_record($recs, $file, { 'name' => $hn.".", 'type' => 'A', - 'proxied' => $proxied, + 'proxied' => $proxied == 1 ? 1 : 0, 'values' => [ &get_default_ip() ] }); } @@ -1455,7 +1458,7 @@ sub create_standard_records join("\n", split(/\t+/, $tmpl->{'dns'}))."\n", \%subs); local @tmplrecs = &text_to_dns_records($recstxt, $d->{'dom'}); foreach my $r (@tmplrecs) { - $r->{'proxied'} = $proxied; + $r->{'proxied'} = $proxied == 1 ? 1 : 0; &create_dns_record($recs, $file, $r); } } @@ -1773,7 +1776,7 @@ sub save_domain_matchall_record my $ip = $d->{'dns_ip'} || $d->{'ip'}; $r = { 'name' => $withstar, 'type' => 'A', - 'proxied' => $tmpl->{'dns_cloud_proxy'}, + 'proxied' => $tmpl->{'dns_cloud_proxy'} == 1 ? 1 : 0, 'values' => [ $ip ] }; &create_dns_record($recs, $file, $r); $any++; @@ -2890,13 +2893,18 @@ sub show_template_dns } print &ui_table_row(&hlink($text{'tmpl_dns_cloud'}, "template_dns_cloud"), - &ui_select("dns_cloud", $tmpl->{'dns_cloud'}, \@clouds). - "
\n". - &ui_checkbox("dns_cloud_import", 1, $text{'tmpl_dns_cloud_import'}, - $tmpl->{'dns_cloud_import'}). - "
\n". - &ui_checkbox("dns_cloud_proxy", 1, $text{'tmpl_dns_cloud_proxy'}, - $tmpl->{'dns_cloud_proxy'})); + &ui_select("dns_cloud", $tmpl->{'dns_cloud'}, \@clouds)); + +print &ui_table_row(&hlink($text{'tmpl_dns_cloud_import'}, + "template_dns_cloud_import"), + &ui_yesno_radio("dns_cloud_import", $tmpl->{'dns_cloud_import'})); + +print &ui_table_row(&hlink($text{'tmpl_dns_cloud_proxy'}, + "template_dns_cloud_proxy"), + &ui_radio("dns_cloud_proxy", $tmpl->{'dns_cloud_proxy'} || 0, + [ [ 0, $text{'no'} ], + [ 1, $text{'tmpl_dns_cloud_proxy1'} ], + [ 2, $text{'tmpl_dns_cloud_proxy2'} ] ])); # Create on slave DNS servers local @slaves = &bind8::list_slave_servers(); diff --git a/help/template_dns_cloud.html b/help/template_dns_cloud.html index 5ce23cc3e..35cfa46e5 100644 --- a/help/template_dns_cloud.html +++ b/help/template_dns_cloud.html @@ -1,7 +1,7 @@
Create new DNS zones on
This field controls whether DNS domains for virtual servers created using this -template are setup locally, or on one of the configured Cloud DNS providers. -

+template are setup locally, or on one of the configured Cloud DNS providers or +remote DNS servers.