]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - html/cgi-bin/forwardfw.cgi
Forward Firewall: New Version 0.9.8.2
[people/teissler/ipfire-2.x.git] / html / cgi-bin / forwardfw.cgi
index 42a3f1ccdd7537a0bdf07948c672d13bfe278838..fb0ef590023885739a5262da877620ee8566bc65 100755 (executable)
@@ -74,6 +74,7 @@ my %ipsecsettings=();
 my %aliases=();
 my %optionsfw=();
 
+my $VERSION='0.9.8.2';
 my $color;
 my $confignet          = "${General::swroot}/fwhosts/customnetworks";
 my $confighost         = "${General::swroot}/fwhosts/customhosts";
@@ -95,7 +96,7 @@ my $hint='';
 my $ipgrp="${General::swroot}/outgoing/groups";
 my $tdcolor='';
 my $checkorange='';
-
+my @protocols;
 &General::readhash("${General::swroot}/forward/settings", \%fwdfwsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
@@ -574,7 +575,9 @@ END
        print "$Lang::tr{'outgoing firewall reset'}: <input type='submit' name='ACTION' value='$Lang::tr{'reset'}' /><input type='hidden' name='poltype' value='outgoing' /></tr>";
        print "</table></form>";
        &Header::closebox();
+       print "<br><br><div align='right'><font size='1' color='grey'>Version: $VERSION</font></div>";
 }
+
 sub changerule
 {
        my $oldchain=shift;
@@ -1220,13 +1223,14 @@ sub get_serviceports
        my $name=shift;
        &General::readhasharray("$configsrv", \%customservice);
        &General::readhasharray("$configsrvgrp", \%customservicegrp);
-       my $protocols;
        my $tcp;
        my $udp;
+       my $icmp;
+       @protocols=();
        if($type eq 'service'){
                foreach my $key (sort { uc($customservice{$a}[0]) cmp uc($customservice{$b}[0]) } keys %customservice){
                        if ($customservice{$key}[0] eq $name){
-                               $protocols=$customservice{$key}[2];
+                               push (@protocols,$customservice{$key}[2]);
                        }
                }
        }elsif($type eq 'group'){
@@ -1234,16 +1238,32 @@ sub get_serviceports
                        if ($customservicegrp{$key}[0] eq $name){
                                foreach my $key1 (sort { uc($customservice{$a}[0]) cmp uc($customservice{$b}[0]) } keys %customservice){
                                        if ($customservice{$key1}[0] eq $customservicegrp{$key}[2]){
-                                               if($customservice{$key1}[2] eq 'TCP'){$tcp='TCP';}else{$udp='UDP';}
+                                               if($customservice{$key1}[2] eq 'TCP'){
+                                                       $tcp='TCP';
+                                               }elsif($customservice{$key1}[2] eq 'ICMP'){
+                                                       $icmp='ICMP';
+                                               }elsif($customservice{$key1}[2] eq 'UDP'){
+                                                       $udp='UDP';
+                                               }
                                        }
                                }
                        }
                }
        }
-       if($tcp && $udp){$protocols="TCP,UDP";
-       }elsif($tcp){$protocols.="TCP";
-       }elsif($udp){$protocols.="UDP";}
-       return $protocols;
+       if($tcp && $udp && $icmp){
+               push (@protocols,"All");
+               return @protocols;
+       }
+       if($tcp){
+               push (@protocols,"TCP");
+       }
+       if($udp){
+               push (@protocols,"UDP");
+       }
+       if($icmp){
+               push (@protocols,"ICMP");
+       }
+       return @protocols;
 }
 sub getcolor
 {
@@ -2056,8 +2076,6 @@ sub viewtablenew
                                                $$hash{$key}[2]='';
                                        }
                                }
-                               #$$hash{$key}[3]='';
-                               #$$hash{$key}[5]='';
                        }
                        $$hash{'ACTIVE'}=$$hash{$key}[2];
                        $count++;
@@ -2128,17 +2146,19 @@ END
                        #Get Protocol
                        my $prot;
                        if ($$hash{$key}[12]){                  #target prot if manual
-                               $prot=$$hash{$key}[12];
+                               push (@protocols,$$hash{$key}[12]);
                        }elsif($$hash{$key}[8]){                #source prot if manual
-                               $prot=$$hash{$key}[8];
+                               push (@protocols,$$hash{$key}[8]);
                        }elsif($$hash{$key}[14] eq 'cust_srv'){ 
-                               $prot=&get_serviceports("service",$$hash{$key}[15]);
+                               &get_serviceports("service",$$hash{$key}[15]);
                        }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
-                               $prot=&get_serviceports("group",$$hash{$key}[15]);
+                               &get_serviceports("group",$$hash{$key}[15]);
                        }else{
-                               $prot=$Lang::tr{'all'};
+                               push (@protocols,$Lang::tr{'all'});
                        }
-                       print"<td align='center'>$prot</td>";
+                       my $protz=join(",",@protocols);
+                       print"<td align='center'>$protz</td>";
+                       @protocols=();
                        if ($$hash{$key}[18] eq 'ON'){
                                my @days=();
                                if($$hash{$key}[19] ne ''){push (@days,$Lang::tr{'fwdfw wd_mon'});}