mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-05-11 01:38:25 +02:00
geoip-functions.pl: Add functions to export locations and to flush them.
The export_locations() function requires an array of country codes which should be exported by the location-exporter script. The flush_exported_locations() function is used to flush (delete) all exported location files. Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
This commit is contained in:
@@ -186,5 +186,53 @@ sub get_geoip_locations() {
|
|||||||
return @sorted_locations;
|
return @sorted_locations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to flush all exported GeoIP locations.
|
||||||
|
sub flush_exported_locations () {
|
||||||
|
# Check if the xt_geoip_db_directory exists.
|
||||||
|
if (-e $xt_geoip_db_directory) {
|
||||||
|
# Perform a direcory listing.
|
||||||
|
opendir (DIR, $xt_geoip_db_directory) or die "Could not open $xt_geoip_db_directory. $!\n";
|
||||||
|
|
||||||
|
# Loop through the files.
|
||||||
|
while (my $file = readdir(DIR)) {
|
||||||
|
# Check if the element is a file.
|
||||||
|
if (-f "$xt_geoip_db_directory/$file") {
|
||||||
|
# Delete it.
|
||||||
|
unlink("$xt_geoip_db_directory/$file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function which calls location-exporter to export a given array
|
||||||
|
# of locations.
|
||||||
|
sub export_locations (\@) {
|
||||||
|
my @locations = @{ shift() };
|
||||||
|
|
||||||
|
# String to store the given locations and pass it to the exporter tool.
|
||||||
|
my $locations_string;
|
||||||
|
|
||||||
|
# Only export IPv4 addresses.
|
||||||
|
my $family = "--family=ipv4";
|
||||||
|
|
||||||
|
# Specify xt_geoip as output format.
|
||||||
|
my $format = "--format=xt_geoip";
|
||||||
|
|
||||||
|
# Location export command.
|
||||||
|
my @command = ("/usr/bin/location-exporter", "--directory=$xt_geoip_db_directory", "$format", "$family");
|
||||||
|
|
||||||
|
# Check if the export directory exists, otherwise create it.
|
||||||
|
unless (-d $xt_geoip_db_directory) { mkdir $xt_geoip_db_directory };
|
||||||
|
|
||||||
|
# Loop through the array of locations which needs to be exported.
|
||||||
|
foreach my $location (@locations) {
|
||||||
|
# Add location to the command array.
|
||||||
|
push(@command, $location);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execute location-exporter to export the requested country codes.
|
||||||
|
system(@command) == 0
|
||||||
|
or die "@command failed: $?";
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user