Commit 46902fdd by Mark Teodoro

Added support for IPv6 ASN and City editions

parent 6fafe9a1
...@@ -126,9 +126,11 @@ class GeoIP(GeoIPBase): ...@@ -126,9 +126,11 @@ class GeoIP(GeoIPBase):
* REGION_EDITION_REV1 * REGION_EDITION_REV1
* CITY_EDITION_REV0 * CITY_EDITION_REV0
* CITY_EDITION_REV1 * CITY_EDITION_REV1
* CITY_EDITION_REV1_V6
* ORG_EDITION * ORG_EDITION
* ISP_EDITION * ISP_EDITION
* ASNUM_EDITION * ASNUM_EDITION
* ASNUM_EDITION_V6
""" """
self._databaseType = const.COUNTRY_EDITION self._databaseType = const.COUNTRY_EDITION
...@@ -167,9 +169,11 @@ class GeoIP(GeoIPBase): ...@@ -167,9 +169,11 @@ class GeoIP(GeoIPBase):
elif self._databaseType in (const.CITY_EDITION_REV0, elif self._databaseType in (const.CITY_EDITION_REV0,
const.CITY_EDITION_REV1, const.CITY_EDITION_REV1,
const.CITY_EDITION_REV1_V6,
const.ORG_EDITION, const.ORG_EDITION,
const.ISP_EDITION, const.ISP_EDITION,
const.ASNUM_EDITION): const.ASNUM_EDITION,
const.ASNUM_EDITION_V6):
self._databaseSegments = 0 self._databaseSegments = 0
buf = self._filehandle.read(const.SEGMENT_RECORD_LENGTH) buf = self._filehandle.read(const.SEGMENT_RECORD_LENGTH)
...@@ -378,7 +382,7 @@ class GeoIP(GeoIPBase): ...@@ -378,7 +382,7 @@ class GeoIP(GeoIPBase):
record['latitude'] = (latitude / 10000.0) - 180.0 record['latitude'] = (latitude / 10000.0) - 180.0
record['longitude'] = (longitude / 10000.0) - 180.0 record['longitude'] = (longitude / 10000.0) - 180.0
if self._databaseType == const.CITY_EDITION_REV1: if self._databaseType in (const.CITY_EDITION_REV1, const.CITY_EDITION_REV1_V6):
dmaarea_combo = 0 dmaarea_combo = 0
if record['country_code'] == 'US': if record['country_code'] == 'US':
for j in range(3): for j in range(3):
...@@ -525,7 +529,7 @@ class GeoIP(GeoIPBase): ...@@ -525,7 +529,7 @@ class GeoIP(GeoIPBase):
if not ipnum: if not ipnum:
raise ValueError('Invalid IP address') raise ValueError('Invalid IP address')
valid = (const.ORG_EDITION, const.ISP_EDITION, const.ASNUM_EDITION) valid = (const.ORG_EDITION, const.ISP_EDITION, const.ASNUM_EDITION, const.ASNUM_EDITION_V6)
if self._databaseType not in valid: if self._databaseType not in valid:
message = 'Invalid database type, expected Org, ISP or ASNum' message = 'Invalid database type, expected Org, ISP or ASNum'
raise GeoIPError(message) raise GeoIPError(message)
......
...@@ -402,16 +402,18 @@ REGION_EDITION_REV0 = 7 ...@@ -402,16 +402,18 @@ REGION_EDITION_REV0 = 7
REGION_EDITION_REV1 = 3 REGION_EDITION_REV1 = 3
CITY_EDITION_REV0 = 6 CITY_EDITION_REV0 = 6
CITY_EDITION_REV1 = 2 CITY_EDITION_REV1 = 2
CITY_EDITION_REV1_V6 = 30
ORG_EDITION = 5 ORG_EDITION = 5
ISP_EDITION = 4 ISP_EDITION = 4
ASNUM_EDITION = 9 ASNUM_EDITION = 9
ASNUM_EDITION_V6 = 21
# Not yet supported databases # Not yet supported databases
PROXY_EDITION = 8 PROXY_EDITION = 8
NETSPEED_EDITION = 11 NETSPEED_EDITION = 11
# Collection of databases # Collection of databases
IPV6_EDITIONS = (COUNTRY_EDITION_V6,) IPV6_EDITIONS = (COUNTRY_EDITION_V6, ASNUM_EDITION_V6, CITY_EDITION_REV1_V6)
CITY_EDITIONS = (CITY_EDITION_REV0, CITY_EDITION_REV1) CITY_EDITIONS = (CITY_EDITION_REV0, CITY_EDITION_REV1, CITY_EDITION_REV1_V6)
REGION_EDITIONS = (REGION_EDITION_REV0, REGION_EDITION_REV1) REGION_EDITIONS = (REGION_EDITION_REV0, REGION_EDITION_REV1)
REGION_CITY_EDITIONS = REGION_EDITIONS + CITY_EDITIONS REGION_CITY_EDITIONS = REGION_EDITIONS + CITY_EDITIONS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment