[Patch][GeoIP][1.0.0] GeoIP Organization / ISP support

Arnaud GRANAL serphen at gmail.com
Mon Apr 18 22:45:23 MSD 2011


On Mon, Apr 18, 2011 at 9:20 PM, Igor Sysoev <igor at sysoev.ru> wrote:
> On Mon, Apr 18, 2011 at 05:56:09PM +0300, Arnaud GRANAL wrote:
>> Igor Sysoev wrote:
>> >  There is already patch to support GeoIP ISP base:
>> >  http://kornel.neolabs.kz/files/nginx-0.9.7-geoip-isp.patch.bz2
>>
>> >  What is the difference between ISP base and Organization base ?
>>
>> Almost none, organization is more precise but API calls are the same.
>> As far I can see the code is very similar so there is no reason to use my patch.
>
> To get GeoIP_1st patch calls GeoIP_name_by_ipnum(),
> while your patch calls GeoIP_org_by_ipnum() to get organization.
> Do these capabilities exist in both bases ?
>

If you want to merge I suggest using GeoIP_name_by_ipnum() because
this can read AS database, ISP base, Organization base and Domain
base.

GeoIP_org_by_ipnum() is the old function of GeoIP, this is the one
used by the official example:


>From GeoIP official API:
http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.7.tar.gz

GeoIP-1.4.7\apps\geoiplookup.c
		else if (GEOIP_ORG_EDITION == i || GEOIP_ISP_EDITION == i) {
			org = GeoIP_org_by_ipnum(gi, ipnum);
==
		if (GEOIP_DOMAIN_EDITION == i) {
			domain_name = GeoIP_name_by_ipnum(gi, ipnum);


However, GeoIP.h states that GeoIP_org_by_ipnum is deprecated, but
paradoxally there are still recommending it in code examples.

I didn't see official code using GeoIP_name_by_ipnum for ISP but it
seems to be ok.


In:
 static char *
 ngx_http_geoip_city(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)

should add (for cleanup)

+    if (gcf->organization) {
+        GeoIP_delete(gcf->organization);
+    }
+

A.



More information about the nginx-devel mailing list