From 54e98604f72c9bacaf8565f6d986ee11fd9f01a1 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Fri, 21 Apr 2017 22:11:17 +0300 Subject: [PATCH] geoipbackend: Support city databases in region lookup City database contains region information as well. Fixes #5255 and #4122 --- modules/geoipbackend/geoipbackend.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/geoipbackend/geoipbackend.cc b/modules/geoipbackend/geoipbackend.cc index b26f2249e8..799c6d4423 100644 --- a/modules/geoipbackend/geoipbackend.cc +++ b/modules/geoipbackend/geoipbackend.cc @@ -576,6 +576,14 @@ bool GeoIPBackend::queryRegion(string &ret, GeoIPLookup* gl, const string &ip, c ret = valueOrEmpty(gir->region); return true; } + } else if (gi.first == GEOIP_CITY_EDITION_REV0 || + gi.first == GEOIP_CITY_EDITION_REV1) { + GeoIPRecord *gir = GeoIP_record_by_addr(gi.second.get(), ip.c_str()); + if (gir) { + ret = valueOrEmpty(gir->region); + gl->netmask = gir->netmask; + return true; + } } return false; } @@ -588,6 +596,14 @@ bool GeoIPBackend::queryRegionV6(string &ret, GeoIPLookup* gl, const string &ip, ret = valueOrEmpty(gir->region); return true; } + } else if (gi.first == GEOIP_CITY_EDITION_REV0_V6 || + gi.first == GEOIP_CITY_EDITION_REV1_V6) { + GeoIPRecord *gir = GeoIP_record_by_addr_v6(gi.second.get(), ip.c_str()); + if (gir) { + ret = valueOrEmpty(gir->region); + gl->netmask = gir->netmask; + return true; + } } return false; } -- 2.47.2