X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Ffwhosts.cgi;h=90e1fb305c39fa788fe3d1ec6ca5455d4827b009;hp=5a838369268502e93f5ad799a51b888af738c506;hb=d928d79566cd802f85cd38bcd8bd76f4bb112547;hpb=62fc8511664c6646d706aa42927bac53ac6a5b5f diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi index 5a8383692..90e1fb305 100755 --- a/html/cgi-bin/fwhosts.cgi +++ b/html/cgi-bin/fwhosts.cgi @@ -80,6 +80,11 @@ unless (-e $configsrvgrp) { system("touch $configsrvgrp"); } &Header::openbigbox('100%', 'center'); ## ACTION #### +if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwdfw reread'}) +{ + &reread_rules; + &showmenu; +} # Update if ($fwhostsettings{'ACTION'} eq 'updatenet' ) { @@ -108,30 +113,29 @@ if ($fwhostsettings{'ACTION'} eq 'updatehost') { if($customhost{$key}[0] eq $fwhostsettings{'orgname'}) { - $fwhostsettings{'orgname'} = $customhost{$key}[0]; if ($customhost{$key}[1] eq 'ip'){ ($ip,$subnet) = split (/\//,$customhost{$key}[2]); }else{ $ip = $customhost{$key}[2]; } $fwhostsettings{'orgip'} = $ip; - $fwhostsettings{'count'} = $customhost{$key}[3]; + $fwhostsettings{'count'} = $customhost{$key}[4]; delete $customhost{$key}; + &General::writehasharray("$confighost", \%customhost); } } - &General::writehasharray("$confighost", \%customhost); - - - $fwhostsettings{'actualize'} = 'on'; + if($fwhostsettings{'orgip'}){ $fwhostsettings{'ACTION'} = 'savehost'; + }else{ + $fwhostsettings{'ACTION'} = $Lang::tr{'fwhost newhost'}; + } } if ($fwhostsettings{'ACTION'} eq 'updateservice') { my $count=0; my $needrules=0; $errormessage=&checkports(\%customservice); - if (!$errormessage){ &General::readhasharray("$configsrv", \%customservice); foreach my $key (keys %customservice) @@ -155,30 +159,54 @@ if ($fwhostsettings{'ACTION'} eq 'updateservice') $customservice{$key1}[3] = $fwhostsettings{'ICMP_TYPES'}; $customservice{$key1}[4] = $count; &General::writehasharray("$configsrv", \%customservice); - if($fwhostsettings{'updatesrv'} eq 'on'){ - if($count gt 0 && $fwhostsettings{'oldsrvport'} ne $fwhostsettings{'SRV_PORT'} ){ - $needrules='on'; + #check if we need to update firewallrules + if ($fwhostsettings{'SRV_NAME'} ne $fwhostsettings{'oldsrvname'}){ + if ( ! -z $fwconfigfwd ){ + &General::readhasharray("$fwconfigfwd", \%fwfwd); + foreach my $key (sort keys %fwfwd){ + if ($fwfwd{$key}[15] eq $fwhostsettings{'oldsrvname'}){ + $fwfwd{$key}[15] = $fwhostsettings{'SRV_NAME'}; + } + } + &General::writehasharray("$fwconfigfwd", \%fwfwd); + } + if ( ! -z $fwconfiginp ){ + &General::readhasharray("$fwconfiginp", \%fwinp); + foreach my $line (sort keys %fwinp){ + if ($fwfwd{$line}[15] eq $fwhostsettings{'oldsrvname'}){ + $fwfwd{$line}[15] = $fwhostsettings{'SRV_NAME'}; + } + } + &General::writehasharray("$fwconfiginp", \%fwinp); } - if($count gt 0 && $fwhostsettings{'oldsrvprot'} ne $fwhostsettings{'PROT'} ){ - $needrules='on'; + #check if we need to update groups + &General::readhasharray("$configsrvgrp", \%customservicegrp); + foreach my $key (sort keys %customservicegrp){ + if($customservicegrp{$key}[2] eq $fwhostsettings{'oldsrvname'}){ + $customservicegrp{$key}[2] = $fwhostsettings{'SRV_NAME'}; + } } + &General::writehasharray("$configsrvgrp", \%customservicegrp); + $needrules='on'; + } + if($count gt 0 && $fwhostsettings{'oldsrvport'} ne $fwhostsettings{'SRV_PORT'} ){ + $needrules='on'; + } + if($count gt 0 && $fwhostsettings{'oldsrvprot'} ne $fwhostsettings{'PROT'} ){ + $needrules='on'; } $fwhostsettings{'SRV_NAME'} = ''; $fwhostsettings{'SRV_PORT'} = ''; $fwhostsettings{'PROT'} = ''; - }else{ $fwhostsettings{'SRV_NAME'} = $fwhostsettings{'oldsrvname'}; $fwhostsettings{'SRV_PORT'} = $fwhostsettings{'oldsrvport'}; $fwhostsettings{'PROT'} = $fwhostsettings{'oldsrvprot'}; $fwhostsettings{'updatesrv'}= 'on'; } - if($needrules eq 'on'){ - $errormessage="reread!"; &rules; } - &addservice; } # save @@ -187,7 +215,6 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) my $count=0; my $needrules=0; if ($fwhostsettings{'orgname'} eq ''){$fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};} - #check if all fields are set if ($fwhostsettings{'HOSTNAME'} eq '' || $fwhostsettings{'IP'} eq '' || $fwhostsettings{'SUBNET'} eq '') { @@ -207,7 +234,6 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) if(&General::iporsubtocidr($fwhostsettings{'SUBNET'}) eq '32') { $errormessage=$errormessage.$Lang::tr{'fwhost err sub32'}; - } if($fwhostsettings{'error'} ne 'on'){ #check if we use one of ipfire's networks (green,orange,blue) @@ -240,14 +266,12 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) if (!$errormessage){ &plausicheck("editnet"); } - #check if network ip is part of an already used one if(&checksubnet(\%customnetwork)) { $errormessage=$errormessage.$Lang::tr{'fwhost err partofnet'}; $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'}; } - if($fwhostsettings{'actualize'} eq 'on' && $fwhostsettings{'newnet'} ne 'on' && $errormessage) { $fwhostsettings{'actualize'} = ''; @@ -260,7 +284,6 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) &General::writehasharray("$confignet", \%customnetwork); undef %customnetwork; } - if (!$errormessage){ &General::readhasharray("$confignet", \%customnetwork); if ($fwhostsettings{'ACTION'} eq 'updatenet'){ @@ -345,23 +368,19 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) &viewtablenet; } } - } if ($fwhostsettings{'ACTION'} eq 'savehost') { my $count=0; my $needrules=0; if ($fwhostsettings{'orgname'} eq ''){$fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};} - $fwhostsettings{'SUBNET'}='32'; - #check if all fields are set if ($fwhostsettings{'HOSTNAME'} eq '' || $fwhostsettings{'IP'} eq '' || $fwhostsettings{'SUBNET'} eq '') { $errormessage=$errormessage.$Lang::tr{'fwhost err empty'}; $fwhostsettings{'ACTION'} = 'edithost'; }else{ - if($fwhostsettings{'type'} eq 'ip' && $fwhostsettings{'IP'}=~/^([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}$/){ $fwhostsettings{'type'} = 'mac'; }elsif($fwhostsettings{'type'} eq 'mac' && $fwhostsettings{'IP'}=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){ @@ -374,15 +393,17 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') $fwhostsettings{'type'} = ''; $errormessage=$Lang::tr{'fwhost err ipmac'}; } - if($fwhostsettings{'type'} eq 'mac' ) { if ($fwhostsettings{'IP'}!~/^([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}$/ ) { $errormessage=$Lang::tr{'fwhost err mac'}; - } } + #check remark + if ($fwhostsettings{'HOSTREMARK'} ne '' && !&validremark($fwhostsettings{'HOSTREMARK'})){ + $errormessage=$Lang::tr{'fwhost err remark'}; + } #CHECK IP-PART if ($fwhostsettings{'type'} eq 'ip'){ #check for subnet @@ -392,7 +413,6 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') $errormessage.=$errormessage.$Lang::tr{'fwhost err ip'}; $fwhostsettings{'error'}='on'; } - }elsif(rindex($fwhostsettings{'IP'},'/') ne '-1' ){ $errormessage=$errormessage.$Lang::tr{'fwhost err ipwithsub'}; $fwhostsettings{'error'}='on'; @@ -403,18 +423,14 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') $errormessage=$Lang::tr{'fwhost err hostip'}; } } - - - #only check plausi when no error till now if (!$errormessage){ &plausicheck("edithost"); } - if($fwhostsettings{'actualize'} eq 'on' && $fwhostsettings{'newhost'} ne 'on' && $errormessage){ $fwhostsettings{'actualize'} = ''; my $key = &General::findhasharraykey (\%customhost); - foreach my $i (0 .. 3) { $customhost{$key}[$i] = "";} + foreach my $i (0 .. 4) { $customhost{$key}[$i] = "";} $customhost{$key}[0] = $fwhostsettings{'orgname'} ; $customhost{$key}[1] = $fwhostsettings{'type'} ; if($customhost{$key}[1] eq 'ip'){ @@ -422,12 +438,11 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') }else{ $customhost{$key}[2] = $fwhostsettings{'orgip'}; } - $customhost{$key}[3] = $fwhostsettings{'count'}; + $customhost{$key}[3] = $fwhostsettings{'HOSTREMARK'}; + $customhost{$key}[4] = $fwhostsettings{'count'}; &General::writehasharray("$confighost", \%customhost); undef %customhost; - } - if (!$errormessage){ #get count if host was edited if($fwhostsettings{'actualize'} eq 'on'){ @@ -470,7 +485,7 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') } } my $key = &General::findhasharraykey (\%customhost); - foreach my $i (0 .. 3) { $customhost{$key}[$i] = "";} + foreach my $i (0 .. 4) { $customhost{$key}[$i] = "";} $customhost{$key}[0] = $fwhostsettings{'HOSTNAME'} ; $customhost{$key}[1] = $fwhostsettings{'type'} ; if ($fwhostsettings{'type'} eq 'ip'){ @@ -482,14 +497,14 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') $customhost{$key}[2] = $fwhostsettings{'IP'}; } if($fwhostsettings{'newhost'} eq 'on'){$count=0;} - $customhost{$key}[3] = $count; + $customhost{$key}[3] = $fwhostsettings{'HOSTREMARK'}; + $customhost{$key}[4] =$count; &General::writehasharray("$confighost", \%customhost); - - #$fwhostsettings{'IP'} = $fwhostsettings{'IP'}."/".&General::iporsubtodec($fwhostsettings{'SUBNET'}); undef %customhost; $fwhostsettings{'HOSTNAME'}=''; $fwhostsettings{'IP'}=''; $fwhostsettings{'type'}=''; + $fwhostsettings{'HOSTREMARK'}=''; #check if we need to update rules while host was edited if($needrules eq 'on'){ &rules; @@ -500,13 +515,11 @@ if ($fwhostsettings{'ACTION'} eq 'savehost') &addhost; &viewtablehost; } - } - } if ($fwhostsettings{'ACTION'} eq 'savegrp') { - my $grp; + my $grp=$fwhostsettings{'grp_name'};; my $rem=$fwhostsettings{'remark'}; my $count; my $type; @@ -516,121 +529,108 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') &General::readhasharray("$configgrp", \%customgrp); &General::readhasharray("$confignet", \%customnetwork); &General::readhasharray("$confighost", \%customhost); - $grp=$fwhostsettings{'grp_name'}; - - if (!&General::validhostname($grp)){$errormessage=$errormessage.$Lang::tr{'fwhost err name'};} - - ###check standard networks - if ($fwhostsettings{'grp2'} eq 'std_net'){ - @target=$fwhostsettings{'DEFAULT_SRC_ADR'}; - $type='Standard Network'; - } - ##check custom networks - if ($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} ne ''){ - @target=$fwhostsettings{'CUST_SRC_NET'}; - $updcounter='net'; - $type='Custom Network'; - }elsif($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}."
"; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - #check custom addresses - if ($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} ne ''){ - @target=$fwhostsettings{'CUST_SRC_HOST'}; - $updcounter='host'; - $type='Custom Host'; - }elsif($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}."
"; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - #get address from ovpn ccd static net - if ($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} ne ''){ - @target=$fwhostsettings{'OVPN_CCD_NET'}; - $type='OpenVPN static network'; - }elsif($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - #get address from ovpn ccd static host - if ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} ne ''){ - @target=$fwhostsettings{'OVPN_CCD_HOST'}; - $type='OpenVPN static host'; - }elsif ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}; - } - #get address from ovpn ccd Net-2-Net - if ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} ne ''){ - @target=$fwhostsettings{'OVPN_N2N'}; - $type='OpenVPN N-2-N'; - }elsif ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - - #get address from IPSEC HOST - if ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} ne ''){ - @target=$fwhostsettings{'IPSEC_HOST'}; - $type='IpSec Host'; - }elsif ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - #get address from IPSEC NETWORK - if ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} ne ''){ - @target=$fwhostsettings{'IPSEC_NET'}; - $type='IpSec Network'; - }elsif ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} eq ''){ - $errormessage=$Lang::tr{'fwhost err groupempty'}; - $fwhostsettings{'grp_name'}=''; - $fwhostsettings{'remark'}=''; - } - - #check if host/net exists in grp - my $test="$grp,$fwhostsettings{'oldremark'},@target"; - foreach my $key (keys %customgrp) { - my $test1="$customgrp{$key}[0],$customgrp{$key}[1],$customgrp{$key}[2]"; - if ($test1 eq $test){ - $errormessage=$Lang::tr{'fwhost err isingrp'}; - $fwhostsettings{'update'} = 'on'; + #check name + if (!&validhostname($grp)){$errormessage.=$Lang::tr{'fwhost err name'};} + #check remark + if ($rem ne '' && !&validremark($rem) && $fwhostsettings{'update'} ne 'on'){ + $errormessage.=$Lang::tr{'fwhost err remark'}; + } + if ($fwhostsettings{'update'} eq 'on'){ + #check standard networks + if ($fwhostsettings{'grp2'} eq 'std_net'){ + @target=$fwhostsettings{'DEFAULT_SRC_ADR'}; + $type='Standard Network'; + } + #check custom networks + if ($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} ne ''){ + @target=$fwhostsettings{'CUST_SRC_NET'}; + $updcounter='net'; + $type='Custom Network'; + }elsif($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}."
"; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #check custom addresses + if ($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} ne ''){ + @target=$fwhostsettings{'CUST_SRC_HOST'}; + $updcounter='host'; + $type='Custom Host'; + }elsif($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}."
"; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #get address from ovpn ccd static net + if ($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} ne ''){ + @target=$fwhostsettings{'OVPN_CCD_NET'}; + $type='OpenVPN static network'; + }elsif($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #get address from ovpn ccd static host + if ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} ne ''){ + @target=$fwhostsettings{'OVPN_CCD_HOST'}; + $type='OpenVPN static host'; + }elsif ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}; + } + #get address from ovpn ccd Net-2-Net + if ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} ne ''){ + @target=$fwhostsettings{'OVPN_N2N'}; + $type='OpenVPN N-2-N'; + }elsif ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #get address from IPSEC HOST + if ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} ne ''){ + @target=$fwhostsettings{'IPSEC_HOST'}; + $type='IpSec Host'; + }elsif ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #get address from IPSEC NETWORK + if ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} ne ''){ + @target=$fwhostsettings{'IPSEC_NET'}; + $type='IpSec Network'; + }elsif ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} eq ''){ + $errormessage=$Lang::tr{'fwhost err groupempty'}; + $fwhostsettings{'grp_name'}=''; + $fwhostsettings{'remark'}=''; + } + #check if host/net exists in grp + + my $test="$grp,$fwhostsettings{'oldremark'},@target"; + foreach my $key (keys %customgrp) { + my $test1="$customgrp{$key}[0],$customgrp{$key}[1],$customgrp{$key}[2]"; + if ($test1 eq $test){ + $errormessage=$Lang::tr{'fwhost err isingrp'}; + $fwhostsettings{'update'} = 'on'; + } } } - + if (!$errormessage){ #on first save, we have an empty @target, so fill it with nothing my $targetvalues=@target; if ($targetvalues == '0'){ - @target=$Lang::tr{'fwhost empty'}; + @target="none"; } #on update, we have to delete the dummy entry - foreach my $key (keys %customgrp){ - if ($customgrp{$key}[0] eq $grp && $customgrp{$key}[2] eq $Lang::tr{'fwhost empty'}){ + if ($customgrp{$key}[0] eq $grp && $customgrp{$key}[2] eq "none"){ delete $customgrp{$key}; last; } } &General::writehasharray("$configgrp", \%customgrp); &General::readhasharray("$configgrp", \%customgrp); - - - - #check if remark has also changed - if ($fwhostsettings{'remark'} ne $fwhostsettings{'oldremark'} && $fwhostsettings{'update'} eq 'on') - { - foreach my $key (keys %customgrp) - { - if($customgrp{$key}[0] eq $grp && $customgrp{$key}[1] eq $fwhostsettings{'oldremark'}) - { - $customgrp{$key}[1]=''; - $customgrp{$key}[1]=$rem; - } - } - } #get count used foreach my $key (keys %customgrp) { @@ -658,7 +658,6 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') $customgrp{$key}[4] = $count; } &General::writehasharray("$configgrp", \%customgrp); - #update counter in Host/Net if($updcounter eq 'net'){ foreach my $key (keys %customnetwork) { @@ -671,30 +670,13 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') }elsif($updcounter eq 'host'){ foreach my $key (keys %customhost) { if ($customhost{$key}[0] eq $fwhostsettings{'CUST_SRC_HOST'}){ - $customhost{$key}[3]=$customhost{$key}[3]+1; + $customhost{$key}[4]=$customhost{$key}[3]+1; } } &General::writehasharray("$confighost", \%customhost); } - $fwhostsettings{'update'}='on'; - } - if ($fwhostsettings{'remark'} ne $fwhostsettings{'oldremark'} && $errormessage) - { - foreach my $key (keys %customgrp) - { - if($customgrp{$key}[0] eq $grp && $customgrp{$key}[1] eq $fwhostsettings{'oldremark'}) - { - $customgrp{$key}[1]=''; - $customgrp{$key}[1]=$rem; - } - } - &General::writehasharray("$configsrvgrp", \%customservicegrp); - $errormessage=''; - $hint=$Lang::tr{'fwhost changeremark'}; - $fwhostsettings{'update'}='on'; - } #check if ruleupdate is needed if($count > 0 ) { @@ -702,15 +684,12 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') } &addgrp; &viewtablegrp; - } if ($fwhostsettings{'ACTION'} eq 'saveservice') { my $ICMP; - &General::readhasharray("$configsrv", \%customservice ); $errormessage=&checkports(\%customservice); - if ($fwhostsettings{'PROT'} eq 'ICMP'){ &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes); foreach my $key (keys %icmptypes){ @@ -721,7 +700,6 @@ if ($fwhostsettings{'ACTION'} eq 'saveservice') } if($ICMP eq ''){$ICMP='BLANK';} if (!$errormessage){ - my $key = &General::findhasharraykey (\%customservice); foreach my $i (0 .. 4) { $customservice{$key}[$i] = "";} $customservice{$key}[0] = $fwhostsettings{'SRV_NAME'}; @@ -735,11 +713,8 @@ if ($fwhostsettings{'ACTION'} eq 'saveservice') $fwhostsettings{'SRV_PORT'}=''; $fwhostsettings{'PROT'}=''; $fwhostsettings{'ICMP_TYPES'}=''; - } - &addservice; - } if ($fwhostsettings{'ACTION'} eq 'saveservicegrp') { @@ -748,16 +723,15 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp') my $count=0; &General::readhasharray("$configsrvgrp", \%customservicegrp ); &General::readhasharray("$configsrv", \%customservice ); - $errormessage=&checkservicegroup; - if (!$errormessage){ #on first save, we have to enter a dummy value - if ($fwhostsettings{'CUST_SRV'} eq ''){$fwhostsettings{'CUST_SRV'}=$Lang::tr{'fwhost empty'};} - + if ($fwhostsettings{'CUST_SRV'} eq ''){ + $fwhostsettings{'CUST_SRV'}='none'; + } #on update, we have to delete the dummy entry foreach my $key (keys %customservicegrp){ - if ($customservicegrp{$key}[2] eq $Lang::tr{'fwhost empty'}){ + if ($customservicegrp{$key}[2] eq 'none'){ delete $customservicegrp{$key}; last; } @@ -780,7 +754,7 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp') { if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'}) { - $count=$customservicegrp{$key}[5]; + $count=$customservicegrp{$key}[3]; last; } } @@ -794,32 +768,15 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp') } } &General::writehasharray("$configsrv", \%customservice ); - my $key = &General::findhasharraykey (\%customservicegrp); foreach my $i (0 .. 3) { $customservice{$key}[$i] = "";} $customservicegrp{$key}[0] = $fwhostsettings{'SRVGRP_NAME'}; $customservicegrp{$key}[1] = $fwhostsettings{'SRVGRP_REMARK'}; $customservicegrp{$key}[2] = $fwhostsettings{'CUST_SRV'}; - $customservicegrp{$key}[3] = $port; - $customservicegrp{$key}[4] = $prot; - $customservicegrp{$key}[5] = $count; + $customservicegrp{$key}[3] = $count; &General::writehasharray("$configsrvgrp", \%customservicegrp ); $fwhostsettings{'updatesrvgrp'}='on'; } - if ($fwhostsettings{'SRVGRP_REMARK'} ne $fwhostsettings{'oldsrvgrpremark'} && $errormessage){ - foreach my $key (keys %customservicegrp) - { - if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} && $customservicegrp{$key}[1] eq $fwhostsettings{'oldsrvgrpremark'}) - { - $customservicegrp{$key}[1]=''; - $customservicegrp{$key}[1]=$fwhostsettings{'SRVGRP_REMARK'}; - } - } - &General::writehasharray("$configsrvgrp", \%customservicegrp); - $errormessage=''; - $hint=$Lang::tr{'fwhost changeremark'}; - $fwhostsettings{'update'}='on'; - } if ($count gt 0){ &rules; } @@ -895,10 +852,11 @@ if ($fwhostsettings{'ACTION'} eq 'delhost') } &addhost; &viewtablehost; - } if ($fwhostsettings{'ACTION'} eq 'deletegrphost') { + my $grpremark; + my $grpname; &General::readhasharray("$configgrp", \%customgrp); foreach my $key (keys %customgrp){ if($customgrp{$key}[0].",".$customgrp{$key}[1].",".$customgrp{$key}[2].",".$customgrp{$key}[3] eq $fwhostsettings{'delhost'}){ @@ -917,17 +875,23 @@ if ($fwhostsettings{'ACTION'} eq 'deletegrphost') &General::readhasharray("$confighost", \%customhost); foreach my $key1 (keys %customhost){ if ($customhost{$key1}[0] eq $customgrp{$key}[2]){ - $customhost{$key1}[3] = $customhost{$key1}[3]-1; + $customhost{$key1}[4] = $customhost{$key1}[4]-1; last; } } &General::writehasharray("$confighost", \%customhost); } + $grpname=$customgrp{$key}[0]; + $grpremark=$customgrp{$key}[1]; delete $customgrp{$key}; } } &General::writehasharray("$configgrp", \%customgrp); - &rules; + if ($fwhostsettings{'grpcnt'} > 0){&rules;} + if ($fwhostsettings{'update'} eq 'on'){ + $fwhostsettings{'remark'}= $grpremark; + $fwhostsettings{'grp_name'}=$grpname; + } &addgrp; &viewtablegrp; } @@ -981,6 +945,8 @@ if ($fwhostsettings{'ACTION'} eq 'delservicegrp') } if ($fwhostsettings{'ACTION'} eq 'delgrpservice') { + my $grpname; + my $grpremark; &General::readhasharray("$configsrvgrp", \%customservicegrp); &General::readhasharray("$configsrv", \%customservice); foreach my $key (keys %customservicegrp){ @@ -994,11 +960,18 @@ if ($fwhostsettings{'ACTION'} eq 'delgrpservice') } } &General::writehasharray("$configsrv", \%customservice); - delete $customservicegrp{$key} + $grpname=$customservicegrp{$key}[0]; + $grpremark=$customservicegrp{$key}[1]; + delete $customservicegrp{$key}; } } &General::writehasharray("$configsrvgrp", \%customservicegrp); &rules; + if ($fwhostsettings{'updatesrvgrp'} eq 'on'){ + #$fwhostsettings{'updatesrvgrp'}='on'; + $fwhostsettings{'SRVGRP_NAME'}=$grpname; + $fwhostsettings{'SRVGRP_REMARK'}=$grpremark; + } &addservicegrp; &viewtableservicegrp; @@ -1027,6 +1000,62 @@ if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newservicegrp'}) &addservicegrp; &viewtableservicegrp; } +if ($fwhostsettings{'ACTION'} eq 'changegrpremark') +{ + &General::readhasharray("$configgrp", \%customgrp); + if ($fwhostsettings{'oldrem'} ne $fwhostsettings{'newrem'} && (&validremark($fwhostsettings{'newrem'}) || $fwhostsettings{'newrem'} eq '')){ + foreach my $key (sort keys %customgrp) + { + #$customgrp{$key}[1]=~ s/\|/,/g; + if($customgrp{$key}[0] eq $fwhostsettings{'grp'} && $customgrp{$key}[1] eq $fwhostsettings{'oldrem'}) + { + #$fwhostsettings{'newrem'}=~ s/,/\|/g; + $customgrp{$key}[1]=''; + $customgrp{$key}[1]=$fwhostsettings{'newrem'}; + } + } + &General::writehasharray("$configgrp", \%customgrp); + $fwhostsettings{'update'}='on'; + #$fwhostsettings{'newrem'}=~ s/\|/,/g; + $fwhostsettings{'remark'}=$fwhostsettings{'newrem'}; + }else{ + $errormessage=$Lang::tr{'fwhost err remark'}; + $fwhostsettings{'remark'}=$fwhostsettings{'oldrem'}; + $fwhostsettings{'grp_name'}=$fwhostsettings{'grp'}; + $fwhostsettings{'update'} = 'on'; + } + $fwhostsettings{'grp_name'}=$fwhostsettings{'grp'}; + &addgrp; + &viewtablegrp; +} +if ($fwhostsettings{'ACTION'} eq 'changesrvgrpremark') +{ + &General::readhasharray("$configsrvgrp", \%customservicegrp ); + if ($fwhostsettings{'oldsrvrem'} ne $fwhostsettings{'newsrvrem'} && (&validremark($fwhostsettings{'newsrvrem'}) || $fwhostsettings{'newsrvrem'} eq '')){ + foreach my $key (sort keys %customservicegrp) + { + #$customservicegrp{$key}[1]=~ s/\|/,/g; + if($customservicegrp{$key}[0] eq $fwhostsettings{'srvgrp'} && $customservicegrp{$key}[1] eq $fwhostsettings{'oldsrvrem'}) + { + #$fwhostsettings{'newsrvrem'}=~ s/,/|/g; + $customservicegrp{$key}[1]=''; + $customservicegrp{$key}[1]=$fwhostsettings{'newsrvrem'}; + } + } + &General::writehasharray("$configsrvgrp", \%customservicegrp); + $fwhostsettings{'updatesrvgrp'}='on'; + #$fwhostsettings{'newsrvrem'}=~ s/\|/,/g; + $fwhostsettings{'SRVGRP_REMARK'}=$fwhostsettings{'newsrvrem'}; + }else{ + $errormessage=$Lang::tr{'fwhost err remark'}; + $fwhostsettings{'SRVGRP_REMARK'}=$fwhostsettings{'oldsrvrem'}; + $fwhostsettings{'SRVGRP_NAME'}=$fwhostsettings{'srvgrp'}; + $fwhostsettings{'updatesrvgrp'} = 'on'; + } + $fwhostsettings{'SRVGRP_NAME'}=$fwhostsettings{'srvgrp'}; + &addservicegrp; + &viewtableservicegrp; +} ### VIEW ### if($fwhostsettings{'ACTION'} eq '') { @@ -1041,9 +1070,15 @@ sub showmenu -

+
END + + if (-f "${General::swroot}/fwhosts/reread"){ + print "$Lang::tr{'fwhost reread'}"; + } + print""; + &Header::closebox(); } @@ -1056,7 +1091,7 @@ sub addnet $fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'}; print<
- $Lang::tr{'name'}:$Lang::tr{'fwhost netaddress'}$Lang::tr{'netmask'}: + $Lang::tr{'name'}:$Lang::tr{'fwhost netaddress'}$Lang::tr{'netmask'}:
END if ($fwhostsettings{'ACTION'} eq 'editnet' || $fwhostsettings{'error'} eq 'on') @@ -1076,12 +1111,13 @@ sub addhost $fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'}; print< - $Lang::tr{'name'}:IP/MAC: + $Lang::tr{'remark'}:

$Lang::tr{'fwhost attention'}
$Lang::tr{'fwhost macwarn'}
END @@ -1108,7 +1144,8 @@ sub addgrp $checked{'check1'}{'on'} = ''; $checked{'grp2'}{$fwhostsettings{'grp2'}} = 'CHECKED'; $fwhostsettings{'oldremark'}=$fwhostsettings{'remark'}; - + my $grp=$fwhostsettings{'grp_name'}; + my $rem=$fwhostsettings{'remark'}; if ($fwhostsettings{'update'} eq ''){ print< @@ -1117,18 +1154,14 @@ sub addgrp END }else{ print< - $Lang::tr{'fwhost addgrpname'}$Lang::tr{'remark'}: -
+ +
$Lang::tr{'fwhost addgrpname'}$Lang::tr{'remark'}:
+
END - } if ($fwhostsettings{'update'} eq 'on'){ - - print<$Lang::tr{'fwhost stdnet'} # - print<

- $Lang::tr{'fwhost attention'}:
- $Lang::tr{'fwhost macwarn'}

-END + print"

$Lang::tr{'fwhost attention'}:
$Lang::tr{'fwhost macwarn'}

"; } - print< -
-
$Lang::tr{'fwhost stdnet'}$Lang::tr{'fwhost ccdnet'}
$Lang::tr{'fwhost cust net'}$Lang::tr{'fwhost ccdhost'}
$Lang::tr{'fwhost cust addr'}
-END - + print""; + print"
"; &Header::closebox(); } sub addservice @@ -1291,7 +1312,6 @@ sub addservicegrp &showmenu; &Header::openbox('100%', 'left', $Lang::tr{'fwhost newservicegrp'}); $fwhostsettings{'oldsrvgrpremark'}=$fwhostsettings{'SRVGRP_REMARK'}; - if ($fwhostsettings{'updatesrvgrp'} eq ''){ print<
@@ -1301,19 +1321,19 @@ sub addservicegrp END }else{ print< - $Lang::tr{'fwhost addgrpname'}$Lang::tr{'remark'}: -
- + + + +
$Lang::tr{'fwhost addgrpname'}$Lang::tr{'remark'}:

END } if($fwhostsettings{'updatesrvgrp'} eq 'on'){ print< +
$Lang::tr{'fwhost cust service'}
END - &Header::closebox(); } # View @@ -1348,7 +1367,7 @@ sub viewtablenet END } my $count=0; - foreach my $key (sort { uc($customnetwork{$a}[0]) cmp uc($customnetwork{$b}[0]) } keys %customnetwork) { + foreach my $key (sort {$a <=> $b} keys %customnetwork) { if ($fwhostsettings{'ACTION'} eq 'editnet' && $fwhostsettings{'HOSTNAME'} eq $customnetwork{$key}[0]) { print" "; }elsif ($count % 2) @@ -1359,7 +1378,7 @@ END print" "; } print<
$customnetwork{$key}[0]$customnetwork{$key}[1]$customnetwork{$key}[2]$customnetwork{$key}[3] x + $customnetwork{$key}[0]$customnetwork{$key}[1]$customnetwork{$key}[2]$customnetwork{$key}[3]x @@ -1391,26 +1410,28 @@ sub viewtablehost }else{ print< - $Lang::tr{'name'}$Lang::tr{'fwhost ip_mac'}$Lang::tr{'used'} + $Lang::tr{'name'}$Lang::tr{'fwhost ip_mac'}$Lang::tr{'remark'}$Lang::tr{'used'} END } my $count=0; - foreach my $key (sort { uc($customhost{$a}[0]) cmp uc($customhost{$b}[0]) } keys %customhost) { + foreach my $key (sort { uc($customhost{$a}[0]) cmp uc($customhost{$b}[0])|| $a <=> $b } keys %customhost) { if ( ($fwhostsettings{'ACTION'} eq 'edithost' || $fwhostsettings{'error'}) && $fwhostsettings{'HOSTNAME'} eq $customhost{$key}[0]) { print" "; }elsif ($count % 2){ print" ";} else{ print" ";} my ($ip,$sub)=split(/\//,$customhost{$key}[2]); + $customhost{$key}[4]=~s/\s+//g; print<$customhost{$key}[0]$customhost{$key}[2]$customhost{$key}[3] x + $customhost{$key}[0]$ip$customhost{$key}[3]$customhost{$key}[4]x + END - if($customhost{$key}[3] == '0') + if($customhost{$key}[4] == '0') { print"
"; }else{ @@ -1434,24 +1455,36 @@ sub viewtablegrp &General::readhasharray("$confignet", \%customnetwork); my @grp=(); my $helper=''; - my $count=0; + my $count=1; my $grpname; my $remark; - my $number=keys %customgrp; + my $number; + my $delflag; if (!keys %customgrp) { print "
$Lang::tr{'fwhost empty'}"; }else{ foreach my $key (sort { uc($customgrp{$a}[0]) cmp uc($customgrp{$b}[0]) } sort { uc($customgrp{$a}[2]) cmp uc($customgrp{$b}[2]) } keys %customgrp){ - $count++; if ($helper ne $customgrp{$key}[0]){ + $delflag='0'; + foreach my $key1 (sort { uc($customgrp{$a}[0]) cmp uc($customgrp{$b}[0]) } sort { uc($customgrp{$a}[2]) cmp uc($customgrp{$b}[2]) } keys %customgrp){ + if ($customgrp{$key}[0] eq $customgrp{$key1}[0]) + { + $delflag++; + } + if($delflag > 1){ + last; + } + } + $number=1; + if ($customgrp{$key}[2] eq "none"){$customgrp{$key}[2]=$Lang::tr{'fwhost empty'};} $grpname=$customgrp{$key}[0]; - $remark=$customgrp{$key}[1]; + $remark="$customgrp{$key}[1]"; if($count >=2){print"";} print "
$grpname    "; print " $Lang::tr{'remark'}:  $remark   " if ($remark ne ''); - print "$Lang::tr{'used'}: $customgrp{$key}[4] x"; + print "$Lang::tr{'used'}: $customgrp{$key}[4]x"; if($customgrp{$key}[4] == '0') { print"
"; @@ -1459,13 +1492,16 @@ sub viewtablegrp print"
"; print""; } + if ( ($fwhostsettings{'ACTION'} eq 'editgrp' || $fwhostsettings{'update'} ne '') && $fwhostsettings{'grp_name'} eq $customgrp{$key}[0]) { print" "; - }elsif ($count %2 == 0){print"";}else{print"";} + }elsif ($count %2 == 0){ + print""; + }else{ + print""; + } my $ip=&getipforgroup($customgrp{$key}[2],$customgrp{$key}[3]); if ($ip eq ''){print"";} - - print ""; @@ -1477,12 +1513,13 @@ sub viewtablegrp }else{ print""; + print""; $helper=$customgrp{$key}[0]; + $number++; } print"
Name$Lang::tr{'ip address'}$Lang::tr{'fwhost type'}
"; if($customgrp{$key}[3] eq 'Standard Network'){ print &get_name($customgrp{$key}[2])."$ip$customgrp{$key}[3]
"; } - if ($number gt '1' && $ip ne ''){ + if ($delflag > '1' && $ip ne ''){ print""; } - print"
"; @@ -1502,7 +1539,7 @@ sub viewtableservice END - foreach my $key (sort { uc($customservice{$a}[0]) cmp uc($customservice{$b}[0]) } keys %customservice) + foreach my $key (sort { uc($customservice{$a}[0]) cmp uc($customservice{$b}[0])|| $a <=> $b } keys %customservice) { $count++; if ( ($fwhostsettings{'updatesrv'} eq 'on' || $fwhostsettings{'error'}) && $fwhostsettings{'SRV_NAME'} eq $customservice{$key}[0]) { @@ -1537,21 +1574,39 @@ sub viewtableservicegrp my $grpname; my $remark; my $helper; + my $port; + my $protocol; + my $delflag; if (! -z $configsrvgrp){ - &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust srvgrp'}); &General::readhasharray("$configsrvgrp", \%customservicegrp); + &General::readhasharray("$configsrv", \%customservice); my $number= keys %customservicegrp; - foreach my $key (sort { uc($customservicegrp{$a}[0]) cmp uc($customservicegrp{$b}[0]) } keys %customservicegrp){ + foreach my $key (sort { uc($customservicegrp{$a}[0]) cmp uc($customservicegrp{$b}[0])|| $a <=> $b } keys %customservicegrp){ $count++; if ($helper ne $customservicegrp{$key}[0]){ + $delflag=0; + foreach my $key1 (sort { uc($customservicegrp{$a}[0]) cmp uc($customservicegrp{$b}[0]) } sort { uc($customservicegrp{$a}[2]) cmp uc($customservicegrp{$b}[2]) } keys %customservicegrp){ + if ($customservicegrp{$key}[0] eq $customservicegrp{$key1}[0]) + { + $delflag++; + } + if($delflag > 1){ + last; + } + } $grpname=$customservicegrp{$key}[0]; - $remark=$customservicegrp{$key}[1]; + if ($customservicegrp{$key}[2] eq "none"){ + $customservicegrp{$key}[2]=$Lang::tr{'fwhost empty'}; + $port=''; + $protocol=''; + } + $remark="$customservicegrp{$key}[1]"; if($count >=2){print"
$Lang::tr{'fwhost srv_name'}$Lang::tr{'fwhost prot'}$Lang::tr{'fwhost port'}ICMP$Lang::tr{'fwhost used'}
";} print "
$grpname     "; print "$Lang::tr{'remark'}:  $remark " if ($remark ne ''); - print "  $Lang::tr{'used'}: $customservicegrp{$key}[5] x"; - if($customservicegrp{$key}[5] == '0') + print "  $Lang::tr{'used'}: $customservicegrp{$key}[3]x"; + if($customservicegrp{$key}[3] == '0') { print"
"; } @@ -1560,14 +1615,25 @@ sub viewtableservicegrp } if( $fwhostsettings{'SRVGRP_NAME'} eq $customservicegrp{$key}[0]) { print" "; - }elsif ($count %2 == 0){print"";}else{print"";} - print "$customservicegrp{$key}[2]"; - print"$customservicegrp{$key}[3]$customservicegrp{$key}[4]
"; - if ($number gt '1'){ - print""; + }elsif ($count %2 == 0){ + print""; + }else{ + print""; + } + print "$customservicegrp{$key}[2]"; + foreach my $srv (sort keys %customservice){ + if ($customservicegrp{$key}[2] eq $customservice{$srv}[0]){ + $protocol=$customservice{$srv}[2]; + $port=$customservice{$srv}[1]; + last; } - print"
"; - $helper=$customservicegrp{$key}[0]; + } + print"$port$protocol
"; + if ($number gt '1'){ + print""; + } + print"
"; + $helper=$customservicegrp{$key}[0]; } print""; &Header::closebox(); @@ -1616,22 +1682,16 @@ sub checkservicegroup #check name - if ( ! &General::validhostname($fwhostsettings{'SRVGRP_NAME'})) + if ( ! &validhostname($fwhostsettings{'SRVGRP_NAME'})) { $errormessage.=$Lang::tr{'fwhost err name'}."
"; return $errormessage; } - #check remark - if ( ($fwhostsettings{'SRVGRP_REMARK'} ne '') && (! &validhostname($fwhostsettings{'SRVGRP_REMARK'}))) - { - $errormessage.=$Lang::tr{'fwhost err remark'}."
"; - } #check empty selectbox if (keys %customservice lt 1) { $errormessage.=$Lang::tr{'fwhost err groupempty'}."
"; } - #check if name already exists if ($fwhostsettings{'updatesrvgrp'} ne 'on'){ foreach my $key (keys %customservicegrp) { @@ -1643,14 +1703,10 @@ sub checkservicegroup } #check if service already exists in group foreach my $key (keys %customservicegrp) { - if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} && $customservicegrp{$key}[2] eq $fwhostsettings{'CUST_SRV'} ){ - $errormessage.=$Lang::tr{'fwhost err srvexist'}."
"; - - } + if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} && $customservicegrp{$key}[2] eq $fwhostsettings{'CUST_SRV'} ){ + $errormessage.=$Lang::tr{'fwhost err srvexist'}."
"; } - - - + } return $errormessage; } sub error @@ -1699,10 +1755,9 @@ sub deletefromgrp } sub plausicheck { - my $edit=shift; #check hostname - if (!&General::validhostname($fwhostsettings{'HOSTNAME'})) + if (!&validhostname($fwhostsettings{'HOSTNAME'})) { $errormessage=$errormessage.$Lang::tr{'fwhost err name'}; $fwhostsettings{'BLK_IP'}='readonly'; @@ -1710,7 +1765,6 @@ sub plausicheck if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;} } #check if name collides with CCD Netname - &General::readhasharray("$configccdnet", \%ccdnet); foreach my $key (keys %ccdnet) { if($ccdnet{$key}[0] eq $fwhostsettings{'HOSTNAME'}){ @@ -1720,7 +1774,6 @@ sub plausicheck last; } } - #check if IP collides with CCD NetIP if ($fwhostsettings{'type'} ne 'mac'){ &General::readhasharray("$configccdnet", \%ccdnet); @@ -1735,9 +1788,6 @@ sub plausicheck } } } - - - #check if name collides with CCD Hostname &General::readhasharray("$configccdhost", \%ccdhost); foreach my $key (keys %ccdhost) { @@ -1778,7 +1828,7 @@ sub plausicheck &General::readhasharray("$confighost", \%customhost); if (!&checkname(\%customhost)) { - $errormessage=$errormessage."
".$Lang::tr{'fwhost err hostexist'}; + $errormessage.="
".$Lang::tr{'fwhost err hostexist'}; $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'}; if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;} } @@ -1786,10 +1836,7 @@ sub plausicheck if (!&checkip(\%customhost,2)) { $errormessage=$errormessage."
".$Lang::tr{'fwhost err ipcheck'}; - } - - return; } sub getipforgroup @@ -1904,9 +1951,20 @@ sub getipforgroup } } sub rules +{ + if (!-f "${General::swroot}/fwhosts/reread"){ + system("touch ${General::swroot}/fwhosts/reread"); + system("touch ${General::swroot}/forward/reread"); + } +} +sub reread_rules { system ("/usr/local/bin/forwardfwctrl"); - system("rm ${General::swroot}/forward/reread"); + if ( -f "${General::swroot}/fwhosts/reread"){ + system("rm ${General::swroot}/fwhosts/reread"); + system("rm ${General::swroot}/forward/reread"); + } + } sub decrease { @@ -1966,7 +2024,7 @@ sub checkports $errormessage=$Lang::tr{'fwhost err port'}; } #check valid name - if (! &General::validhostname($fwhostsettings{'SRV_NAME'})){ + if (! &validhostname($fwhostsettings{'SRV_NAME'})){ $errormessage="
".$Lang::tr{'fwhost err name'}; } #change dashes with : @@ -2003,16 +2061,34 @@ sub validhostname if (length ($hostname) < 1 || length ($hostname) > 63) { return 0;} # Only valid characters are a-z, A-Z, 0-9 and - - if ($hostname !~ /^[a-zA-ZäöüÖÄÜ0-9-\s]*$/) { + if ($hostname !~ /^[a-zA-ZäöüÖÄÜ0-9-_.;()\/\s]*$/) { return 0;} # First character can only be a letter or a digit if (substr ($hostname, 0, 1) !~ /^[a-zA-ZöäüÖÄÜ0-9]*$/) { return 0;} # Last character can only be a letter or a digit - if (substr ($hostname, -1, 1) !~ /^[a-zA-ZöäüÖÄÜ0-9]*$/) { + if (substr ($hostname, -1, 1) !~ /^[a-zA-ZöäüÖÄÜ0-9()]*$/) { + return 0;} + return 1; +} +sub validremark +{ + # Checks a hostname against RFC1035 + my $remark = $_[0]; + # Each part should be at least two characters in length + # but no more than 63 characters + if (length ($remark) < 1 || length ($remark) > 255) { + return 0;} + # Only valid characters are a-z, A-Z, 0-9 and - + if ($remark !~ /^[a-zäöüA-ZÖÄÜ0-9-.:;\|_()\/\s]*$/) { + return 0;} + # First character can only be a letter or a digit + if (substr ($remark, 0, 1) !~ /^[a-zäöüA-ZÖÄÜ0-9]*$/) { + return 0;} + # Last character can only be a letter or a digit + if (substr ($remark, -1, 1) !~ /^[a-zöäüA-ZÖÄÜ0-9.:;_)]*$/) { return 0;} return 1; } - &Header::closebigbox(); &Header::closepage();