if ("$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'}"
eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27]"){
$errormessage.=$Lang::tr{'fwdfw err ruleexists'};
- $fwdfwsettings{'nosave'} = 'on';
+ if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+ $errormessage='';
+ }
+ if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
+ $fwdfwsettings{'nosave'} = 'on';
+ }
}
}
}
if ("$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'}"
eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[17],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27]"){
$errormessage.=$Lang::tr{'fwdfw err ruleexists'};
- $fwdfwsettings{'nosave'} = 'on';
+ if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+ $errormessage='';
+ }
+ if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
+ $fwdfwsettings{'nosave'} = 'on';
+ }
}
}
}
$fwdfwsettings{'oldgrp3a'}=$fwdfwsettings{'grp3'};
$fwdfwsettings{'oldgrp3b'}=$fwdfwsettings{$fwdfwsettings{'grp3'}};
$fwdfwsettings{'oldusesrv'}=$fwdfwsettings{'USESRV'};
+ $fwdfwsettings{'oldruleremark'}=$fwdfwsettings{'ruleremark'};
}else{
$fwdfwsettings{'ACTIVE'}='ON';
$checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}} = 'CHECKED';
$$hash{$key}[27] = $fwdfwsettings{'TIME_TO'};
&General::writehasharray("$config", $hash);
}else{
- #ruleposition check
- if($fwdfwsettings{'oldrulenumber'} gt $fwdfwsettings{'rulepos'}){
- my %tmp=();
- my $val=$fwdfwsettings{'oldrulenumber'}-$fwdfwsettings{'rulepos'};
- for ($a=0;$a<$val;$a++){
- $fwdfwsettings{'oldrulenumber'}=$fwdfwsettings{'oldrulenumber'}-$a;
- foreach my $key (sort {$a <=> $b} keys %$hash){
- if ($key eq $fwdfwsettings{'oldrulenumber'}) {
- my $last = $key -1;
- if (exists $$hash{$last}){
- #save rule last
- foreach my $y (0 .. $#{$$hash{$last}}) {
- $tmp{0}[$y] = $$hash{$last}[$y];
- }
- #copy active rule to last
- foreach my $i (0 .. $#{$$hash{$last}}) {
- $$hash{$last}[$i] = $$hash{$key}[$i];
- }
- #copy saved rule to actual position
- foreach my $x (0 .. $#{$tmp{0}}) {
- $$hash{$key}[$x] = $tmp{0}[$x];
- }
+ foreach my $key (sort {$a <=> $b} keys %$hash){
+ if($key eq $fwdfwsettings{'key'}){
+ $$hash{$key}[0] = $fwdfwsettings{'RULE_ACTION'};
+ $$hash{$key}[1] = $fwdfwsettings{'chain'};
+ $$hash{$key}[2] = $fwdfwsettings{'ACTIVE'};
+ $$hash{$key}[3] = $fwdfwsettings{'grp1'};
+ $$hash{$key}[4] = $fwdfwsettings{$fwdfwsettings{'grp1'}};
+ $$hash{$key}[5] = $fwdfwsettings{'grp2'};
+ $$hash{$key}[6] = $fwdfwsettings{$fwdfwsettings{'grp2'}};
+ $$hash{$key}[7] = $fwdfwsettings{'USE_SRC_PORT'};
+ $$hash{$key}[8] = $fwdfwsettings{'PROT'};
+ $$hash{$key}[9] = $fwdfwsettings{'ICMP_TYPES'};
+ $$hash{$key}[10] = $fwdfwsettings{'SRC_PORT'};
+ $$hash{$key}[11] = $fwdfwsettings{'USESRV'};
+ $$hash{$key}[12] = $fwdfwsettings{'TGT_PROT'};
+ $$hash{$key}[13] = $fwdfwsettings{'ICMP_TGT'};
+ $$hash{$key}[14] = $fwdfwsettings{'grp3'};
+ $$hash{$key}[15] = $fwdfwsettings{$fwdfwsettings{'grp3'}};
+ $$hash{$key}[16] = $fwdfwsettings{'ruleremark'};
+ $$hash{$key}[17] = $fwdfwsettings{'LOG'};
+ $$hash{$key}[18] = $fwdfwsettings{'TIME'};
+ $$hash{$key}[19] = $fwdfwsettings{'TIME_MON'};
+ $$hash{$key}[20] = $fwdfwsettings{'TIME_TUE'};
+ $$hash{$key}[21] = $fwdfwsettings{'TIME_WED'};
+ $$hash{$key}[22] = $fwdfwsettings{'TIME_THU'};
+ $$hash{$key}[23] = $fwdfwsettings{'TIME_FRI'};
+ $$hash{$key}[24] = $fwdfwsettings{'TIME_SAT'};
+ $$hash{$key}[25] = $fwdfwsettings{'TIME_SUN'};
+ $$hash{$key}[26] = $fwdfwsettings{'TIME_FROM'};
+ $$hash{$key}[27] = $fwdfwsettings{'TIME_TO'};
+ last;
+ }
+ }
+ }
+ &General::writehasharray("$config", $hash);
+ if($fwdfwsettings{'oldrulenumber'} gt $fwdfwsettings{'rulepos'}){
+ my %tmp=();
+ my $val=$fwdfwsettings{'oldrulenumber'}-$fwdfwsettings{'rulepos'};
+ for (my $z=0;$z<$val;$z++){
+ foreach my $key (sort {$a <=> $b} keys %$hash){
+ if ($key eq $fwdfwsettings{'oldrulenumber'}) {
+ my $last = $key -1;
+ if (exists $$hash{$last}){
+ #save rule last
+ foreach my $y (0 .. $#{$$hash{$last}}) {
+ $tmp{0}[$y] = $$hash{$last}[$y];
+ }
+ #copy active rule to last
+ foreach my $i (0 .. $#{$$hash{$last}}) {
+ $$hash{$last}[$i] = $$hash{$key}[$i];
+ }
+ #copy saved rule to actual position
+ foreach my $x (0 .. $#{$tmp{0}}) {
+ $$hash{$key}[$x] = $tmp{0}[$x];
}
}
}
}
- &General::writehasharray("$config", $hash);
- &rules;
- }elsif($fwdfwsettings{'rulepos'} gt $fwdfwsettings{'oldrulenumber'}){
- my %tmp=();
- my $val=$fwdfwsettings{'rulepos'}-$fwdfwsettings{'oldrulenumber'};
- for ($a=0;$a<$val;$a++){
- $fwdfwsettings{'oldrulenumber'}=$fwdfwsettings{'oldrulenumber'}+$a;
+ $fwdfwsettings{'oldrulenumber'}--;
+ }
+ &General::writehasharray("$config", $hash);
+ &rules;
+ }elsif($fwdfwsettings{'rulepos'} gt $fwdfwsettings{'oldrulenumber'}){
+ my %tmp=();
+ my $val=$fwdfwsettings{'rulepos'}-$fwdfwsettings{'oldrulenumber'};
+ for (my $z=0;$z<$val;$z++){
foreach my $key (sort {$a <=> $b} keys %$hash){
- if ($key eq $fwdfwsettings{'oldrulenumber'}) {
- my $next = $key + 1;
- if (exists $$hash{$next}){
- #save rule next
- foreach my $y (0 .. $#{$$hash{$next}}) {
- $tmp{0}[$y] = $$hash{$next}[$y];
- }
- #copy active rule to next
- foreach my $i (0 .. $#{$$hash{$next}}) {
- $$hash{$next}[$i] = $$hash{$key}[$i];
- }
- #copy saved rule to actual position
- foreach my $x (0 .. $#{$tmp{0}}) {
- $$hash{$key}[$x] = $tmp{0}[$x];
- }
+ if ($key eq $fwdfwsettings{'oldrulenumber'}) {
+ my $next = $key + 1;
+ if (exists $$hash{$next}){
+ #save rule next
+ foreach my $y (0 .. $#{$$hash{$next}}) {
+ $tmp{0}[$y] = $$hash{$next}[$y];
+ }
+ #copy active rule to next
+ foreach my $i (0 .. $#{$$hash{$next}}) {
+ $$hash{$next}[$i] = $$hash{$key}[$i];
+ }
+ #copy saved rule to actual position
+ foreach my $x (0 .. $#{$tmp{0}}) {
+ $$hash{$key}[$x] = $tmp{0}[$x];
}
}
}
}
- &General::writehasharray("$config", $hash);
- &rules;
- }else{
- foreach my $key (sort {$a <=> $b} keys %$hash){
- if($key eq $fwdfwsettings{'key'}){
- $$hash{$key}[0] = $fwdfwsettings{'RULE_ACTION'};
- $$hash{$key}[1] = $fwdfwsettings{'chain'};
- $$hash{$key}[2] = $fwdfwsettings{'ACTIVE'};
- $$hash{$key}[3] = $fwdfwsettings{'grp1'};
- $$hash{$key}[4] = $fwdfwsettings{$fwdfwsettings{'grp1'}};
- $$hash{$key}[5] = $fwdfwsettings{'grp2'};
- $$hash{$key}[6] = $fwdfwsettings{$fwdfwsettings{'grp2'}};
- $$hash{$key}[7] = $fwdfwsettings{'USE_SRC_PORT'};
- $$hash{$key}[8] = $fwdfwsettings{'PROT'};
- $$hash{$key}[9] = $fwdfwsettings{'ICMP_TYPES'};
- $$hash{$key}[10] = $fwdfwsettings{'SRC_PORT'};
- $$hash{$key}[11] = $fwdfwsettings{'USESRV'};
- $$hash{$key}[12] = $fwdfwsettings{'TGT_PROT'};
- $$hash{$key}[13] = $fwdfwsettings{'ICMP_TGT'};
- $$hash{$key}[14] = $fwdfwsettings{'grp3'};
- $$hash{$key}[15] = $fwdfwsettings{$fwdfwsettings{'grp3'}};
- $$hash{$key}[16] = $fwdfwsettings{'ruleremark'};
- $$hash{$key}[17] = $fwdfwsettings{'LOG'};
- $$hash{$key}[18] = $fwdfwsettings{'TIME'};
- $$hash{$key}[19] = $fwdfwsettings{'TIME_MON'};
- $$hash{$key}[20] = $fwdfwsettings{'TIME_TUE'};
- $$hash{$key}[21] = $fwdfwsettings{'TIME_WED'};
- $$hash{$key}[22] = $fwdfwsettings{'TIME_THU'};
- $$hash{$key}[23] = $fwdfwsettings{'TIME_FRI'};
- $$hash{$key}[24] = $fwdfwsettings{'TIME_SAT'};
- $$hash{$key}[25] = $fwdfwsettings{'TIME_SUN'};
- $$hash{$key}[26] = $fwdfwsettings{'TIME_FROM'};
- $$hash{$key}[27] = $fwdfwsettings{'TIME_TO'};
- last;
- }
- }
+ $fwdfwsettings{'oldrulenumber'}++;
}
&General::writehasharray("$config", $hash);
+ &rules;
}
}
}