diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:22:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:22:53 +0000 |
commit | 3b149631f0eb732049e04fa0c89d09c7aa2376f9 (patch) | |
tree | 7049356b06fcdcdaf9dbae476f55a43942e7c25f /README.md | |
parent | Initial commit. (diff) | |
download | geoip-upstream.tar.xz geoip-upstream.zip |
Adding upstream version 1.6.12.upstream/1.6.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..debdfb1 --- /dev/null +++ b/README.md @@ -0,0 +1,248 @@ +# GeoIP Legacy C Library # + +## Important Note ## + +This library is for the GeoIP Legacy format (dat). To read the MaxMind DB +format (mmdb) used by GeoIP2, please see +[libmaxminddb](https://github.com/maxmind/libmaxminddb). + +## Description ## + +The GeoIP Legacy C library enables the user to find geographical and network +information of an IP address. To use this library, you may download our free +GeoLite Legacy Country or City databases. These are updated at the beginning +of every month. The latest versions are available at: + +https://dev.maxmind.com/geoip/legacy/geolite + +We also offer commercial GeoIP Legacy databases with greater accuracy and +additional network information. For more details, see: + +https://www.maxmind.com/en/geolocation_landing + +If you use GeoIP Legacy to block access from high risk countries, you may wish +to use our proxy detection service to block access from known proxy servers to +reduce fraud and abuse. For more details, see: + +https://www.maxmind.com/en/proxy + +## IP Geolocation Usage ## + +IP geolocation is inherently imprecise. Locations are often near the center of +the population. Any location provided by a GeoIP database should not be used to +identify a particular address or household. + +## Installation ## + +### On Ubuntu Using PPA ### + +MaxMind provides a PPA for recent version of Ubuntu. To add the PPA to your +APT sources, run: + + $ sudo add-apt-repository ppa:maxmind/ppa + +Then install the packages by running: + + $ sudo apt update + $ sudo apt install libgeoip1 libgeoip-dev geoip-bin + +### From Source on Unix/Linux ### + +To install, run: + +``` +./configure +make +make check +make install +``` + +If you are using a GitHub checkout, please run the `bootstrap` script first +to set up the build environment. + +The GeoIP Legacy C library relies on GNU make, not on BSD make + +### From Source with Visual Studio (nmake) ### + +To make a static GeoIP.lib, edit the top level Makefile.vc to reflect where +the GeoIP.dat database file should be placed, as well as the locations of the +lib, include, and bin directories for installation. + +To build and install, issue the following commands from a developer console: + +``` +nmake /f Makefile.vc +nmake /f Makefile.vc test +nmake /f Makefile.vc install +``` + +### From Source with MinGW ### + +``` +./configure +make +cp data/GeoIP.dat test/ +make check +``` + +Note that GeoIP.dat file should be placed in the same place as GeoIP-enabled +executable modules. + +## Memory Caching and Other Options ## + +There are five options available: + +* `GEOIP_STANDARD` - Read database from file system. This uses the least + memory. +* `GEOIP_MEMORY_CACHE` - Load database into memory. Provides faster + performance but uses more memory. +* `GEOIP_CHECK_CACHE` - Check for updated database. If database has been + updated, reload file handle and/or memory cache. +* `GEOIP_INDEX_CACHE` - Cache only the the most frequently accessed index + portion of the database, resulting in faster lookups than `GEOIP_STANDARD`, + but less memory usage than `GEOIP_MEMORY_CACHE`. This is useful for larger + databases such as GeoIP Legacy Organization and GeoIP Legacy City. Note: for + GeoIP Legacy Country, Region and Netspeed databases, `GEOIP_INDEX_CACHE` is + equivalent to `GEOIP_MEMORY_CACHE`. +* `GEOIP_MMAP_CACHE` - Load database into mmap shared memory. MMAP is not + available for 32bit Windows. +* `GEOIP_SILENCE` - Disables diagnostic messages to stderr in the library; + error conditions are detectable via the return values. + +These options can be combined using bit operators. For example you can +use both `GEOIP_MEMORY_CACHE` and `GEOIP_CHECK_CACHE by calling`: + +```c +GeoIP_open("/path/to/GeoIP.dat", GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE); +``` + +By default, the city name is returned in the ISO-8859-1 charset. To obtain +the city name in UTF-8 instead, run: + +```c +GeoIP_set_charset(gi, GEOIP_CHARSET_UTF8); +``` + +To get the netmask of the netblock of the last lookup, use +`GeoIP_last_netmask(gi)`. + +## Examples ## + +See the following files for examples of how to use the API: + +``` +test/ + test-geoip.c + test-geoip-region.c + test-geoip-city.c + test-geoip-isp.c + test-geoip-org.c + test-geoip-netspeed.c +``` + +The test-geoip.c program works with both the GeoLite Legacy and GeoIP Legacy +Country databases. The test-geoip-city.c program works with both the GeoLite +Legacy and GeoIP Legacy City databases. The other example programs require the +paid databases available (https://www.maxmind.com/en/geolocation_landing). + +## Troubleshooting ## + +### Autotool Issues ### +In case of trouble building from source with libtool or autotools, update +the generated configuration files by running: + +``` +./bootstrap +``` +or + +``` +autoreconf -vfi +``` +or +``` +aclocal && autoconf && automake --add-missing +``` + +### Threads + +Lookups are thread safe, but libGeoIP does not guard the functions. Do not +drop or change the GeoIP database if other threads might be using the +database. + +The recommended pattern is: + +1. open database with GEOIP_MEMORY_CACHE +2. create_threads(your_thread_entry_function) +3. use the database +4. join_threads +5. close database + +### Thread Safety on Windows ### + +The Windows build is not thread-safe in STANDARD mode because the `pread` is +not thread-safe. + +### Other Build Issues ### + +If you run into trouble building your application with GeoIP Legacy support, +try adding `-fms-extensions` to your `CFLAGS`. If you use Solaris and the +default C compiler, use `-features=extensions` instead. These options enable +unnamed union support to fix problems like: `improper member use: dma_code` or +`'GeoIPRecord' has no member named 'dma_code'`. + +Note that it is recommended that you use GNU make. Also, if you are using +OpenBSD, this library requires OpenBSD 3.1 or greater. + +If you get a "cannot load shared object file: No such file or directory" +error, add the directory `libGeoIP.so` was installed to the `/etc/ld.so.conf` +file and run `ldconfig`. + +#### Solaris #### + +On Solaris, if you get a `ld: fatal: relocations remain against allocatable +but non-writable sections`, try running: + +``` +make clean +./configure --disable-shared +make +``` + +If you get a `ar : command not found` error, make sure that `ar` is in your +path. On Solaris, `ar` is typically found in `/usr/ccs/bin` + + +#### AIX #### + +If you get a `passing argument 3 of 'gethostbyname_r' from incompatible +pointer type` error on AIX, untar a fresh copy of this library and delete the +following two lines from `./configure`: + +``` +#define HAVE_GETHOSTBYNAME_R 1 + +#define GETHOSTBYNAME_R_RETURNS_INT 1 +``` + +then save the configure script and build it as usual: + +``` +./configure +make +sudo make install +``` + +## Bug Tracker ## + +Please report all issues with this code using the +[GitHub issue tracker](https://github.com/maxmind/geoip-api-c/issues). + +If you are having an issue with a MaxMind database that is not specific to +this API, please +[contact MaxMind support](https://www.maxmind.com/en/support). + +## Contributing ## + +To contribute, please submit a pull request on +[GitHub](https://github.com/maxmind/geoip-api-c/). |