X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fdnsforward.cgi;h=0439817b9a8cb540054b3653dab0a337e10087c8;hp=ee63c6dd75853a1ed36b3baeaaf7802f9cf603cf;hb=38f6bdb74081bd68493d6636a20cda9b884d6bff;hpb=df7340d2f3232a87ae6e3e11a6cb4e15b74e55a3 diff --git a/html/cgi-bin/dnsforward.cgi b/html/cgi-bin/dnsforward.cgi index ee63c6dd75..0439817b9a 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) || &General::validfqdn($forward_server)) { + $errormessage = "$Lang::tr{'invalid ip or hostname'}: $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]; } } @@ -213,8 +220,8 @@ print < - $Lang::tr{'dnsforward forward_server'}: * - + $Lang::tr{'dnsforward forward_servers'}: * + @@ -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]