From f5f71c79b7168cc90b5b7fb19a7bda47f3b7bfab Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Wed, 15 Jan 2014 14:23:02 +0100 Subject: [PATCH 1/1] firewall: some layout changes and new plausi checks for dnat --- html/cgi-bin/firewall.cgi | 30 +++++++++++++++++++----------- langs/de/cgi-bin/de.pl | 4 +++- langs/en/cgi-bin/en.pl | 2 ++ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi index 2a9415a9d..ee1303361 100644 --- a/html/cgi-bin/firewall.cgi +++ b/html/cgi-bin/firewall.cgi @@ -729,20 +729,32 @@ sub checkrule { #check valid port for NAT if($fwdfwsettings{'USE_NAT'} eq 'ON'){ - #RULE_ACTION must be on if we use NAT + #RULE_ACTION must be ACCEPT if we use NAT $fwdfwsettings{'RULE_ACTION'} = 'ACCEPT'; + #if no dnat or snat selected errormessage + if ($fwdfwsettings{'nat'} eq ''){ + $errormessage=$Lang::tr{'fwdfw dnat nochoice'}; + return; + } + + #if using snat, the external port has to be empty + if ($fwdfwsettings{'nat'} eq 'snat' && $fwdfwsettings{'dnatport'} ne ''){ + $errormessage=$Lang::tr{'fwdfw dnat extport'}; + return; + } #if no dest port is given in nat area, take target host port if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'grp3'} eq 'TGT_PORT' && $fwdfwsettings{'dnatport'} eq ''){$fwdfwsettings{'dnatport'}=$fwdfwsettings{'TGT_PORT'};} if($fwdfwsettings{'TGT_PORT'} eq '' && $fwdfwsettings{'dnatport'} ne '' && ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP')){ $errormessage=$Lang::tr{'fwdfw dnat porterr2'}; + return; } #check if port given in nat area is a single valid port or portrange if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'TGT_PORT'} ne '' && !&check_natport($fwdfwsettings{'dnatport'})){ $errormessage=$Lang::tr{'fwdfw target'}.": ".$Lang::tr{'fwdfw dnat porterr'}."
"; }elsif($fwdfwsettings{'USESRV'} eq 'ON' && $fwdfwsettings{'grp3'} eq 'cust_srv'){ my $custsrvport; - #get servcie Protocol and Port + #get service Protocol and Port foreach my $key (sort keys %customservice){ if($fwdfwsettings{$fwdfwsettings{'grp3'}} eq $customservice{$key}[0]){ if ($customservice{$key}[2] ne 'TCP' && $customservice{$key}[2] ne 'UDP'){ @@ -976,7 +988,6 @@ sub error print "$errormessage\n"; print " \n"; &Header::closebox(); - print"
"; } } sub fillselect @@ -1020,7 +1031,7 @@ sub gen_dd_block print< - +
"; } #End left table. start right table (vpn) - print"
$Lang::tr{'fwhost stdnet'}
"; + print"
"; # CCD networks if( ! -z $configccdnet || $optionsfw{'SHOWDROPDOWN'} eq 'on'){ print"
$Lang::tr{'fwhost ccdnet'} @@ -2028,7 +2037,6 @@ END -
END diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 9a5feb0b6..c93234bf3 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -933,7 +933,9 @@ 'fwdfw delete' => 'Löschen', 'fwdfw dnat' => 'Destination-NAT (Port-Weiterleitung)', 'fwdfw dnat error' => 'Für Destination-NAT muss ein einzelner Host als Ziel ausgewählt werden. Gruppen oder Netzwerke sind nicht erlaubt', -'fwdfw dnat porterr' => 'Für NAT-Regeln muss ein einzelner Port oder Portbereich angegeben werden', +'fwdfw dnat extport' => 'Bei Source-NAT-Regeln darf der externe Port nicht gesetzt sein.', +'fwdfw dnat nochoice' => 'Bitte wählen Sie Source-NAT oder Destination-NAT im NAT-Bereich aus.', +'fwdfw dnat porterr' => 'Für NAT-Regeln muss ein einzelner Port oder Portbereich angegeben werden.', 'fwdfw dnat porterr2' => 'Externer Port (NAT) darf nur angegeben werden, wenn ein Ziel-Port definiert ist.', 'fwdfw edit' => 'Bearbeiten', 'fwdfw err nosrc' => 'Keine Quelle ausgewählt', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index f68ec4cc6..67b5dd500 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -959,6 +959,8 @@ 'fwdfw delete' => 'Delete', 'fwdfw dnat' => 'Destination NAT (Port forwarding)', 'fwdfw dnat error' => 'You have to select a single host for DNAT. Groups or networks are not allowed.', +'fwdfw dnat extport' => 'The external port has to be empty when using Source NAT rules.', +'fwdfw dnat nochoice' => 'Please pick Source NAT or Destination NAT from the NAT section.', 'fwdfw dnat porterr' => 'You have to select a single port or portrange (tcp/udp) for NAT', 'fwdfw dnat porterr2' => 'Cannot use external port (NAT) when no destination port is defined.', 'fwdfw edit' => 'Edit', -- 2.39.2