Table of Contents
List of Examples
path
parameterresid
parametergeoip2_match
usagegeoip2.reload
usageTable of Contents
This module allows real-time queries against the Max Mind GeoIP2 database to be performed from the config script.
The Max Mind GeoIP2 database is a map of IP network address assignments to geographical locales that can be useful -- though approximate -- in identifying the physical location with which an IP host address is associated on a relatively granular level.
This database itself can be obtained on a free or commercial basis from http://dev.maxmind.com/geoip/. The library libmaxminddb that interfaces with the Max Mind API, as well as scripts to automate downloading of the on-disk version are available at http://dev.maxmind.com/geoip/geoip2/downloadable/.
This module exports a new class of pseudo-variables - $gip2(pvc=>key) - to enable access to the results of a query to the database.
Many queries can be done and store results in different containers to be able to use in parallel. Database is loaded at startup in cache. The cache can be reloaded with an RPC command. In this case make sure that you do not overwrite the file in place, but replace it, e.g. with a “move” command.
Path to the GeoIP2 database file.
Default value is “null”.
Example 1.1. Set path
parameter
... modparam("geoip2", "path", "/usr/local/share/GeoIP/GeoLite2-City.mmdb") ...
Preregister result container id during initialization, enabling the use of the module in KEMI scripts. In native Kamailio.cfg file, registration is done when parsing config and finding variables.
Default value is “” (empty).
Example 1.2. Set resid
parameter
... modparam("geoip2", "resid", "src") ... if(geoip2_match("$si", "src")) { ... } ...
Match ipaddr against the GeoIP database and set the pvc container. The function has to be called before accessing a key via: $gip2(pvc=>key). At least one function needs to be present that access the pvc container, otherwise this function will not work.
Example 1.3. geoip2_match
usage
... if(geoip2_match("$si", "src")) xlog("SIP message from: $gip2(src=>cc)\n"); ...
$gip2(pvc=>key) - pvc is an identifier for this query result; it is designated by the second parameter of geoip2_match(). The key can be one of the following:
cc - country code
tz - time zone
zip - postal code
lat - latitude
lon - longitude
nmask - network mask (CIDR format)
city - city
regc - region
regn - region name
metro - metro code
contc - continent code
Exported pseudo-variables are documented at https://www.kamailio.org/wikidocs/.