net.i2p.router.transport
Class GeoIP

java.lang.Object
  extended by net.i2p.router.transport.GeoIP

public class GeoIP
extends Object

Manage geoip lookup in a file with the Tor geoip format. The lookup is expensive, so a lookup is queued with add(). The actual lookup of multiple IPs is fired with lookup(). To get a country for an IP, use get() which returns a lower-case, generally two-letter country code or null. Everything here uses longs, since Java is signed-only, the file is sorted by unsigned, and we don't store the table in memory (unlike in Blocklist.java, where it's in-memory so we want to be space-efficient)

Author:
zzz

Field Summary
(package private) static String COUNTRY_FILE_DEFAULT
           
static String GEOIP_DIR_DEFAULT
           
(package private) static String GEOIP_FILE_DEFAULT
           
static String PROP_GEOIP_DIR
           
(package private) static String PROP_GEOIP_ENABLED
           
static String PROP_IP_COUNTRY
           
 
Constructor Summary
GeoIP(I2PAppContext context)
           
 
Method Summary
 void add(byte[] ip)
          Add to the list needing lookup
 void add(String ip)
          Add to the list needing lookup
 void blockingLookup()
          Blocking lookup of all pending IPs.
 String fullName(String code)
          Get the country for a country code
 String get(byte[] ip)
          Get the country for an IP from the cache.
 String get(String ip)
          Get the country for an IP from the cache.
 void shutdown()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROP_GEOIP_ENABLED

static final String PROP_GEOIP_ENABLED
See Also:
Constant Field Values

PROP_GEOIP_DIR

public static final String PROP_GEOIP_DIR
See Also:
Constant Field Values

GEOIP_DIR_DEFAULT

public static final String GEOIP_DIR_DEFAULT
See Also:
Constant Field Values

GEOIP_FILE_DEFAULT

static final String GEOIP_FILE_DEFAULT
See Also:
Constant Field Values

COUNTRY_FILE_DEFAULT

static final String COUNTRY_FILE_DEFAULT
See Also:
Constant Field Values

PROP_IP_COUNTRY

public static final String PROP_IP_COUNTRY
See Also:
Constant Field Values
Constructor Detail

GeoIP

public GeoIP(I2PAppContext context)
Parameters:
context - RouterContext in production, I2PAppContext for testing only
Method Detail

shutdown

public void shutdown()
Since:
0.9.3

blockingLookup

public void blockingLookup()
Blocking lookup of all pending IPs. Results will be added to the table and available via get() after completion.


add

public void add(String ip)
Add to the list needing lookup

Parameters:
ip - IPv4 or IPv6

add

public void add(byte[] ip)
Add to the list needing lookup

Parameters:
ip - IPv4 or IPv6

get

public String get(String ip)
Get the country for an IP from the cache.

Parameters:
ip - IPv4 or IPv6
Returns:
lower-case code, generally two letters, or null.

get

public String get(byte[] ip)
Get the country for an IP from the cache.

Parameters:
ip - IPv4 or IPv6
Returns:
lower-case code, generally two letters, or null.

fullName

public String fullName(String code)
Get the country for a country code

Parameters:
code - two-letter lower case code
Returns:
untranslated name or null