version 1.59, 2024/03/05 16:06:32 |
version 1.60, 2024/03/16 02:00:31 |
|
|
#define WHOIS_PORT "whois" |
#define WHOIS_PORT "whois" |
#define WHOIS_SERVER_ID "Registrar WHOIS Server:" |
#define WHOIS_SERVER_ID "Registrar WHOIS Server:" |
|
|
#define WHOIS_RECURSE 0x01 |
#define WHOIS_RECURSE 0x01 |
#define WHOIS_QUICK 0x02 |
#define WHOIS_QUICK 0x02 |
|
#define WHOIS_SPAM_ME 0x04 |
|
|
|
#define CHOPSPAM ">>> Last update of WHOIS database:" |
|
|
const char *port_whois = WHOIS_PORT; |
const char *port_whois = WHOIS_PORT; |
const char *ip_whois[] = { LNICHOST, RNICHOST, PNICHOST, BNICHOST, |
const char *ip_whois[] = { LNICHOST, RNICHOST, PNICHOST, BNICHOST, |
AFNICHOST, NULL }; |
AFNICHOST, NULL }; |
|
|
|
|
country = host = NULL; |
country = host = NULL; |
flags = rval = 0; |
flags = rval = 0; |
while ((ch = getopt(argc, argv, "aAc:dgh:iIlmp:PqQrR")) != -1) |
while ((ch = getopt(argc, argv, "aAc:dgh:iIlmp:PqQrRS")) != -1) |
switch (ch) { |
switch (ch) { |
case 'a': |
case 'a': |
host = ANICHOST; |
host = ANICHOST; |
|
|
case 'R': |
case 'R': |
host = RUNICHOST; |
host = RUNICHOST; |
break; |
break; |
|
case 'S': |
|
flags |= WHOIS_SPAM_ME; |
|
break; |
default: |
default: |
usage(); |
usage(); |
} |
} |
|
|
return (1); |
return (1); |
} |
} |
|
|
if (strcmp(server, "whois.denic.de") == 0 || |
if (!(flags & WHOIS_SPAM_ME) && |
strcmp(server, "de" QNICHOST_TAIL) == 0) |
(strcmp(server, "whois.denic.de") == 0 || |
|
strcmp(server, "de" QNICHOST_TAIL) == 0)) |
fmt = "-T dn,ace -C ISO-8859-1 %s\r\n"; |
fmt = "-T dn,ace -C ISO-8859-1 %s\r\n"; |
else if (strcmp(server, "whois.dk-hostmaster.dk") == 0 || |
else if (!(flags & WHOIS_SPAM_ME) && |
strcmp(server, "dk" QNICHOST_TAIL) == 0) |
(strcmp(server, "whois.dk-hostmaster.dk") == 0 || |
|
strcmp(server, "dk" QNICHOST_TAIL) == 0)) |
fmt = "--show-handles %s\r\n"; |
fmt = "--show-handles %s\r\n"; |
else |
else |
fmt = "%s\r\n"; |
fmt = "%s\r\n"; |
|
|
fflush(fp); |
fflush(fp); |
nhost = NULL; |
nhost = NULL; |
while ((buf = fgetln(fp, &len)) != NULL) { |
while ((buf = fgetln(fp, &len)) != NULL) { |
|
/* Nominet */ |
|
if (!(flags & WHOIS_SPAM_ME) && |
|
len == 5 && strncmp(buf, "-- \r\n", 5) == 0) |
|
break; |
|
|
p = buf + len - 1; |
p = buf + len - 1; |
if (isspace((unsigned char)*p)) { |
if (isspace((unsigned char)*p)) { |
do |
do |
|
|
} |
} |
puts(buf); |
puts(buf); |
|
|
if (nhost != NULL || !(flags & WHOIS_RECURSE)) |
if (nhost == NULL && (flags & WHOIS_RECURSE)) { |
continue; |
if ((p = strstr(buf, WHOIS_SERVER_ID))) { |
|
p += sizeof(WHOIS_SERVER_ID) - 1; |
if ((p = strstr(buf, WHOIS_SERVER_ID))) { |
while (isblank((unsigned char)*p)) |
p += sizeof(WHOIS_SERVER_ID) - 1; |
p++; |
while (isblank((unsigned char)*p)) |
if ((len = strcspn(p, " \t\n\r"))) { |
p++; |
if ((nhost = malloc(len + 1)) == NULL) |
if ((len = strcspn(p, " \t\n\r"))) { |
err(1, "malloc"); |
if ((nhost = malloc(len + 1)) == NULL) |
memcpy(nhost, p, len); |
err(1, "malloc"); |
nhost[len] = '\0'; |
memcpy(nhost, p, len); |
|
nhost[len] = '\0'; |
|
} |
|
} else if (strcmp(server, ANICHOST) == 0) { |
|
for (p = buf; *p != '\0'; p++) |
|
*p = tolower((unsigned char)*p); |
|
for (i = 0; ip_whois[i] != NULL; i++) { |
|
if (strstr(buf, ip_whois[i]) != NULL) { |
|
nhost = strdup(ip_whois[i]); |
|
if (nhost == NULL) |
|
err(1, "strdup"); |
|
break; |
|
} |
} |
|
} else if (strcmp(server, ANICHOST) == 0) { |
|
for (p = buf; *p != '\0'; p++) |
|
*p = tolower((unsigned char)*p); |
|
for (i = 0; ip_whois[i] != NULL; i++) { |
|
if (strstr(buf, ip_whois[i]) != NULL) { |
|
nhost = strdup(ip_whois[i]); |
|
if (nhost == NULL) |
|
err(1, "strdup"); |
|
break; |
|
} |
|
} |
} |
} |
|
} |
|
|
|
/* Verisign etc. */ |
|
if (!(flags & WHOIS_SPAM_ME) && |
|
len >= sizeof(CHOPSPAM)-1 && |
|
(strncasecmp(buf, CHOPSPAM, sizeof(CHOPSPAM)-1) == 0 || |
|
strncasecmp(buf, &CHOPSPAM[4], sizeof(CHOPSPAM)-5) == 0)) { |
|
printf("\n"); |
|
break; |
} |
} |
} |
} |
fclose(fp); |
fclose(fp); |