4.0.0 Feb 20, 2023
3.0.1 Feb 20, 2023

#27 in #data-provider

30 downloads per month
Used in geolocate_bin

MIT license

29KB
647 lines

Geolocate

Geolocate is a CLI app to fetch geolocation data from various providers. Currently, we support (ip2location)https://www.ip2location.com/ and (ipgeolocation)https://ipgeolocation.io/. If you'd like others to be supported, you're welcome to create an issue.

Installation

Geolocate compiles on stable. There are multiple ways to install it:

Usage

You should start with getting some API tokens for at least one of the supported providers. Both (ip2location)https://www.ip2location.com/ and (ipgeolocation)https://ipgeolocation.io/ have a free tier. You can save them with geolocate config --edit. This command will open the configuration file with you favourite editor where you will have to add the tokens. IMPORTANT: The key of the token has to be name of the provider. For example:

ip2location = "yourtokengoeshere"
ipgeolocation = "yourothertokengoeshere"

If you don't do this, geolocate will not recognise them and won't be very useful. Be sure you write correct toml data, but

A subcommand exists for each provider. For example, to fetch geo data for an IP address of 1.2.3.4 from the ipgeolocation provider, you would run the following:

geolocate ipgeolocation --addrs 1.2.3.4

Multiple IP addresses may be passed delimited with spaces:

geolocate ipgeolocation --addrs 1.2.3.4 1.2.3.4 1.2.3.4

In each case you get a JSON array response.

Geolocate can also read a file that contains IP addresses. There are some rules:

  • each IP address has to be delimited by a new line
  • they must be correct IP addresses

In the latter case, if the IP address format is wrong, you will get an error with the number of the line where the incorrect IP address is. The first incorrect IP address will make geolocate exit.

The IP addresses may be IPv4 or IPv6. Geolocate will accept either so long they're correct, but makes no guarantees that the provider accepts them.

Dependencies

~8–22MB
~322K SLoC