]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - html/cgi-bin/firewall.cgi
Firewall: Hide rule actions when using NAT.
[people/teissler/ipfire-2.x.git] / html / cgi-bin / firewall.cgi
old mode 100755 (executable)
new mode 100644 (file)
index c17bfaf..2a9415a
@@ -136,14 +136,17 @@ print<<END;
                \$("#protocol").change(update_protocol);
                update_protocol();
 
-               // When nat not used, hide it
-               if (! \$("#USE_NAT").attr("checked")) {
+               // Show/Hide elements when NAT checkbox is checked.
+               if (\$("#USE_NAT").attr("checked")) {
+                       \$("#actions").hide();
+               } else {
                        \$(".NAT").hide();
                }
 
                // Show NAT area when "use nat" checkbox is clicked
                \$("#USE_NAT").change(function() {
                        \$(".NAT").toggle();
+                       \$("#actions").toggle();
                });
 
                // Time constraints
@@ -726,6 +729,9 @@ sub checkrule
 {
        #check valid port for NAT
        if($fwdfwsettings{'USE_NAT'} eq 'ON'){
+               #RULE_ACTION must be on if we use NAT
+               $fwdfwsettings{'RULE_ACTION'} = 'ACCEPT';
+
                #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')){
@@ -1050,7 +1056,7 @@ END
        if (! -z $configgrp || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
                print"<tr><td valign='top'><input type='radio' name='$grp' id='cust_grp_$srctgt' value='cust_grp_$srctgt' $checked{$grp}{'cust_grp_'.$srctgt}></td><td >$Lang::tr{'fwhost cust grp'}</td><td align='right'><select name='cust_grp_$srctgt' style='width:200px;'>";
                foreach my $key (sort { ncmp($customgrp{$a}[0],$customgrp{$b}[0]) } keys %customgrp) {
-                       if($helper ne $customgrp{$key}[0]){
+                       if($helper ne $customgrp{$key}[0] && $customgrp{$key}[2] ne 'none'){
                                print"<option ";
                                print "selected='selected' " if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $customgrp{$key}[0]);
                                print ">$customgrp{$key}[0]</option>";
@@ -1561,8 +1567,6 @@ sub newrule
        if ($scidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp1'}}=$sip;}
        my ($dip,$dcidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp2'}});
        if ($scidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp2'}}=$dip;}
-       &Header::openbox('100%', 'left', $Lang::tr{'fwdfw addrule'});
-       &Header::closebox();
        &Header::openbox('100%', 'left', $Lang::tr{'fwdfw source'});
        #------SOURCE-------------------------------------------------------
        print "<form method='post'>";
@@ -1584,10 +1588,10 @@ END
                }
                print<<END;
                </select></td></tr>
-               <tr><td colspan='8'><hr style='border:dotted #BFBFBF; border-width:1px 0 0 0 ; ' /></td></tr></table>
+               <tr><td><br></td></tr>
+               </table>
 END
                &gen_dd_block('src','grp1');
-               print"<hr>";
                &Header::closebox();
 
                #---SNAT / DNAT ------------------------------------------------
@@ -1690,10 +1694,9 @@ END
                }
                print<<END;
                </select></td></tr>
-               <tr><td colspan='7'><hr style='border:dotted #BFBFBF; border-width:1px 0 0 0 ; ' /></td></tr></table>
+               <tr><td><br></td></tr></table>
 END
                &gen_dd_block('tgt','grp2');
-               print"<hr>";
                &Header::closebox;
                #---PROTOCOL------------------------------------------------------
                $fwdfwsettings{'SRC_PORT'} =~ s/\|/,/g;
@@ -1827,7 +1830,7 @@ END
                &General::readhasharray("$configsrvgrp", \%customservicegrp);
                my $helper;
                foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } keys %customservicegrp){
-                       if ($helper ne $customservicegrp{$key}[0]){
+                       if ($helper ne $customservicegrp{$key}[0] && $customservicegrp{$key}[2] ne 'none'){
                                print"<option ";
                                print"selected='selected'" if ($fwdfwsettings{$fwdfwsettings{'grp3'}} eq $customservicegrp{$key}[0]);
                                print">$customservicegrp{$key}[0]</option>";
@@ -1848,9 +1851,9 @@ END
                &Header::closebox;
                $checked{"RULE_ACTION"}{$fwdfwsettings{'RULE_ACTION'}}  = 'CHECKED';
                print <<END;
-                       <hr><br>
+                       <br>
                        <center>
-                               <table width="80%" border="0">
+                               <table width="80%" class='tbl' id='actions'>
                                        <tr>
                                                <td width="33%" align="center" bgcolor="$color{'color17'}">
                                                        &nbsp;<br>&nbsp;
@@ -1887,7 +1890,6 @@ END
 
                        <br>
 END
-
                #---Activate/logging/remark-------------------------------------
                &Header::openbox('100%', 'left', $Lang::tr{'fwdfw additional'});
                print<<END;
@@ -1995,7 +1997,7 @@ END
                                </td>
                        </tr>
                </table>
-               <br><hr>
+               <br>
 END
 
                #---ACTION------------------------------------------------------
@@ -2301,6 +2303,8 @@ sub viewtablenew
        &General::readhasharray("$config", $hash);
        &General::readhasharray("$configccdnet", \%ccdnet);
        &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$configgrp", \%customgrp);
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
 
        &Header::openbox('100%', 'left', $title);
        print "<table width='100%' cellspacing='0' class='tbl'>";
@@ -2404,6 +2408,21 @@ END
                                        }
                                }
                        }
+                       #check if networkgroups or servicegroups are empty
+                       foreach my $netgroup (sort keys %customgrp){
+                               if(($$hash{$key}[4] eq $customgrp{$netgroup}[0] || $$hash{$key}[6] eq $customgrp{$netgroup}[0]) && $customgrp{$netgroup}[2] eq 'none'){
+                                       $coloryellow='on';
+                                       &disable_rule($key);
+                                       $$hash{$key}[2]='';
+                               }
+                       }
+                       foreach my $srvgroup (sort keys %customservicegrp){
+                               if($$hash{$key}[15] eq $customservicegrp{$srvgroup}[0] && $customservicegrp{$srvgroup}[2] eq 'none'){
+                                       $coloryellow='on';
+                                       &disable_rule($key);
+                                       $$hash{$key}[2]='';
+                               }
+                       }
                        $$hash{'ACTIVE'}=$$hash{$key}[2];
                        $count++;
                        if($coloryellow eq 'on'){