Exemple #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);
}
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;
}
Exemple #3
0
static PyObject * GeoIP_last_netmask_Py(PyObject *self, PyObject * args) {
  GeoIP_GeoIPObject* GeoIP = (GeoIP_GeoIPObject*)self;
  return Py_BuildValue("i", GeoIP_last_netmask(GeoIP->gi) );
}