From 9aadc465a3ca39abdd571bd6ce2d7c1f114e3823 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Fri, 12 Jun 2020 19:46:24 +0200 Subject: [PATCH] fwhosts.cgi: Rework code to use location-functions.pl Signed-off-by: Stefan Schantl --- html/cgi-bin/fwhosts.cgi | 236 +++++++++++++++++++-------------------- 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi index 7315e79b67..c41e2a0038 100644 --- a/html/cgi-bin/fwhosts.cgi +++ b/html/cgi-bin/fwhosts.cgi @@ -28,7 +28,7 @@ use CGI::Carp 'fatalsToBrowser'; no warnings 'uninitialized'; require '/var/ipfire/general-functions.pl'; require '/var/ipfire/network-functions.pl'; -require "/var/ipfire/geoip-functions.pl"; +require "/var/ipfire/location-functions.pl"; require "/usr/lib/firewall/firewall-lib.pl"; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; @@ -39,7 +39,7 @@ my %customhost=(); my %customgrp=(); my %customservice=(); my %customservicegrp=(); -my %customgeoipgrp=(); +my %customlocationgrp=(); my %ccdnet=(); my %ccdhost=(); my %ipsecconf=(); @@ -67,7 +67,7 @@ my $configccdhost = "${General::swroot}/ovpn/ovpnconfig"; my $configipsec = "${General::swroot}/vpn/config"; my $configsrv = "${General::swroot}/fwhosts/customservices"; my $configsrvgrp = "${General::swroot}/fwhosts/customservicegrp"; -my $configgeoipgrp = "${General::swroot}/fwhosts/customgeoipgrp"; +my $configlocationgrp = "${General::swroot}/fwhosts/customlocationgrp"; my $fwconfigfwd = "${General::swroot}/firewall/config"; my $fwconfiginp = "${General::swroot}/firewall/input"; my $fwconfigout = "${General::swroot}/firewall/outgoing"; @@ -80,7 +80,7 @@ unless (-e $confighost) { system("touch $confighost"); } unless (-e $configgrp) { system("touch $configgrp"); } unless (-e $configsrv) { system("touch $configsrv"); } unless (-e $configsrvgrp) { system("touch $configsrvgrp"); } -unless (-e $configgeoipgrp) { system("touch $configgeoipgrp"); } +unless (-e $configlocationgrp) { system("touch $configlocationgrp"); } &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); @@ -680,7 +680,7 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'savegeoipgrp') +if ($fwhostsettings{'ACTION'} eq 'savelocationgrp') { my $grp=$fwhostsettings{'grp_name'}; my $rem=$fwhostsettings{'remark'}; @@ -688,7 +688,7 @@ if ($fwhostsettings{'ACTION'} eq 'savegeoipgrp') my $type; my @target; my @newgrp; - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); + &General::readhasharray("$configlocationgrp", \%customlocationgrp); &General::readhasharray("$fwconfigfwd", \%fwfwd); &General::readhasharray("$fwconfiginp", \%fwinp); &General::readhasharray("$fwconfigout", \%fwout); @@ -705,12 +705,12 @@ if ($fwhostsettings{'ACTION'} eq 'savegeoipgrp') if ($fwhostsettings{'update'} eq 'on'){ @target=$fwhostsettings{'COUNTRY_CODE'}; - $type='GeoIP Group'; + $type='Location Group'; #check if host/net exists in grp my $test="$grp,$fwhostsettings{'oldremark'},@target"; - foreach my $key (keys %customgeoipgrp) { - my $test1="$customgeoipgrp{$key}[0],$customgeoipgrp{$key}[1],$customgeoipgrp{$key}[2]"; + foreach my $key (keys %customlocationgrp) { + my $test1="$customlocationgrp{$key}[0],$customlocationgrp{$key}[1],$customlocationgrp{$key}[2]"; if ($test1 eq $test){ $errormessage=$Lang::tr{'fwhost err isingrp'}; $fwhostsettings{'update'} = 'on'; @@ -725,41 +725,41 @@ if ($fwhostsettings{'ACTION'} eq 'savegeoipgrp') @target="none"; } #on update, we have to delete the dummy entry - foreach my $key (keys %customgeoipgrp){ - if ($customgeoipgrp{$key}[0] eq $grp && $customgeoipgrp{$key}[2] eq "none"){ - delete $customgeoipgrp{$key}; + foreach my $key (keys %customlocationgrp){ + if ($customlocationgrp{$key}[0] eq $grp && $customlocationgrp{$key}[2] eq "none"){ + delete $customlocationgrp{$key}; last; } } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp); - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); + &General::writehasharray("$configlocationgrp", \%customlocationgrp); + &General::readhasharray("$configlocationgrp", \%customlocationgrp); #create array with new lines foreach my $line (@target){ push (@newgrp,"$grp,$rem,$line"); } #append new entries - my $key = &General::findhasharraykey (\%customgeoipgrp); + my $key = &General::findhasharraykey (\%customlocationgrp); foreach my $line (@newgrp){ - foreach my $i (0 .. 3) { $customgeoipgrp{$key}[$i] = "";} + foreach my $i (0 .. 3) { $customlocationgrp{$key}[$i] = "";} my ($a,$b,$c,$d) = split (",",$line); - $customgeoipgrp{$key}[0] = $a; - $customgeoipgrp{$key}[1] = $b; - $customgeoipgrp{$key}[2] = $c; - $customgeoipgrp{$key}[3] = $type; + $customlocationgrp{$key}[0] = $a; + $customlocationgrp{$key}[1] = $b; + $customlocationgrp{$key}[2] = $c; + $customlocationgrp{$key}[3] = $type; } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp); + &General::writehasharray("$configlocationgrp", \%customlocationgrp); #update counter in Host/Net $fwhostsettings{'update'}='on'; } #check if ruleupdate is needed - my $geoipgrpcount=0; - $geoipgrpcount=&getgeoipcount($grp); - if($geoipgrpcount > 0 ) + my $locationgrpcount=0; + $locationgrpcount=&getlocationcount($grp); + if($locationgrpcount > 0 ) { &General::firewall_config_changed(); } - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq 'saveservice') { @@ -888,11 +888,11 @@ if ($fwhostsettings{'ACTION'} eq 'editgrp') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'editgeoipgrp') +if ($fwhostsettings{'ACTION'} eq 'editlocationgrp') { $fwhostsettings{'update'}='on'; - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq 'editservice') { @@ -926,7 +926,7 @@ if ($fwhostsettings{'ACTION'} eq 'resetgrp') $fwhostsettings{'remark'} =""; &showmenu; } -if ($fwhostsettings{'ACTION'} eq 'resetgeoipgrp') +if ($fwhostsettings{'ACTION'} eq 'resetlocationgrp') { $fwhostsettings{'grp_name'} =""; $fwhostsettings{'remark'} =""; @@ -989,35 +989,35 @@ if ($fwhostsettings{'ACTION'} eq 'deletegrphost') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'deletegeoipgrpentry') +if ($fwhostsettings{'ACTION'} eq 'deletelocationgrpentry') { my $grpremark; my $grpname; - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); - foreach my $key (keys %customgeoipgrp){ - if($customgeoipgrp{$key}[0].",".$customgeoipgrp{$key}[1].",".$customgeoipgrp{$key}[2].",".$customgeoipgrp{$key}[3] eq $fwhostsettings{'delentry'}){ - $grpname=$customgeoipgrp{$key}[0]; - $grpremark=$customgeoipgrp{$key}[1]; + &General::readhasharray("$configlocationgrp", \%customlocationgrp); + foreach my $key (keys %customlocationgrp){ + if($customlocationgrp{$key}[0].",".$customlocationgrp{$key}[1].",".$customlocationgrp{$key}[2].",".$customlocationgrp{$key}[3] eq $fwhostsettings{'delentry'}){ + $grpname=$customlocationgrp{$key}[0]; + $grpremark=$customlocationgrp{$key}[1]; #check if we delete the last entry, then generate dummy if ($fwhostsettings{'last'} eq 'on'){ - $customgeoipgrp{$key}[1] = ''; - $customgeoipgrp{$key}[2] = 'none'; - $customgeoipgrp{$key}[3] = ''; + $customlocationgrp{$key}[1] = ''; + $customlocationgrp{$key}[2] = 'none'; + $customlocationgrp{$key}[3] = ''; $fwhostsettings{'last'}=''; last; }else{ - delete $customgeoipgrp{$key}; + delete $customlocationgrp{$key}; } } } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp); + &General::writehasharray("$configlocationgrp", \%customlocationgrp); &General::firewall_config_changed(); if ($fwhostsettings{'update'} eq 'on'){ $fwhostsettings{'remark'}= $grpremark; $fwhostsettings{'grp_name'}=$grpname; } - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq 'delgrp') @@ -1036,21 +1036,21 @@ if ($fwhostsettings{'ACTION'} eq 'delgrp') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'delgeoipgrp') +if ($fwhostsettings{'ACTION'} eq 'dellocationgrp') { - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); + &General::readhasharray("$configlocationgrp", \%customlocationgrp); &decrease($fwhostsettings{'grp_name'}); - foreach my $key (sort keys %customgeoipgrp) + foreach my $key (sort keys %customlocationgrp) { - if($customgeoipgrp{$key}[0] eq $fwhostsettings{'grp_name'}) + if($customlocationgrp{$key}[0] eq $fwhostsettings{'grp_name'}) { - delete $customgeoipgrp{$key}; + delete $customlocationgrp{$key}; } } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp); + &General::writehasharray("$configlocationgrp", \%customlocationgrp); $fwhostsettings{'grp_name'}=''; - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq 'delservice') { @@ -1126,10 +1126,10 @@ if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newgrp'}) &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newgeoipgrp'}) +if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newlocationgrp'}) { - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newservice'}) { @@ -1165,19 +1165,19 @@ if ($fwhostsettings{'ACTION'} eq 'changegrpremark') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'changegeoipgrpremark') +if ($fwhostsettings{'ACTION'} eq 'changelocationgrpremark') { - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); + &General::readhasharray("$configlocationgrp", \%customlocationgrp); if ($fwhostsettings{'oldrem'} ne $fwhostsettings{'newrem'} && (&validremark($fwhostsettings{'newrem'}) || $fwhostsettings{'newrem'} eq '')){ - foreach my $key (sort keys %customgeoipgrp) + foreach my $key (sort keys %customlocationgrp) { - if($customgeoipgrp{$key}[0] eq $fwhostsettings{'grp'} && $customgeoipgrp{$key}[1] eq $fwhostsettings{'oldrem'}) + if($customlocationgrp{$key}[0] eq $fwhostsettings{'grp'} && $customlocationgrp{$key}[1] eq $fwhostsettings{'oldrem'}) { - $customgeoipgrp{$key}[1]=''; - $customgeoipgrp{$key}[1]=$fwhostsettings{'newrem'}; + $customlocationgrp{$key}[1]=''; + $customlocationgrp{$key}[1]=$fwhostsettings{'newrem'}; } } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp); + &General::writehasharray("$configlocationgrp", \%customlocationgrp); $fwhostsettings{'update'}='on'; $fwhostsettings{'remark'}=$fwhostsettings{'newrem'}; }else{ @@ -1187,8 +1187,8 @@ if ($fwhostsettings{'ACTION'} eq 'changegeoipgrpremark') $fwhostsettings{'update'} = 'on'; } $fwhostsettings{'grp_name'}=$fwhostsettings{'grp'}; - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } if ($fwhostsettings{'ACTION'} eq 'changesrvgrpremark') { @@ -1265,9 +1265,9 @@ if ($fwhostsettings{'ACTION'} eq 'changegrpname') &addgrp; &viewtablegrp; } -if ($fwhostsettings{'ACTION'} eq 'changegeoipgrpname') +if ($fwhostsettings{'ACTION'} eq 'changelocationgrpname') { - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp ); + &General::readhasharray("$configlocationgrp", \%customlocationgrp ); if ($fwhostsettings{'oldgrpname'} ne $fwhostsettings{'grp'}){ #Check new groupname if (!&validhostname($fwhostsettings{'grp'})){ @@ -1275,19 +1275,19 @@ if ($fwhostsettings{'ACTION'} eq 'changegeoipgrpname') } if (!$errormessage){ # Rename group. - foreach my $key (keys %customgeoipgrp) { - if($customgeoipgrp{$key}[0] eq $fwhostsettings{'oldgrpname'}){ - $customgeoipgrp{$key}[0]=$fwhostsettings{'grp'}; + foreach my $key (keys %customlocationgrp) { + if($customlocationgrp{$key}[0] eq $fwhostsettings{'oldgrpname'}){ + $customlocationgrp{$key}[0]=$fwhostsettings{'grp'}; } } - &General::writehasharray("$configgeoipgrp", \%customgeoipgrp ); + &General::writehasharray("$configlocationgrp", \%customlocationgrp ); #change name in FW Rules - &changenameinfw($fwhostsettings{'oldgrpname'},$fwhostsettings{'grp'},4,"geoip"); - &changenameinfw($fwhostsettings{'oldgrpname'},$fwhostsettings{'grp'},6,"geoip"); + &changenameinfw($fwhostsettings{'oldgrpname'},$fwhostsettings{'grp'},4,"location"); + &changenameinfw($fwhostsettings{'oldgrpname'},$fwhostsettings{'grp'},6,"location"); } } - &addgeoipgrp; - &viewtablegeoipgrp; + &addlocationgrp; + &viewtablelocationgrp; } ### VIEW ### if($fwhostsettings{'ACTION'} eq '') @@ -1300,7 +1300,7 @@ sub showmenu { print "$Lang::tr{'fwhost welcome'}"; print<
- +
END @@ -1588,12 +1588,12 @@ END print"
"; &Header::closebox(); } -sub addgeoipgrp +sub addlocationgrp { &hint; &error; &showmenu; - &Header::openbox('100%', 'left', $Lang::tr{'fwhost addgeoipgrp'}); + &Header::openbox('100%', 'left', $Lang::tr{'fwhost addlocationgrp'}); my %checked=(); my $show=''; @@ -1629,7 +1629,7 @@ END - + @@ -1642,7 +1642,7 @@ END - + @@ -1650,7 +1650,7 @@ END END } if ($fwhostsettings{'update'} eq 'on') { - my @geoip_locations = &fwlib::get_geoip_locations(); + my @location_locations = &fwlib::get_location_locations(); print< @@ -1662,9 +1662,9 @@ END - +
- +
@@ -2154,15 +2154,15 @@ sub viewtablegrp } } -sub viewtablegeoipgrp +sub viewtablelocationgrp { # If our filesize is "zero" there is nothing to read-in. - if (-z "$configgeoipgrp") { + if (-z "$configlocationgrp") { return; } - &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust geoipgrp'}); - &General::readhasharray("$configgeoipgrp", \%customgeoipgrp); + &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust locationgrp'}); + &General::readhasharray("$configlocationgrp", \%customlocationgrp); &General::readhasharray("$fwconfigfwd", \%fwfwd); &General::readhasharray("$fwconfiginp", \%fwinp); &General::readhasharray("$fwconfigout", \%fwout); @@ -2178,15 +2178,15 @@ sub viewtablegeoipgrp my %hash; # If there are no groups we are finished here. - if (!keys %customgeoipgrp) { + if (!keys %customlocationgrp) { print "
$Lang::tr{'fwhost err emptytable'}"; return; } # Put all groups in a hash. - foreach my $key (sort { ncmp($customgeoipgrp{$a}[0],$customgeoipgrp{$b}[0]) } - sort { ncmp($customgeoipgrp{$a}[2],$customgeoipgrp{$b}[2]) } keys %customgeoipgrp) { - push (@counter,$customgeoipgrp{$key}[0]); + foreach my $key (sort { ncmp($customlocationgrp{$a}[0],$customlocationgrp{$b}[0]) } + sort { ncmp($customlocationgrp{$a}[2],$customlocationgrp{$b}[2]) } keys %customlocationgrp) { + push (@counter,$customlocationgrp{$key}[0]); } # Increase current used key. @@ -2195,16 +2195,16 @@ sub viewtablegeoipgrp } # Sort hash. - foreach my $key (sort { ncmp($customgeoipgrp{$a}[0],$customgeoipgrp{$b}[0]) } - sort { ncmp($customgeoipgrp{$a}[2],$customgeoipgrp{$b}[2]) } keys %customgeoipgrp) { + foreach my $key (sort { ncmp($customlocationgrp{$a}[0],$customlocationgrp{$b}[0]) } + sort { ncmp($customlocationgrp{$a}[2],$customlocationgrp{$b}[2]) } keys %customlocationgrp) { $count++; - if ($helper ne $customgeoipgrp{$key}[0]) { + if ($helper ne $customlocationgrp{$key}[0]) { $delflag='0'; - foreach my $key1 (sort { ncmp($customgeoipgrp{$a}[0],$customgeoipgrp{$b}[0]) } - sort { ncmp($customgeoipgrp{$a}[2],$customgeoipgrp{$b}[2]) } keys %customgeoipgrp) { + foreach my $key1 (sort { ncmp($customlocationgrp{$a}[0],$customlocationgrp{$b}[0]) } + sort { ncmp($customlocationgrp{$a}[2],$customlocationgrp{$b}[2]) } keys %customlocationgrp) { - if ($customgeoipgrp{$key}[0] eq $customgeoipgrp{$key1}[0]) + if ($customlocationgrp{$key}[0] eq $customlocationgrp{$key1}[0]) { $delflag++; } @@ -2216,13 +2216,13 @@ sub viewtablegeoipgrp $number=1; # Groupname. - $grpname=$customgeoipgrp{$key}[0]; + $grpname=$customlocationgrp{$key}[0]; # Group remark. - $remark="$customgeoipgrp{$key}[1]"; + $remark="$customlocationgrp{$key}[1]"; # Country code. - $country_code="$customgeoipgrp{$key}[2]"; + $country_code="$customlocationgrp{$key}[2]"; if ($count gt 1){ print""; @@ -2234,15 +2234,15 @@ sub viewtablegeoipgrp print "$Lang::tr{'remark'}:  $remark  \n" if ($remark ne ''); # Get group count. - my $geoipgrpcount=&getgeoipcount($grpname); - print "$Lang::tr{'used'}: $geoipgrpcount x"; + my $locationgrpcount=&getlocationcount($grpname); + print "$Lang::tr{'used'}: $locationgrpcount x"; # Only display delete icon, if the group is not used by a firewall rule. - if($geoipgrpcount == '0') { + if($locationgrpcount == '0') { print"
\n"; print"\n"; print"\n"; - print"\n"; + print"\n"; print"
"; } @@ -2252,7 +2252,7 @@ print < - + @@ -2285,8 +2285,8 @@ END } else { # Check if we are currently editing a group and assign column backgound colors. my $col=''; - if ( ($fwhostsettings{'ACTION'} eq 'editgeoipgrp' || $fwhostsettings{'update'} ne '') - && $fwhostsettings{'grp_name'} eq $customgeoipgrp{$key}[0]) { + if ( ($fwhostsettings{'ACTION'} eq 'editlocationgrp' || $fwhostsettings{'update'} ne '') + && $fwhostsettings{'grp_name'} eq $customlocationgrp{$key}[0]) { $col="bgcolor='${Header::colouryellow}'"; } elsif ($count %2 == 0){ $col="bgcolor='$color{'color20'}'"; @@ -2295,12 +2295,12 @@ END } # Get country flag. - my $icon = &GeoIP::get_flag_icon($customgeoipgrp{$key}[2]); + my $icon = &Location::Functions::get_flag_icon($customlocationgrp{$key}[2]); # Print column with flag icon. my $col_content; if ($icon) { - $col_content = "$customgeoipgrp{$key}[2]"; + $col_content = "$customlocationgrp{$key}[2]"; } else { $col_content = "N/A"; } @@ -2308,10 +2308,10 @@ END print "\n"; # Print column with country code. - print "\n"; + print "\n"; # Print column with full country name. - my $country_name = &GeoIP::get_full_country_name($customgeoipgrp{$key}[2]); + my $country_name = &Location::Functions::get_full_country_name($customlocationgrp{$key}[2]); print "\n"; # Generate from for removing entries from a group. @@ -2322,21 +2322,21 @@ END # Check if this group only has a single entry. foreach my $key2 (keys %hash) { - if ($hash{$key2}<2 && $key2 eq $customgeoipgrp{$key}[0]){ + if ($hash{$key2}<2 && $key2 eq $customlocationgrp{$key}[0]){ print "" ; } } } - print "\n"; + print "\n"; print "\n"; - print "\n"; + print "\n"; print "\n"; print "\n"; print "\n"; } - $helper=$customgeoipgrp{$key}[0]; + $helper=$customlocationgrp{$key}[0]; $number++; } @@ -2688,12 +2688,12 @@ sub gethostcount } return $srvcounter; } -sub getgeoipcount +sub getlocationcount { my $groupname=shift; my $counter=0; - # GeoIP groups are stored as "group:groupname" in the + # Location groups are stored as "group:groupname" in the # firewall settings files. my $searchstring = join(':', "group",$groupname); @@ -3079,7 +3079,7 @@ sub changenameinfw my $fld=shift; my $type=shift; - if ($type eq 'geoip'){ + if ($type eq 'location'){ $old="group:$old"; $new="group:$new"; } -- 2.39.2
$col_content$customgeoipgrp{$key}[2]$customlocationgrp{$key}[2]$country_name