- my $location_id;
- my $country_code;
-
- # Check if the given address is valid.
- unless(&Network::check_ip_address($address)) {
- return;
- }
-
- # Open the address database.
- open(ADDRESS, "$geoip_database_dir/$address_ipv4_database") or die "Could not open $geoip_database_dir/$address_ipv4_database. $!\n";
-
- # Loop through the file.
- while(my $line = <ADDRESS>) {
- # Remove newlines.
- chomp($line);
-
- # Split the line content.
- my ($network, $geoname_id, $registered_country_geoname_id, $represented_country_geoname_id, $is_anonymous_proxy, $is_satellite_provider) = split(/\,/, $line);
-
- # Check if the given address is part of the current processed network.
- if (&Network::ip_address_in_network($address, $network)) {
- # Store the geoname_id for this address.
- $location_id = $geoname_id;
-
- # Break loop.
- last;
- }
- }
-
- # Return nothing if no location_id could be found.
- return unless($location_id);
-
- # Close filehandle.
- close(ADDRESS);
-
- # Open the location database.
- open(LOCATION, "$geoip_database_dir/$location_database") or die "Could not open $geoip_database_dir/$location_database. $!\n";
-
- # Loop through the file.
- while(my $line = <LOCATION>) {
- # Remove newlines.
- chomp($line);
-
- # Split the line content.
- my ($geoname_id, $locale_code, $continent_code, $continent_name, $country_iso_code, $country_name, $is_in_european_union) = split(/\,/, $line);