void _say_range_by_ip(GeoIP * gi, uint32_t ipnum ) { unsigned long last_nm, mask, low, hi; char ipaddr[16]; char tmp[16]; char ** range; if (info_flag == 0) { return; /* noop unless extra information is requested */ } range = GeoIP_range_by_ip( gi, __num_to_addr_r( ipnum, ipaddr ) ); if (range == NULL) { return; } printf( " ipaddr: %s\n", ipaddr ); printf( " range_by_ip: %s - %s\n", range[0], range[1] ); last_nm = GeoIP_last_netmask(gi); mask = 0xffffffff << ( 32 - last_nm ); low = ipnum & mask; hi = low + ( 0xffffffff & ~mask ); printf( " network: %s - %s ::%ld\n", __num_to_addr_r( low, ipaddr ), __num_to_addr_r( hi, tmp ), last_nm ); printf( " ipnum: %u\n", ipnum ); printf( " range_by_num: %lu - %lu\n", __addr_to_num( range[0]), __addr_to_num(range[1]) ); printf( " network num: %lu - %lu ::%lu\n", low, hi, last_nm ); GeoIP_range_by_ip_delete(range); }
int main(int argc, char *argv[]) { FILE *f; GeoIP *gi; GeoIPRecord *gir; int generate = 0; char host[50]; const char *time_zone = NULL; char **ret; if (argc == 2) { if (!strcmp(argv[1], "gen")) { generate = 1; } } gi = GeoIP_open("../data/GeoIPCity.dat", GEOIP_INDEX_CACHE); if (gi == NULL) { fprintf(stderr, "Error opening database\n"); exit(1); } f = fopen("city_test.txt", "r"); if (f == NULL) { fprintf(stderr, "Error opening city_test.txt\n"); exit(1); } while (fscanf(f, "%s", host) != EOF) { gir = GeoIP_record_by_name(gi, (const char *)host); if (gir != NULL) { ret = GeoIP_range_by_ip(gi, (const char *)host); time_zone = GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region); printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%d\t%s\t%s\t%s\n", host, _mk_NA(gir->country_code), _mk_NA(gir->region), _mk_NA(GeoIP_region_name_by_code (gir->country_code, gir->region)), _mk_NA(gir->city), _mk_NA(gir->postal_code), gir->latitude, gir->longitude, gir->metro_code, gir->area_code, _mk_NA(time_zone), ret[0], ret[1]); GeoIP_range_by_ip_delete(ret); GeoIPRecord_delete(gir); } } GeoIP_delete(gi); fclose(f); return 0; }
void geoip_pv_reset(str *name) { sr_geoip_record_t *gr = NULL; gr = sr_geoip_get_record(name); if(gr==NULL) return; if(gr->range!=NULL) GeoIP_range_by_ip_delete(gr->range); if(gr->record!=NULL) GeoIPRecord_delete(gr->record); memset(gr, 0, sizeof(struct _sr_geoip_record)); }
int main(int argc, char *argv[]) { FILE *f; GeoIP *gi; char *domain; char host[50]; char **ret; gi = GeoIP_open("../data/GeoIPDomain.dat", GEOIP_INDEX_CACHE); if (gi == NULL) { fprintf(stderr, "Error opening database\n"); exit(1); } f = fopen("domain_test.txt", "r"); if (f == NULL) { fprintf(stderr, "Error opening domain_test.txt\n"); exit(1); } printf("IP\tdomain\tnetmask\tbeginIp\tendIp\n"); while (fscanf(f, "%s", host) != EOF) { domain = GeoIP_name_by_name(gi, (const char *)host); if (domain != NULL) { ret = GeoIP_range_by_ip(gi, (const char *)host); printf("%s\t%s\t%d\t%s\t%s\n", host, _mk_NA(domain), GeoIP_last_netmask(gi), ret[0], ret[1]); GeoIP_range_by_ip_delete(ret); free(domain); } } fclose(f); GeoIP_delete(gi); return 0; }