From 1a26564e95b5694337e51860544e7775d35055f3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 19 Dec 2018 20:42:46 +0100 Subject: [PATCH] DNS Forwarding: Allow passing multiple name servers (separated by comma) Signed-off-by: Michael Tremer --- doc/language_issues.de | 1 + doc/language_issues.en | 3 ++- doc/language_issues.es | 3 ++- doc/language_issues.fr | 1 + doc/language_issues.it | 1 + doc/language_issues.nl | 1 + doc/language_issues.pl | 3 ++- doc/language_issues.ru | 3 ++- doc/language_issues.tr | 1 + doc/language_missings | 10 +++++++--- html/cgi-bin/dnsforward.cgi | 32 +++++++++++++++++++++----------- langs/de/cgi-bin/de.pl | 2 +- langs/en/cgi-bin/en.pl | 2 +- 13 files changed, 43 insertions(+), 20 deletions(-) diff --git a/doc/language_issues.de b/doc/language_issues.de index e2048d7d14..6b770e5e39 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -706,6 +706,7 @@ WARNING: untranslated string: bytes = unknown string WARNING: untranslated string: captive = unknown string WARNING: untranslated string: community rules = Snort/VRT GPLv2 Community Rules WARNING: untranslated string: dead peer detection = Dead Peer Detection +WARNING: untranslated string: dnsforward forward_server = unknown string WARNING: untranslated string: emerging rules = Emergingthreats.net Community Rules WARNING: untranslated string: fwhost cust geoipgrp = unknown string WARNING: untranslated string: fwhost err hostip = unknown string diff --git a/doc/language_issues.en b/doc/language_issues.en index 228b685f89..392490cb09 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -650,7 +650,8 @@ WARNING: untranslated string: dnsforward add a new entry = Add a new entry WARNING: untranslated string: dnsforward configuration = DNS forward configuration WARNING: untranslated string: dnsforward edit an entry = Edit an existing entry WARNING: untranslated string: dnsforward entries = Current entries -WARNING: untranslated string: dnsforward forward_server = Nameserver +WARNING: untranslated string: dnsforward forward_server = unknown string +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnsforward zone = Zone WARNING: untranslated string: dnssec aware = DNSSEC Aware WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled diff --git a/doc/language_issues.es b/doc/language_issues.es index 01315971b4..581b99a0ab 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -755,7 +755,8 @@ WARNING: untranslated string: dnsforward add a new entry = Add a new entry WARNING: untranslated string: dnsforward configuration = DNS forward configuration WARNING: untranslated string: dnsforward edit an entry = Edit an existing entry WARNING: untranslated string: dnsforward entries = Current entries -WARNING: untranslated string: dnsforward forward_server = Nameserver +WARNING: untranslated string: dnsforward forward_server = unknown string +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnsforward zone = Zone WARNING: untranslated string: dnssec aware = DNSSEC Aware WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 3fd7f35c41..368f66648e 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -742,6 +742,7 @@ WARNING: untranslated string: Captive clients = unknown string WARNING: untranslated string: Scan for Songs = unknown string WARNING: untranslated string: bytes = unknown string WARNING: untranslated string: captive = unknown string +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: fwhost cust geoipgrp = unknown string WARNING: untranslated string: fwhost err hostip = unknown string WARNING: untranslated string: guardian block a host = unknown string diff --git a/doc/language_issues.it b/doc/language_issues.it index 1a1b283c05..010b6cead2 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -766,6 +766,7 @@ WARNING: untranslated string: dhcp dns update = DNS Update WARNING: untranslated string: dhcp dns update algo = Algorithm: WARNING: untranslated string: dhcp dns update secret = Secret: WARNING: untranslated string: dl client arch insecure = Download insecure Client Package (zip) +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled WARNING: untranslated string: eight hours = 8 Hours WARNING: untranslated string: email config = Configuration diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 0de2a0f173..336a75a061 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -772,6 +772,7 @@ WARNING: untranslated string: dhcp dns update algo = Algorithm: WARNING: untranslated string: dhcp dns update secret = Secret: WARNING: untranslated string: dl client arch insecure = Download insecure Client Package (zip) WARNING: untranslated string: dns servers = DNS Servers +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnssec aware = DNSSEC Aware WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled WARNING: untranslated string: dnssec information = DNSSEC Information diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 01315971b4..581b99a0ab 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -755,7 +755,8 @@ WARNING: untranslated string: dnsforward add a new entry = Add a new entry WARNING: untranslated string: dnsforward configuration = DNS forward configuration WARNING: untranslated string: dnsforward edit an entry = Edit an existing entry WARNING: untranslated string: dnsforward entries = Current entries -WARNING: untranslated string: dnsforward forward_server = Nameserver +WARNING: untranslated string: dnsforward forward_server = unknown string +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnsforward zone = Zone WARNING: untranslated string: dnssec aware = DNSSEC Aware WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled diff --git a/doc/language_issues.ru b/doc/language_issues.ru index ca75c0b29d..ae25fb2a29 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -759,7 +759,8 @@ WARNING: untranslated string: dnsforward add a new entry = Add a new entry WARNING: untranslated string: dnsforward configuration = DNS forward configuration WARNING: untranslated string: dnsforward edit an entry = Edit an existing entry WARNING: untranslated string: dnsforward entries = Current entries -WARNING: untranslated string: dnsforward forward_server = Nameserver +WARNING: untranslated string: dnsforward forward_server = unknown string +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: dnsforward zone = Zone WARNING: untranslated string: dnssec aware = DNSSEC Aware WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 6a79d65a4e..38d8a3fdea 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -743,6 +743,7 @@ WARNING: untranslated string: bytes = unknown string WARNING: untranslated string: captive = unknown string WARNING: untranslated string: crypto error = Cryptographic error WARNING: untranslated string: crypto warning = Cryptographic warning +WARNING: untranslated string: dnsforward forward_servers = Nameservers WARNING: untranslated string: fwdfw all subnets = All subnets WARNING: untranslated string: fwhost cust geoipgrp = unknown string WARNING: untranslated string: fwhost err hostip = unknown string diff --git a/doc/language_missings b/doc/language_missings index 56219c5fcd..84e955d013 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -210,7 +210,7 @@ < dnsforward configuration < dnsforward edit an entry < dnsforward entries -< dnsforward forward_server +< dnsforward forward_servers < dnsforward zone < dnssec aware < dnssec disabled warning @@ -781,6 +781,7 @@ ############################################################################ # Checking cgi-bin translations for language: fr # ############################################################################ +< dnsforward forward_servers < ovpn warning rfc3280 < wlanap neighbor scan < wlanap neighbor scan warning @@ -860,6 +861,7 @@ < dhcp dns update algo < dhcp dns update secret < dl client arch insecure +< dnsforward forward_servers < dnssec disabled warning < eight hours < email config @@ -1082,6 +1084,7 @@ < dh name is invalid < dh parameter < dl client arch insecure +< dnsforward forward_servers < dnssec aware < dnssec disabled warning < dnssec information @@ -1423,7 +1426,7 @@ < dnsforward configuration < dnsforward edit an entry < dnsforward entries -< dnsforward forward_server +< dnsforward forward_servers < dnsforward zone < dnssec aware < dnssec disabled warning @@ -2137,7 +2140,7 @@ < dnsforward configuration < dnsforward edit an entry < dnsforward entries -< dnsforward forward_server +< dnsforward forward_servers < dnsforward zone < dnssec aware < dnssec disabled warning @@ -2700,6 +2703,7 @@ ############################################################################ < crypto error < crypto warning +< dnsforward forward_servers < fwdfw all subnets < ovpn error dh < ovpn error md5 diff --git a/html/cgi-bin/dnsforward.cgi b/html/cgi-bin/dnsforward.cgi index ee63c6dd75..9091ee1db9 100644 --- a/html/cgi-bin/dnsforward.cgi +++ b/html/cgi-bin/dnsforward.cgi @@ -50,7 +50,7 @@ my %mainsettings = (); $cgiparams{'ENABLED'} = 'off'; $cgiparams{'ACTION'} = ''; $cgiparams{'ZONE'} = ''; -$cgiparams{'FORWARD_SERVER'} = ''; +$cgiparams{'FORWARD_SERVERS'} = ''; $cgiparams{'REMARK'} =''; &Header::getcgihash(\%cgiparams); open(FILE, $filename) or die 'Unable to open config file.'; @@ -67,14 +67,21 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) $errormessage = $Lang::tr{'invalid domain name'}; } - # Check if the settings for the forward server are valid. - unless(&General::validip($cgiparams{'FORWARD_SERVER'})) { - $errormessage = $Lang::tr{'invalid ip'}; + my @forward_servers = split(/\,/, $cgiparams{'FORWARD_SERVERS'}); + foreach my $forward_server (@forward_servers) { + # Check if the settings for the forward server are valid. + unless(&General::validip($forward_server)) { + $errormessage = "$Lang::tr{'invalid ip'}: $forward_server"; + last; + } } # Go further if there was no error. if ( ! $errormessage) { + # Save servers separated by | + $cgiparams{'FORWARD_SERVERS'} = join("|", @forward_servers); + # Check if a remark has been entered. $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); @@ -82,7 +89,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) if($cgiparams{'EDITING'} eq 'no') { open(FILE,">>$filename") or die 'Unable to open config file.'; flock FILE, 2; - print FILE "$cgiparams{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVER'},$cgiparams{'REMARK'}\n"; + print FILE "$cgiparams{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVERS'},$cgiparams{'REMARK'}\n"; } else { open(FILE, ">$filename") or die 'Unable to open config file.'; flock FILE, 2; @@ -91,7 +98,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) { $id++; if ($cgiparams{'EDITING'} eq $id) { - print FILE "$cgiparams{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVER'},$cgiparams{'REMARK'}\n"; + print FILE "$cgiparams{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVERS'},$cgiparams{'REMARK'}\n"; } else { print FILE "$line"; } } } @@ -167,7 +174,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) my @temp = split(/\,/,$line); $cgiparams{'ENABLED'} = $temp[0]; $cgiparams{'ZONE'} = $temp[1]; - $cgiparams{'FORWARD_SERVER'} = $temp[2]; + $cgiparams{'FORWARD_SERVERS'} = join(",", split(/\|/, $temp[2])); $cgiparams{'REMARK'} = $temp[3]; } } @@ -214,7 +221,7 @@ print < $Lang::tr{'dnsforward forward_server'}: * - + @@ -255,7 +262,7 @@ print < $Lang::tr{'dnsforward zone'} - $Lang::tr{'dnsforward forward_server'} + $Lang::tr{'dnsforward forward_servers'} $Lang::tr{'remark'} $Lang::tr{'action'} @@ -284,7 +291,10 @@ foreach my $line (@current) my $gif = ''; my $gdesc = ''; my $toggle = ''; - + + # Format lists of servers + my $servers = join(", ", split(/\|/, $temp[2])); + if($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) { print ""; $col="bgcolor='${Header::colouryellow}'"; } @@ -303,7 +313,7 @@ foreach my $line (@current) # print <$temp[1] - $temp[2] + $servers $temp[3]
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 42eb141037..a6fcfea7e9 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -821,7 +821,7 @@ 'dnsforward configuration' => 'Einstellungen für DNS Weiterleitung', 'dnsforward edit an entry' => 'Existierenden Eintrag bearbeiten', 'dnsforward entries' => 'Aktuelle Einträge', -'dnsforward forward_server' => 'DNS-Server', +'dnsforward forward_servers' => 'DNS-Server', 'dnsforward zone' => 'Zone', 'dnssec aware' => 'DNSSEC-Informationen verfügbar, aber nicht validierend', 'dnssec disabled warning' => 'WARNUNG: DNSSEC wurde deaktiviert', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index e9356407ac..5bbd0c345d 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -846,7 +846,7 @@ 'dnsforward configuration' => 'DNS forward configuration', 'dnsforward edit an entry' => 'Edit an existing entry', 'dnsforward entries' => 'Current entries', -'dnsforward forward_server' => 'Nameserver', +'dnsforward forward_servers' => 'Nameservers', 'dnsforward zone' => 'Zone', 'dnssec aware' => 'DNSSEC Aware', 'dnssec disabled warning' => 'WARNING: DNSSEC has been disabled', -- 2.39.2