Allows to pass IPv6 in interactive mode (always returns None for now)
This commit is contained in:
parent
57fce2afe2
commit
501875ae2b
|
@ -27,9 +27,9 @@
|
||||||
|
|
||||||
const char *gengetopt_args_info_purpose = "Convert an IP to country code";
|
const char *gengetopt_args_info_purpose = "Convert an IP to country code";
|
||||||
|
|
||||||
const char *gengetopt_args_info_usage = "Usage: ip_to_geo --ip <ipv4>|--daemon [--port <port>] [--bind-ip <ip>]";
|
const char *gengetopt_args_info_usage = "Usage: ip_to_geo --ip <ip>|--daemon [--port <port>] [--bind-ip <ip>]";
|
||||||
|
|
||||||
const char *gengetopt_args_info_description = "Convert an IP to country code. Currently, onyl IPv4 supported";
|
const char *gengetopt_args_info_description = "Convert an IP to country code.";
|
||||||
|
|
||||||
const char *gengetopt_args_info_help[] = {
|
const char *gengetopt_args_info_help[] = {
|
||||||
" -h, --help Print help and exit",
|
" -h, --help Print help and exit",
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package "ip_to_geo"
|
package "ip_to_geo"
|
||||||
version "0.1"
|
version "0.1"
|
||||||
purpose "Convert an IP to country code"
|
purpose "Convert an IP to country code"
|
||||||
usage "ip_to_geo --ip <ipv4>|--daemon [--port <port>] [--bind-ip <ip>]"
|
usage "ip_to_geo --ip <ip>|--daemon [--port <port>] [--bind-ip <ip>]"
|
||||||
description "Convert an IP to country code. Currently, onyl IPv4 supported"
|
description "Convert an IP to country code."
|
||||||
|
|
||||||
section "Interactive mode"
|
section "Interactive mode"
|
||||||
option "ip" i "IP to convert" typestr="ip" string optional
|
option "ip" i "IP to convert" typestr="ip" string optional
|
||||||
|
|
|
@ -86,43 +86,26 @@ const uint8_t* get_country_code(const uint8_t* idx)
|
||||||
return country_codes[*idx];
|
return country_codes[*idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* int strip_to_int(char* strip_, uint32_t* ip) */
|
|
||||||
/* { */
|
|
||||||
/* char* saveptr = NULL; */
|
|
||||||
/* char* cur; */
|
|
||||||
/* int i; */
|
|
||||||
/* char* strip = strdup(strip_); */
|
|
||||||
|
|
||||||
/* *ip = 0; */
|
|
||||||
|
|
||||||
/* for(i=3; i>=0; i--) */
|
|
||||||
/* { */
|
|
||||||
/* cur = strtok_r(strip, ".", &saveptr); */
|
|
||||||
/* if (!cur) goto end; */
|
|
||||||
/* *ip += atoi(cur) << (8*i); */
|
|
||||||
/* strip = NULL; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
/* cur = strtok_r(strip, ".", &saveptr); */
|
|
||||||
/* end: */
|
|
||||||
/* free(strip); */
|
|
||||||
/* return (cur)?-1:0; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
int interactive(struct gengetopt_args_info* params)
|
int interactive(struct gengetopt_args_info* params)
|
||||||
{
|
{
|
||||||
|
uint8_t ip[16];
|
||||||
const uint8_t* cc;
|
const uint8_t* cc;
|
||||||
int ret;
|
int ret, ip_size=4;
|
||||||
|
|
||||||
ret = inet_addr(params->ip_arg);
|
ret = inet_pton(AF_INET, params->ip_arg, ip);
|
||||||
if (ret == INADDR_NONE)
|
if (ret != 1)
|
||||||
|
{
|
||||||
|
ip_size = 16;
|
||||||
|
ret = inet_pton(AF_INET6, params->ip_arg, ip);
|
||||||
|
if (ret != 1)
|
||||||
{
|
{
|
||||||
if (!params->quiet_flag)
|
if (!params->quiet_flag)
|
||||||
fprintf(stderr, "Invalid IP %s\n", params->ip_arg);
|
fprintf(stderr, "Invalid IP %s\n", params->ip_arg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cc = ip_to_geo((uint8_t*)&ret, 4);
|
cc = ip_to_geo((uint8_t*)&ret, ip_size);
|
||||||
|
|
||||||
if (params->quiet_flag)
|
if (params->quiet_flag)
|
||||||
printf("%s\n", (cc)?(char*)get_country_code(cc):"<none>");
|
printf("%s\n", (cc)?(char*)get_country_code(cc):"<none>");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user