This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".
The branch, fifteen has been updated
via 7d5e022df4b37f157f8528cbce892e273f1b4836 (commit)
via 3a162dc14f98444dd91493285c677dc295aa4c4f (commit)
from 5d4d41b18c80f236b4dc796e1394ef0035cb034d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 7d5e022df4b37f157f8528cbce892e273f1b4836
Merge: 5d4d41b 3a162dc
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Tue Dec 10 13:31:38 2013 +0100
Merge remote-tracking branch 'amarx/firewall-fifteen-beta9' into fifteen
commit 3a162dc14f98444dd91493285c677dc295aa4c4f
Author: Alexander Marx <amarx(a)ipfire.org>
Date: Tue Dec 10 12:21:48 2013 +0100
Firewall: rebuild complete counter procedure in firewall-groups. This way the counters are on the fly generated and stable. also this is a prequisite to the new option that firewall-servicegroups can be rolled out by installation
-----------------------------------------------------------------------
Summary of changes:
html/cgi-bin/firewall.cgi | 94 +--------------------------------
html/cgi-bin/fwhosts.cgi | 131 ++++++++++++++++++++++++++++++++--------------
langs/de/cgi-bin/de.pl | 2 +-
langs/en/cgi-bin/en.pl | 2 +-
4 files changed, 96 insertions(+), 133 deletions(-)
Difference in files:
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
index 58b16a5..28a7f0b 100755
--- a/html/cgi-bin/firewall.cgi
+++ b/html/cgi-bin/firewall.cgi
@@ -251,17 +251,6 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
}
}
if (!$errormessage){
- &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
- if ($fwdfwsettings{'nobase'} ne 'on'){
- &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
- }
- if($fwdfwsettings{'oldusesrv'} eq '' && $fwdfwsettings{'USESRV'} eq 'ON'){
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
- }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }
if($fwdfwsettings{'nosave2'} ne 'on'){
&saverule(\%configinputfw,$configinput);
}
@@ -307,18 +296,6 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
}
#increase counters
if (!$errormessage){
- &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
- &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
- if($fwdfwsettings{'oldusesrv'} eq '' && $fwdfwsettings{'USESRV'} eq 'ON'){
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
- }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }
- if ($fwdfwsettings{'nobase'} eq 'on'){
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }
if ($fwdfwsettings{'nosave2'} ne 'on'){
&saverule(\%configoutgoingfw,$configoutgoing);
}
@@ -364,18 +341,6 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
}
#increase counters
if (!$errormessage){
- &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
- &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
- if($fwdfwsettings{'oldusesrv'} eq '' && $fwdfwsettings{'USESRV'} eq 'ON'){
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
- }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
- &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }
- if ($fwdfwsettings{'nobase'} eq 'on'){
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
- }
if ($fwdfwsettings{'nosave2'} ne 'on'){
&saverule(\%configfwdfw,$configfwdfw);
}
@@ -497,8 +462,6 @@ sub changerule
$fwdfwsettings{'config'}=$oldchain;
$fwdfwsettings{'nobase'}='on';
&deleterule;
- &checkcounter(0,0,$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
- &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
}
sub checksource
{
@@ -933,34 +896,6 @@ sub checkrule
$fwdfwsettings{'ICMP_TYPES'}='';
}
}
-sub checkcounter
-{
- my ($base1,$val1,$base2,$val2) = @_;
-
- if($base1 eq 'cust_net_src' || $base1 eq 'cust_net_tgt'){
- &dec_counter($confignet,\%customnetwork,$val1);
- }elsif($base1 eq 'cust_host_src' || $base1 eq 'cust_host_tgt'){
- &dec_counter($confighost,\%customhost,$val1);
- }elsif($base1 eq 'cust_grp_src' || $base1 eq 'cust_grp_tgt'){
- &dec_counter($configgrp,\%customgrp,$val1);
- }elsif($base1 eq 'cust_srv'){
- &dec_counter($configsrv,\%customservice,$val1);
- }elsif($base1 eq 'cust_srvgrp'){
- &dec_counter($configsrvgrp,\%customservicegrp,$val1);
- }
-
- if($base2 eq 'cust_net_src' || $base2 eq 'cust_net_tgt'){
- &inc_counter($confignet,\%customnetwork,$val2);
- }elsif($base2 eq 'cust_host_src' || $base2 eq 'cust_host_tgt'){
- &inc_counter($confighost,\%customhost,$val2);
- }elsif($base2 eq 'cust_grp_src' || $base2 eq 'cust_grp_tgt'){
- &inc_counter($configgrp,\%customgrp,$val2);
- }elsif($base2 eq 'cust_srv'){
- &inc_counter($configsrv,\%customservice,$val2);
- }elsif($base2 eq 'cust_srvgrp'){
- &inc_counter($configsrvgrp,\%customservicegrp,$val2);
- }
-}
sub checkvpn
{
my $ip=shift;
@@ -992,15 +927,6 @@ sub deleterule
my %delhash=();
&General::readhasharray($fwdfwsettings{'config'}, \%delhash);
foreach my $key (sort {$a <=> $b} keys %delhash){
- if ($key == $fwdfwsettings{'key'}){
- #check hosts/net and groups
- &checkcounter($delhash{$key}[3],$delhash{$key}[4],,);
- &checkcounter($delhash{$key}[5],$delhash{$key}[6],,);
- #check services and groups
- if ($delhash{$key}[11] eq 'ON'){
- &checkcounter($delhash{$key}[14],$delhash{$key}[15],,);
- }
- }
if ($key >= $fwdfwsettings{'key'}) {
my $next = $key + 1;
if (exists $delhash{$next}) {
@@ -1033,21 +959,6 @@ sub disable_rule
&General::writehasharray("$configfwdfw", \%configfwdfw);
&General::firewall_config_changed();
}
-sub dec_counter
-{
- my $config=shift;
- my %hash=%{(shift)};
- my $val=shift;
- my $pos;
- &General::readhasharray($config, \%hash);
- foreach my $key (sort { uc($hash{$a}[0]) cmp uc($hash{$b}[0]) } keys %hash){
- if($hash{$key}[0] eq $val){
- $pos=$#{$hash{$key}};
- $hash{$key}[$pos] = $hash{$key}[$pos]-1;
- }
- }
- &General::writehasharray($config, \%hash);
-}
sub error
{
if ($errormessage) {
@@ -2364,15 +2275,14 @@ sub validremark
return 0;}
return 1;
}
-
-sub viewtablerule {
+sub viewtablerule
+{
&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
&viewtablenew(\%configfwdfw, $configfwdfw, $Lang::tr{'firewall rules'});
&viewtablenew(\%configinputfw, $configinput, $Lang::tr{'external access'});
&viewtablenew(\%configoutgoingfw, $configoutgoing, $Lang::tr{'outgoing firewall'});
}
-
sub viewtablenew
{
my $hash=shift;
diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi
index 7f4b63c..7fb05de 100755
--- a/html/cgi-bin/fwhosts.cgi
+++ b/html/cgi-bin/fwhosts.cgi
@@ -46,6 +46,7 @@ my %ownnet=();
my %ipsecsettings=();
my %fwfwd=();
my %fwinp=();
+my %fwout=();
my %ovpnsettings=();
@@ -62,6 +63,7 @@ my $configsrv = "${General::swroot}/fwhosts/customservices";
my $configsrvgrp = "${General::swroot}/fwhosts/customservicegrp";
my $fwconfigfwd = "${General::swroot}/firewall/config";
my $fwconfiginp = "${General::swroot}/firewall/input";
+my $fwconfigout = "${General::swroot}/firewall/outgoing";
my $configovpn = "${General::swroot}/ovpn/settings";
my $tdcolor='';
my $configipsecrw = "${General::swroot}/vpn/settings";
@@ -166,13 +168,15 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice')
my $count=0;
my $needrules=0;
$errormessage=&checkports(\%customservice);
+ if ($fwhostsettings{'oldsrvname'} ne $fwhostsettings{'SRV_NAME'} && !&checkgroup($fwhostsettings{'SRV_NAME'})){
+ $errormessage=$Lang::tr{'fwhost err grpexist'};
+ }
if (!$errormessage){
&General::readhasharray("$configsrv", \%customservice);
foreach my $key (keys %customservice)
{
if ($customservice{$key}[0] eq $fwhostsettings{'oldsrvname'})
{
- $count=$customservice{$key}[4];
delete $customservice{$key};
&General::writehasharray("$configsrv", \%customservice);
last;
@@ -194,7 +198,6 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice')
$customservice{$key1}[1] = $fwhostsettings{'SRV_PORT'};
$customservice{$key1}[2] = $fwhostsettings{'PROT'};
$customservice{$key1}[3] = $fwhostsettings{'ICMP_TYPES'};
- $customservice{$key1}[4] = $count;
&General::writehasharray("$configsrv", \%customservice);
#check if we need to update firewallrules
if ($fwhostsettings{'SRV_NAME'} ne $fwhostsettings{'oldsrvname'}){
@@ -216,6 +219,15 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice')
}
&General::writehasharray("$fwconfiginp", \%fwinp);
}
+ if ( ! -z $fwconfigout ){
+ &General::readhasharray("$fwconfigout", \%fwout);
+ foreach my $line (sort keys %fwout){
+ if ($fwout{$line}[15] eq $fwhostsettings{'oldsrvname'}){
+ $fwout{$line}[15] = $fwhostsettings{'SRV_NAME'};
+ }
+ }
+ &General::writehasharray("$fwconfigout", \%fwout);
+ }
#check if we need to update groups
&General::readhasharray("$configsrvgrp", \%customservicegrp);
foreach my $key (sort keys %customservicegrp){
@@ -240,6 +252,7 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice')
$fwhostsettings{'PROT'} = '';
$fwhostsettings{'ICMP'} = '';
$fwhostsettings{'oldsrvicmp'} = '';
+ $fwhostsettings{'updatesrv'} = '';
}else{
$fwhostsettings{'SRV_NAME'} = $fwhostsettings{'oldsrvname'};
$fwhostsettings{'SRV_PORT'} = $fwhostsettings{'oldsrvport'};
@@ -247,7 +260,6 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice')
$fwhostsettings{'ICMP'} = $fwhostsettings{'oldsrvicmp'};
$fwhostsettings{'updatesrv'}= 'on';
}
- $fwhostsettings{'updatesrv'} = '';
if($needrules eq 'on'){
&General::firewall_config_changed();
}
@@ -572,7 +584,7 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp')
#check name
if (!&validhostname($grp)){$errormessage.=$Lang::tr{'fwhost err name'};}
#check existing name
- if (!checkgroup(\%customgrp,$grp) && $fwhostsettings{'update'} ne 'on'){$errormessage.=$Lang::tr{'fwhost err grpexist'};}
+ if (!&checkgroup($grp) && $fwhostsettings{'update'} ne 'on'){$errormessage.=$Lang::tr{'fwhost err grpexist'};}
#check remark
if ($rem ne '' && !&validremark($rem) && $fwhostsettings{'update'} ne 'on'){
$errormessage.=$Lang::tr{'fwhost err remark'};
@@ -731,6 +743,7 @@ if ($fwhostsettings{'ACTION'} eq 'saveservice')
{
my $ICMP;
&General::readhasharray("$configsrv", \%customservice );
+ &General::readhasharray("$configgrp", \%customgrp);
$errormessage=&checkports(\%customservice);
if ($fwhostsettings{'PROT'} eq 'ICMP'){
&General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
@@ -741,7 +754,11 @@ if ($fwhostsettings{'ACTION'} eq 'saveservice')
}
}
if($ICMP eq ''){$ICMP=$fwhostsettings{'ICMP_TYPES'};}
- if ($fwhostsettings{'PROT'} ne 'ICMP'){$ICMP='';}
+ if ($fwhostsettings{'PROT'} ne 'ICMP'){$ICMP='BLANK';}
+ #Check if a group with the same name already exists
+ if (!&checkgroup($fwhostsettings{'SRV_NAME'})){
+ $errormessage = $Lang::tr{'fwhost err grpexist'};
+ }
if (!$errormessage){
my $key = &General::findhasharraykey (\%customservice);
foreach my $i (0 .. 4) { $customservice{$key}[$i] = "";}
@@ -749,7 +766,6 @@ if ($fwhostsettings{'ACTION'} eq 'saveservice')
$customservice{$key}[1] = $fwhostsettings{'SRV_PORT'};
$customservice{$key}[2] = $fwhostsettings{'PROT'};
$customservice{$key}[3] = $ICMP;
- $customservice{$key}[4] = 0;
&General::writehasharray("$configsrv", \%customservice );
#reset fields
$fwhostsettings{'SRV_NAME'}='';
@@ -793,6 +809,10 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp')
if ($fwhostsettings{'SRVGRP_REMARK'} ne '' && !&validremark($fwhostsettings{'SRVGRP_REMARK'})){
$errormessage .= $Lang::tr{'fwhost err remark'};
}
+ #Check if there is already a service with the same name
+ if(!&checkservice($fwhostsettings{'SRVGRP_NAME'})){
+ $errormessage .= $Lang::tr{'fwhost err srv exists'};
+ }
if (!$errormessage){
#on first save, we have to enter a dummy value
if ($fwhostsettings{'CUST_SRV'} eq ''){
@@ -815,34 +835,14 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp')
{
$customservicegrp{$key}[1]='';
$customservicegrp{$key}[1]=$fwhostsettings{'SRVGRP_REMARK'};
- }
- }
- }
- #get count used
- foreach my $key (keys %customservicegrp)
- {
- if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'})
- {
- $count=$customservicegrp{$key}[3];
- last;
- }
- }
- if ($count eq '' ){$count='0';}
-
- foreach my $key (sort keys %customservice){
- if($customservice{$key}[0] eq $fwhostsettings{'CUST_SRV'}){
- $port=$customservice{$key}[1];
- $prot=$customservice{$key}[2];
- $customservice{$key}[4]++;
+ }
}
}
- &General::writehasharray("$configsrv", \%customservice );
my $key = &General::findhasharraykey (\%customservicegrp);
- foreach my $i (0 .. 3) { $customservice{$key}[$i] = "";}
+ foreach my $i (0 .. 2) { $customservice{$key}[$i] = "";}
$customservicegrp{$key}[0] = $fwhostsettings{'SRVGRP_NAME'};
$customservicegrp{$key}[1] = $fwhostsettings{'SRVGRP_REMARK'};
$customservicegrp{$key}[2] = $fwhostsettings{'CUST_SRV'};
- $customservicegrp{$key}[3] = $count;
&General::writehasharray("$configsrvgrp", \%customservicegrp );
$fwhostsettings{'updatesrvgrp'}='on';
}
@@ -993,7 +993,6 @@ if ($fwhostsettings{'ACTION'} eq 'delservice')
&General::readhasharray("$configsrv", \%customservice);
foreach my $key (keys %customservice) {
if($customservice{$key}[0] eq $fwhostsettings{'SRV_NAME'}){
- #&deletefromgrp($customhost{$key}[0],$configgrp);
delete $customservice{$key};
&General::writehasharray("$configsrv", \%customservice);
last;
@@ -1027,7 +1026,7 @@ if ($fwhostsettings{'ACTION'} eq 'delgrpservice')
&General::readhasharray("$configsrvgrp", \%customservicegrp);
&General::readhasharray("$configsrv", \%customservice);
foreach my $key (keys %customservicegrp){
- if($customservicegrp{$key}[0].",".$customservicegrp{$key}[1].",".$customservicegrp{$key}[2].",".$customservicegrp{$key}[3] eq $fwhostsettings{'delsrvfromgrp'})
+ if($customservicegrp{$key}[0].",".$customservicegrp{$key}[1].",".$customservicegrp{$key}[2] eq $fwhostsettings{'delsrvfromgrp'})
{
#decrease count from source service
foreach my $key1 (sort keys %customservice){
@@ -1678,10 +1677,15 @@ sub viewtablegrp
sub viewtableservice
{
my $count=0;
+ my $srvcount;
if(! -z "$configsrv")
{
&Header::openbox('100%', 'left', $Lang::tr{'fwhost services'});
&General::readhasharray("$configsrv", \%customservice);
+ &General::readhasharray("$configsrvgrp", \%customservicegrp);
+ &General::readhasharray("$fwconfigfwd", \%fwfwd);
+ &General::readhasharray("$fwconfiginp", \%fwinp);
+ &General::readhasharray("$fwconfigout", \%fwout);
print<<END;
<table width='100%' border='0' cellspacing='0'>
<tr><td align='center'><b>$Lang::tr{'fwhost srv_name'}</b></td><td align='center'><b>$Lang::tr{'fwhost prot'}</b></td><td align='center'><b>$Lang::tr{'fwhost port'}</b></td><td align='center'><b>ICMP</b></td><td align='center'><b>$Lang::tr{'fwhost used'}</b></td><td></td><td width='3%'></td></tr>
@@ -1695,17 +1699,19 @@ END
print<<END;
<td>$customservice{$key}[0]</td><td align='center'>$customservice{$key}[2]</td><td align='center'>$customservice{$key}[1]</td><td align='center'>
END
+ #Neuer count
+ $srvcount=&getsrvcount($customservice{$key}[0]);
if($customservice{$key}[3] eq 'All ICMP-Types'){print $Lang::tr{'fwdfw all icmp'};}
elsif($customservice{$key}[3] ne 'BLANK'){print $customservice{$key}[3];}
print<<END;
- </td><td align='center'>$customservice{$key}[4]x</td>
+ </td><td align='center'>$srvcount x</td>
<td width='1%'><form method='post'><input type='image' src='/images/edit.gif' align='middle' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} /><input type='hidden' name='ACTION' value='editservice' />
<input type='hidden' name='SRV_NAME' value='$customservice{$key}[0]' />
<input type='hidden' name='SRV_PORT' value='$customservice{$key}[1]' />
<input type='hidden' name='PROT' value='$customservice{$key}[2]' />
<input type='hidden' name='ICMP' value='$customservice{$key}[3]' /></form></td>
END
- if ($customservice{$key}[4] eq '0')
+ if ($srvcount eq '0')
{
print"<td width='1%'><form method='post'><input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} /><input type='hidden' name='ACTION' value='delservice' /><input type='hidden' name='SRV_NAME' value='$customservice{$key}[0]'></td></tr></form>";
}else{
@@ -1725,14 +1731,20 @@ sub viewtableservicegrp
my $port;
my $protocol;
my $delflag;
+ my $grpcount=0;
if (! -z $configsrvgrp){
&Header::openbox('100%', 'left', $Lang::tr{'fwhost cust srvgrp'});
&General::readhasharray("$configsrvgrp", \%customservicegrp);
&General::readhasharray("$configsrv", \%customservice);
+ &General::readhasharray("$fwconfigfwd", \%fwfwd);
+ &General::readhasharray("$fwconfiginp", \%fwinp);
+ &General::readhasharray("$fwconfigout", \%fwout);
my $number= keys %customservicegrp;
foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } sort { ncmp($customservicegrp{$a}[2],$customservicegrp{$b}[2]) }keys %customservicegrp){
$count++;
if ($helper ne $customservicegrp{$key}[0]){
+ #Get used groupcounter
+ $grpcount=&getsrvcount($customservicegrp{$key}[0]);
$delflag=0;
foreach my $key1 (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } sort { ncmp($customservicegrp{$a}[2],$customservicegrp{$b}[2]) } keys %customservicegrp){
if ($customservicegrp{$key}[0] eq $customservicegrp{$key1}[0])
@@ -1753,8 +1765,8 @@ sub viewtableservicegrp
if($count >=2){print"</table>";}
print "<br><b><u>$grpname</u></b> ";
print "<b>$Lang::tr{'remark'}:</b> $remark " if ($remark ne '');
- print " <b>$Lang::tr{'used'}:</b> $customservicegrp{$key}[3]x";
- if($customservicegrp{$key}[3] == '0')
+ print " <b>$Lang::tr{'used'}:</b> $grpcount x";
+ if($grpcount == '0')
{
print"<form method='post' style='display:inline'><input type='image' src='/images/delete.gif' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} align='right' /><input type='hidden' name='SRVGRP_NAME' value='$grpname' ><input type='hidden' name='ACTION' value='delservicegrp'></form>";
}
@@ -1792,9 +1804,9 @@ sub viewtableservicegrp
}
print"<input type='hidden' name='ACTION' value='delgrpservice'><input type='hidden' name='updatesrvgrp' value='$fwhostsettings{'updatesrvgrp'}'>";
if($protocol eq 'TCP' || $protocol eq 'UDP' || $protocol eq 'ICMP'){
- print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$customservicegrp{$key}[2],$customservicegrp{$key}[3]'></form></td></tr>";
+ print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$customservicegrp{$key}[2]'></form></td></tr>";
}else{
- print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$protocol,$customservicegrp{$key}[3]'></form></td></tr>";
+ print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$protocol'></form></td></tr>";
}
$helper=$customservicegrp{$key}[0];
}
@@ -1816,10 +1828,21 @@ sub checkname
}
sub checkgroup
{
- my %hash=%{(shift)};
+ &General::readhasharray("$configsrvgrp", \%customservicegrp );
my $name=shift;
- foreach my $key (keys %hash) {
- if($hash{$key}[0] eq $name){
+ foreach my $key (keys %customservicegrp) {
+ if($customservicegrp{$key}[0] eq $name){
+ return 0;
+ }
+ }
+ return 1;
+}
+sub checkservice
+{
+ &General::readhasharray("$configsrv", \%customservice );
+ my $name=shift;
+ foreach my $key (keys %customservice) {
+ if($customservice{$key}[0] eq $name){
return 0;
}
}
@@ -1907,6 +1930,36 @@ sub get_name
return "$network" if ($val eq $defaultNetworks{$network}{'NAME'});
}
}
+sub getsrvcount
+{
+ my $searchstring=shift;
+ my $srvcounter=0;
+ #Count services used in servicegroups
+ foreach my $key (keys %customservicegrp) {
+ if($customservicegrp{$key}[2] eq $searchstring){
+ $srvcounter++;
+ }
+ }
+ #Count services used in firewall - config
+ foreach my $key1 (keys %fwfwd) {
+ if($fwfwd{$key1}[15] eq $searchstring){
+ $srvcounter++;
+ }
+ }
+ #Count services used in firewall - input
+ foreach my $key2 (keys %fwinp) {
+ if($fwinp{$key2}[15] eq $searchstring){
+ $srvcounter++;
+ }
+ }
+ #Count services used in firewall - outgoing
+ foreach my $key3 (keys %fwout) {
+ if($fwout{$key3}[15] eq $searchstring){
+ $srvcounter++;
+ }
+ }
+ return $srvcounter;
+}
sub deletefromgrp
{
my $target=shift;
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index dd7eb78..b0b0724 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -1026,7 +1026,7 @@
'fwhost err empty' => 'Bitte alle Felder ausfüllen',
'fwhost err emptytable' => 'Keine Einträge in Gruppe',
'fwhost err groupempty' => 'Die gewählte Gruppe ist leer',
-'fwhost err grpexist' => 'Die Gruppe existiert bereits',
+'fwhost err grpexist' => 'Eine Gruppe mit diesem Namen existiert bereits',
'fwhost err hostexist' => 'Ein Host mit diesem Namen existiert bereits',
'fwhost err hostorip' => 'Name oder IP-Adresse ungültig',
'fwhost err ip' => 'IP-Adresse ungültig',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index f03ea37..0909226 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -1051,7 +1051,7 @@
'fwhost err empty' => 'Please fill in all input fields',
'fwhost err emptytable' => 'No entries in this group',
'fwhost err groupempty' => 'The selected group is empty',
-'fwhost err grpexist' => 'Group already exists',
+'fwhost err grpexist' => 'A group with the same name already exists',
'fwhost err hostexist' => 'A host with the same name already exists',
'fwhost err hostorip' => 'Invalid name or IP address',
'fwhost err ip' => 'IP address invalid',
hooks/post-receive
--
IPFire 2.x development tree