示例#1
0
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);
}
示例#2
0
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;
}
示例#3
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));
}
示例#4
0
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;
}