Imported Debian version 4.7.23

This commit is contained in:
Marco d'Itri 2007-09-13 03:28:21 +02:00
parent b62995f670
commit c3c46b20b8
13 changed files with 117 additions and 18 deletions

View File

@ -28,7 +28,8 @@ PERL := perl
all: whois #pos
whois: whois.c whois.h config.h data.h as_del.h ip_del.h ip6_del.h tld_serv.h
whois: whois.c whois.h config.h data.h \
as_del.h as32_del.h ip_del.h ip6_del.h tld_serv.h
$(CC) $(CFLAGS) $(whois_CFLAGS) $(OPTS) whois.c -o whois \
$(LDFLAGS) $(whois_LDADD)
@ -37,16 +38,19 @@ mkpasswd: mkpasswd.c
$(LDFLAGS) $(mkpasswd_LDADD)
as_del.h: as_del_list make_as_del.pl
$(PERL) -w make_as_del.pl < as_del_list > as_del.h
$(PERL) -w make_as_del.pl < as_del_list > $@
as32_del.h: as32_del_list make_as32_del.pl
$(PERL) -w make_as32_del.pl < as32_del_list > $@
ip_del.h: ip_del_list make_ip_del.pl
$(PERL) -w make_ip_del.pl < ip_del_list > ip_del.h
$(PERL) -w make_ip_del.pl < ip_del_list > $@
ip6_del.h: ip6_del_list make_ip6_del.pl
$(PERL) -w make_ip6_del.pl < ip6_del_list > ip6_del.h
$(PERL) -w make_ip6_del.pl < ip6_del_list > $@
tld_serv.h: tld_serv_list make_tld_serv.pl
$(PERL) -w make_tld_serv.pl < tld_serv_list > tld_serv.h
$(PERL) -w make_tld_serv.pl < tld_serv_list > $@
install: whois
install -m 0755 whois $(BASEDIR)$(prefix)/bin/

4
README
View File

@ -25,8 +25,8 @@ Other information sources:
- http://www.uninett.no/navn/domreg.html
- http://www.iahc.org/dns-refs/registry.html
- http://www.iana.org/root-whois/xx.htm
- http://www.afrinic.org
- http://www.aftld.org
- http://www.afrinic.net/
- http://www.aftld.org/
Marco d'Itri
<md@linux.it>

5
as32_del.h Normal file
View File

@ -0,0 +1,5 @@
{ 131072, 196607, "whois.apnic.net" }, /* 2.0 2.65535 */
{ 196608, 262143, "whois.ripe.net" }, /* 3.0 3.65535 */
{ 262144, 327679, "whois.lacnic.net" }, /* 4.0 4.65535 */
{ 327680, 393215, "whois.afrinic.net" }, /* 5.0 5.65535 */
{ 393216, 458751, "whois.arin.net" }, /* 6.0 6.65535 */

10
as32_del_list Normal file
View File

@ -0,0 +1,10 @@
# http://www.iana.org/assignments/as-numbers
# actually I listed here also the unallocated space reserved for each RIR
2.0 2.65535 apnic
3.0 3.65535 ripe
4.0 4.65535 lacnic
5.0 5.65535 afrinic
6.0 6.65535 arin

View File

@ -1,6 +1,6 @@
/* Program version */
/* not for the inetutils version */
#define VERSION "4.7.22"
#define VERSION "4.7.23"
/* Configurable features */

11
data.h
View File

@ -117,6 +117,17 @@ const struct as_del as_assign[] = {
{ 0, 0, NULL }
};
struct as32_del {
const unsigned long first;
const unsigned long last;
const char *serv;
};
const struct as32_del as32_assign[] = {
#include "as32_del.h"
{ 0, 0, NULL }
};
const char *tld_serv[] = {
#include "tld_serv.h"
NULL, NULL

8
debian/changelog vendored
View File

@ -1,3 +1,11 @@
whois (4.7.23) unstable; urgency=medium
* Fixed myinet_aton to not reject CIDR networks.
* Added support for ASN32.
* Added the za.net and za.org pseudo-TLD servers.
-- Marco d'Itri <md@linux.it> Thu, 13 Sep 2007 03:28:21 +0200
whois (4.7.22) unstable; urgency=medium
* Added new IPv4 allocations.

2
debian/rules vendored
View File

@ -18,7 +18,7 @@ build:
clean:
dh_testdir
-rm -f build
-$(MAKE) distclean
$(MAKE) distclean
dh_clean
binary-arch: checkroot build

21
make_as32_del.pl Executable file
View File

@ -0,0 +1,21 @@
#!/usr/bin/perl
use warnings;
use strict;
while (<STDIN>) {
chomp;
s/^\s*(.+)\s*$/$1/;
s/\s*#.*$//;
next if /^$/;
my ($fh, $fl, $lh, $ll, $s) = /^(\d+)\.(\d+)\s+(\d+)\.(\d+)\s+([\w\.-]+)$/;
die "format error: $_" unless $s;
my $f = ($fh << 16) + $fl;
my $l = ($lh << 16) + $ll;
my $server = ($s =~ /\./) ? $s : "whois.$s.net";
print qq({ $f, $l,\t"$server" },\t/* $fh.$fl $lh.$ll */\n);
}

View File

@ -1,6 +1,7 @@
# NIC? means I have not been able to find the registry
# UPR means the TLD is managed by UPR, but I could not find any info
#
.br.com whois.centralnic.net
.cn.com whois.centralnic.net
.de.com whois.centralnic.net
@ -18,21 +19,28 @@
.uk.net whois.centralnic.net
.us.com whois.centralnic.net
.uy.com whois.centralnic.net
.za.net whois.centralnic.net
.za.com whois.centralnic.net
.jpn.com whois.centralnic.net
.web.com whois.centralnic.net
.eu.org whois.eu.org
.com CRSNIC
.za.net whois.za.net
.net CRSNIC
.eu.org whois.eu.org
.za.org whois.za.org
.org PIR
.edu whois.educause.net
.gov whois.nic.gov
.int whois.iana.org
.mil NONE
.aero whois.information.aero
e164.arpa whois.ripe.net
.arpa whois.iana.org
.aero whois.information.aero
.biz whois.nic.biz
.cat whois.cat
.coop whois.nic.coop
@ -43,6 +51,7 @@ e164.arpa whois.ripe.net
.name whois.nic.name
.pro whois.registrypro.pro
.travel whois.nic.travel
.ac whois.nic.ac
.ad NONE # www.nic.ad
.ae whois.uaenic.ae
@ -308,6 +317,7 @@ e164.arpa whois.ripe.net
.za NONE # http://www.internet.org.za/slds.html many more SLD...
.zm NONE # NIC? http://www.zamnet.zm/
.zw NONE # http://www.zispa.co.zw/
-dom whois.networksolutions.com
-org whois.networksolutions.com
-hst whois.networksolutions.com

38
whois.c
View File

@ -355,7 +355,7 @@ const char *match_config_file(const char *s)
*/
const char *whichwhois(const char *s)
{
unsigned long ip;
unsigned long ip, as32;
unsigned int i;
char *colon;
@ -393,9 +393,6 @@ const char *whichwhois(const char *s)
/* no dot and no hyphen means it's a NSI NIC handle or ASN (?) */
if (!strpbrk(s, ".-")) {
const char *p;
for (p = s; *p; p++); /* go to the end of s */
if (strncasecmp(s, "as", 2) == 0 && /* it's an AS */
(isasciidigit(s[2]) || s[2] == ' '))
return whereas(atoi(s + 2));
@ -405,6 +402,11 @@ const char *whichwhois(const char *s)
return "\x05"; /* probably a unknown kind of nic handle */
}
/* ASN32? */
if (strncasecmp(s, "as", 2) == 0 && s[2] &&
(as32 = asn32_to_long(s + 2)) != 0)
return whereas32(as32);
/* smells like an IP? */
if ((ip = myinet_aton(s))) {
for (i = 0; ip_assign[i].serv; i++)
@ -433,6 +435,16 @@ const char *whichwhois(const char *s)
return "\x05";
}
const char *whereas32(const unsigned long asn)
{
int i;
for (i = 0; as32_assign[i].serv; i++)
if (asn >= as32_assign[i].first && asn <= as32_assign[i].last)
return as32_assign[i].serv;
return "\x06";
}
const char *whereas(const unsigned short asn)
{
int i;
@ -895,17 +907,33 @@ char *convert_teredo(const char *s)
unsigned long myinet_aton(const char *s)
{
unsigned long a, b, c, d;
int elements;
char junk;
if (!s)
return 0;
if (sscanf(s, "%lu.%lu.%lu.%lu%c", &a, &b, &c, &d, &junk) != 4)
elements = sscanf(s, "%lu.%lu.%lu.%lu%c", &a, &b, &c, &d, &junk);
if (!(elements == 4 || (elements == 5 && junk == '/')))
return 0;
if (a > 255 || b > 255 || c > 255 || d > 255)
return 0;
return (a << 24) + (b << 16) + (c << 8) + d;
}
unsigned long asn32_to_long(const char *s)
{
unsigned long a, b;
char junk;
if (!s)
return 0;
if (sscanf(s, "%lu.%lu%c", &a, &b, &junk) != 2)
return 0;
if (a > 65535 || b > 65535)
return 0;
return (a << 16) + b;
}
int isasciidigit(const char c) {
return (c >= '0' && c <= '9') ? 1 : 0;
}

View File

@ -12,6 +12,7 @@
const char *whichwhois(const char *);
const char *match_config_file(const char *);
const char *whereas(const unsigned short);
const char *whereas32(const unsigned long);
char *queryformat(const char *, const char *, const char *);
int hide_line(int *hiding, const char *const line);
const char *do_query(const int, const char *);
@ -22,6 +23,7 @@ void usage(void);
void alarm_handler(int);
void sighandler(int);
unsigned long myinet_aton(const char *);
unsigned long asn32_to_long(const char *);
int isasciidigit(const char);
int domcmp(const char *, const char *);
int domfind(const char *, const char *[]);

View File

@ -1,6 +1,6 @@
Summary: Enhanced WHOIS client
Name: whois
Version: 4.7.22
Version: 4.7.23
Release: 1
License: GPL
Vendor: Marco d'Itri <md@linux.it>