mirror of
https://github.com/rfc1036/whois.git
synced 2026-05-03 06:51:09 +00:00
Imported Debian version 4.6.13
This commit is contained in:
parent
548793b0a4
commit
02298a2df4
8
Makefile
8
Makefile
@ -20,6 +20,8 @@ LIBIDN += -lidn
|
|||||||
CFLAGS += -DHAVE_LIBIDN
|
CFLAGS += -DHAVE_LIBIDN
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
PERL=perl
|
||||||
|
|
||||||
all: whois #pos
|
all: whois #pos
|
||||||
|
|
||||||
whois: whois.c whois.h config.h data.h as_del.h ip_del.h tld_serv.h
|
whois: whois.c whois.h config.h data.h as_del.h ip_del.h tld_serv.h
|
||||||
@ -29,13 +31,13 @@ mkpasswd: mkpasswd.c
|
|||||||
$(CC) $(CFLAGS) $(OPTS) mkpasswd.c -o mkpasswd -lcrypt
|
$(CC) $(CFLAGS) $(OPTS) mkpasswd.c -o mkpasswd -lcrypt
|
||||||
|
|
||||||
as_del.h: as_del_list make_as_del.pl
|
as_del.h: as_del_list make_as_del.pl
|
||||||
perl make_as_del.pl < as_del_list > as_del.h
|
$(PERL) -w make_as_del.pl < as_del_list > as_del.h
|
||||||
|
|
||||||
ip_del.h: ip_del_list make_ip_del.pl
|
ip_del.h: ip_del_list make_ip_del.pl
|
||||||
perl make_ip_del.pl < ip_del_list > ip_del.h
|
$(PERL) -w make_ip_del.pl < ip_del_list > ip_del.h
|
||||||
|
|
||||||
tld_serv.h: tld_serv_list make_tld_serv.pl
|
tld_serv.h: tld_serv_list make_tld_serv.pl
|
||||||
perl make_tld_serv.pl < tld_serv_list > tld_serv.h
|
$(PERL) -w make_tld_serv.pl < tld_serv_list > tld_serv.h
|
||||||
|
|
||||||
install: whois
|
install: whois
|
||||||
install -m 0755 whois $(BASEDIR)$(prefix)/bin/
|
install -m 0755 whois $(BASEDIR)$(prefix)/bin/
|
||||||
|
|||||||
5
config.h
5
config.h
@ -1,12 +1,9 @@
|
|||||||
/* Program version */
|
/* Program version */
|
||||||
/* not for the inetutils version */
|
/* not for the inetutils version */
|
||||||
#define VERSION "4.6.9"
|
#define VERSION "4.6.11"
|
||||||
|
|
||||||
/* Configurable features */
|
/* Configurable features */
|
||||||
|
|
||||||
/* 6bone referto: support */
|
|
||||||
#define EXT_6BONE
|
|
||||||
|
|
||||||
/* Always hide legal disclaimers */
|
/* Always hide legal disclaimers */
|
||||||
#undef ALWAYS_HIDE_DISCL
|
#undef ALWAYS_HIDE_DISCL
|
||||||
|
|
||||||
|
|||||||
5
data.h
5
data.h
@ -40,7 +40,8 @@ const char *ripe_servers_old[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const char *hide_strings[] = {
|
const char *hide_strings[] = {
|
||||||
"NOTICE AND TERMS OF USE: You", "Network Solutions reserves",/* VERISIGN */
|
"NOTICE AND TERMS OF USE: You", "Network Solutions reserves",/* Verisign */
|
||||||
|
"NOTICE: The expiration date", "Registrars.", /* crsnic */
|
||||||
"NOTICE: Access to .ORG WHOIS", "time. By submitting", /* org */
|
"NOTICE: Access to .ORG WHOIS", "time. By submitting", /* org */
|
||||||
"NOTICE: Access to .INFO WHOIS", "time. By submitting", /* info */
|
"NOTICE: Access to .INFO WHOIS", "time. By submitting", /* info */
|
||||||
"This Registry database contains ONLY .EDU", "type: help", /* edu */
|
"This Registry database contains ONLY .EDU", "type: help", /* edu */
|
||||||
@ -65,6 +66,7 @@ const char *hide_strings[] = {
|
|||||||
"The Data in OnlineNIC", "\tBy starting this query", /* OnlineNIC */
|
"The Data in OnlineNIC", "\tBy starting this query", /* OnlineNIC */
|
||||||
"The data in Bulkregister.com", "you agree to abide", /* bulkregister */
|
"The data in Bulkregister.com", "you agree to abide", /* bulkregister */
|
||||||
"The Data in Alldomains.com's", "By submitting this query,",/*alldomains*/
|
"The Data in Alldomains.com's", "By submitting this query,",/*alldomains*/
|
||||||
|
"Interdomain's WHOIS", "DOES NOT SIGNIFY",
|
||||||
NULL, NULL
|
NULL, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -118,6 +120,7 @@ struct ip6_del ip6_assign[] = {
|
|||||||
{ 0x1400, "whois.ripe.net" },
|
{ 0x1400, "whois.ripe.net" },
|
||||||
{ 0x1600, "whois.ripe.net" },
|
{ 0x1600, "whois.ripe.net" },
|
||||||
{ 0x1800, "whois.arin.net" },
|
{ 0x1800, "whois.arin.net" },
|
||||||
|
{ 0x1A00, "whois.ripe.net" },
|
||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
31
debian/changelog
vendored
31
debian/changelog
vendored
@ -1,3 +1,34 @@
|
|||||||
|
whois (4.6.13) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Fix the DENIC code. (Closes: #242424)
|
||||||
|
|
||||||
|
-- Marco d'Itri <md@linux.it> Thu, 8 Apr 2004 13:16:58 +0200
|
||||||
|
|
||||||
|
whois (4.6.12) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Added a workaround for DENIC brokeness. (Closes: #242424)
|
||||||
|
* Added the new IPv4 networks allocated to RIPE.
|
||||||
|
|
||||||
|
-- Marco d'Itri <md@linux.it> Tue, 6 Apr 2004 19:25:20 +0200
|
||||||
|
|
||||||
|
whois (4.6.11) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Fix parsing of IPv4 addresses on 64 bit architectures, spotted by
|
||||||
|
Paul Slootman. (Closes: #229809)
|
||||||
|
* Add support for ARIN whois referrals. (Closes: #229810, #231694)
|
||||||
|
* Cleaned up some code and added support for ARIN referrals, based
|
||||||
|
on a patch by Kees Cook.
|
||||||
|
|
||||||
|
-- Marco d'Itri <md@linux.it> Sat, 31 Jan 2004 17:41:39 +0100
|
||||||
|
|
||||||
|
whois (4.6.10) unstable; urgency=high
|
||||||
|
|
||||||
|
* Compiled with libidn11. (Closes: #227350)
|
||||||
|
* Fixed a disclaimer. (Closes: #226949)
|
||||||
|
* Updated Greek .po file from Velonis Petros.
|
||||||
|
|
||||||
|
-- Marco d'Itri <md@linux.it> Tue, 13 Jan 2004 12:55:51 +0100
|
||||||
|
|
||||||
whois (4.6.9) unstable; urgency=medium
|
whois (4.6.9) unstable; urgency=medium
|
||||||
|
|
||||||
* Removed .ac.cn SLD. (Closes: #219883)
|
* Removed .ac.cn SLD. (Closes: #219883)
|
||||||
|
|||||||
2
debian/control
vendored
2
debian/control
vendored
@ -3,7 +3,7 @@ Section: net
|
|||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Marco d'Itri <md@linux.it>
|
Maintainer: Marco d'Itri <md@linux.it>
|
||||||
Standards-Version: 3.6.1
|
Standards-Version: 3.6.1
|
||||||
Build-Depends: debhelper, gettext, libidn9-dev
|
Build-Depends: debhelper, gettext, libidn11-dev
|
||||||
|
|
||||||
Package: whois
|
Package: whois
|
||||||
Architecture: any
|
Architecture: any
|
||||||
|
|||||||
@ -14,8 +14,8 @@
|
|||||||
61.208.0.0/13 whois.nic.ad.jp # => 61.215.255.255
|
61.208.0.0/13 whois.nic.ad.jp # => 61.215.255.255
|
||||||
60.0.0.0/7 apnic
|
60.0.0.0/7 apnic
|
||||||
62.0.0.0/8 ripe
|
62.0.0.0/8 ripe
|
||||||
80.0.0.0/7 ripe
|
80.0.0.0/5 ripe # => 87.255.255.254
|
||||||
82.0.0.0/8 ripe
|
88.0.0.0/8 ripe
|
||||||
96.0.0.0/3 UNALLOCATED # 96 -> 127 reserved
|
96.0.0.0/3 UNALLOCATED # 96 -> 127 reserved
|
||||||
0.0.0.0/1 arin # all other A classes are managed by ARIN
|
0.0.0.0/1 arin # all other A classes are managed by ARIN
|
||||||
133.0.0.0/8 whois.nic.ad.jp
|
133.0.0.0/8 whois.nic.ad.jp
|
||||||
|
|||||||
@ -7,18 +7,19 @@ while (<>) {
|
|||||||
s/^\s*(.*)\s*$/$1/;
|
s/^\s*(.*)\s*$/$1/;
|
||||||
s/\s*#.*$//;
|
s/\s*#.*$//;
|
||||||
next if /^$/;
|
next if /^$/;
|
||||||
die "format error: $_" unless (/^([\d\.]+)\/(\d+)\s+([\w\.]+)$/);
|
|
||||||
my $m=$2; my $s=$3;
|
die "format error: $_" if not /^([\d\.]+)\/(\d+)\s+([\w\.]+)$/;
|
||||||
my ($i1, $i2, $i3, $i4)=split(/\./, $1);
|
my $m = $2; my $s = $3;
|
||||||
print "{ ".(($i1<<24)+($i2<<16)+($i3<<8)+$i4)."UL, ".
|
my ($i1, $i2, $i3, $i4) = split(/\./, $1);
|
||||||
(~(0xffffffff>>$m))."UL, \"";
|
print '{ ' . (($i1 << 24) + ($i2 << 16) + ($i3 << 8) + $i4) . 'UL, '.
|
||||||
|
((~(0xffffffff >> $m)) & 0xffffffff) . 'UL, "';
|
||||||
if ($s =~ /\./) {
|
if ($s =~ /\./) {
|
||||||
print "$s";
|
print $s;
|
||||||
} elsif ($s eq 'UNALLOCATED') {
|
} elsif ($s eq 'UNALLOCATED') {
|
||||||
print "\006";
|
print "\\006";
|
||||||
} else {
|
} else {
|
||||||
print "whois.$s.net";
|
print "whois.$s.net";
|
||||||
}
|
}
|
||||||
print "\" },\n";
|
print '" },' . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
211
po/el.po
211
po/el.po
@ -1,17 +1,16 @@
|
|||||||
# Greek translation of the whois command.
|
# Greek translation of the whois 4.6.9 command.
|
||||||
# Copyright (C) 1999-2000 Simos Xenitellis
|
# Copyright (C) 1999-2003 Simos Xenitellis, Velonis Petros
|
||||||
# Simos Xenitellis <simos@hellug.gr>\n"
|
# Simos Xenitellis <simos@hellug.gr>
|
||||||
#
|
# Velonis Petros <velonis@freemail.gr>
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: whois 4.5.3\n"
|
"Project-Id-Version: whois 4.6.9\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2003-12-01 18:31+0100\n"
|
"POT-Creation-Date: 2003-12-01 18:31+0100\n"
|
||||||
"PO-Revision-Date: 2001-02-23 16:07:57+0900\n"
|
"PO-Revision-Date: 2003-12-10 08:51+0200\n"
|
||||||
"Last-Translator: Simos Xenitellis <simos@hellug.gr>\n"
|
"Last-Translator: Velonis Petros <velonis@freemail.gr>\n"
|
||||||
"Language-Team: Greek <nls@tux.hellug.gr>\n"
|
"Language-Team: Greek <velonis@freemail.gr>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=iso-8859-7\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: ../whois.c:108
|
#: ../whois.c:108
|
||||||
@ -21,75 +20,71 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Report bugs to %s.\n"
|
"Report bugs to %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Έκδοση %s.\n"
|
"Έκδοση %s.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Αναφέρατε σφάλματα στο %s.\n"
|
"Αναφέρατε σφάλματα στο %s.\n"
|
||||||
|
|
||||||
#: ../whois.c:151 ../whois.c:240
|
#: ../whois.c:151
|
||||||
|
#: ../whois.c:240
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using server %s.\n"
|
msgid "Using server %s.\n"
|
||||||
msgstr "Γίνεται χρήση του εξυπηρετητή %s.\n"
|
msgstr "Γίνεται χρήση του εξυπηρετητή %s.\n"
|
||||||
|
|
||||||
#: ../whois.c:173
|
#: ../whois.c:173
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using default server %s.\n"
|
msgid "Using default server %s.\n"
|
||||||
msgstr "Χρήση εξ' ορισμού εξυπηρετητή %s.\n"
|
msgstr "Χρήση εξ' ορισμού εξυπηρετητή %s.\n"
|
||||||
|
|
||||||
#: ../whois.c:176
|
#: ../whois.c:176
|
||||||
msgid "This TLD has no whois server, but you can access the whois database at"
|
msgid "This TLD has no whois server, but you can access the whois database at"
|
||||||
msgstr ""
|
msgstr "Αυτό το TLD δεν έχει εξυπηρετητή whois, ωστόσο μπορείτε να προσπελάσετε την βάση whois στο"
|
||||||
"Αυτό το TLD δεν έχει εξυπηρετητή whois, ωστόσο μπορείτε να προσπελάσετε την "
|
|
||||||
"βάση whois στο"
|
|
||||||
|
|
||||||
#: ../whois.c:182
|
#: ../whois.c:182
|
||||||
msgid "This TLD has no whois server."
|
msgid "This TLD has no whois server."
|
||||||
msgstr "Αυτό το TLD δεν έχει εξυπηρετητή whois."
|
msgstr "Αυτό το TLD δεν έχει εξυπηρετητή whois."
|
||||||
|
|
||||||
#: ../whois.c:186
|
#: ../whois.c:186
|
||||||
#, fuzzy
|
|
||||||
msgid "Connecting to whois.crsnic.net."
|
msgid "Connecting to whois.crsnic.net."
|
||||||
msgstr "Γίνεται σύνδεση στο whois.internic.net."
|
msgstr "Γίνεται σύνδεση στο whois.crsnic.net."
|
||||||
|
|
||||||
#: ../whois.c:192 ../whois.c:203
|
#: ../whois.c:192
|
||||||
#, fuzzy, c-format
|
#: ../whois.c:203
|
||||||
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Found a referral to %s.\n"
|
"Found a referral to %s.\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Βρέθηκε αναφορά από το InterNIC στο %s.\n"
|
"Βρέθηκε αναφορά στο %s.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: ../whois.c:197
|
#: ../whois.c:197
|
||||||
#, fuzzy
|
|
||||||
msgid "Connecting to whois.nic.cc."
|
msgid "Connecting to whois.nic.cc."
|
||||||
msgstr "Γίνεται σύνδεση στο whois.internic.net."
|
msgstr "Γίνεται σύνδεση στο whois.nic.cc."
|
||||||
|
|
||||||
#: ../whois.c:208
|
#: ../whois.c:208
|
||||||
#, fuzzy
|
|
||||||
msgid "Connecting to whois.publicinterestregistry.net."
|
msgid "Connecting to whois.publicinterestregistry.net."
|
||||||
msgstr "Γίνεται σύνδεση στο whois.internic.net."
|
msgstr "Γίνεται σύνδεση στο whois.publicinterestregistry.net."
|
||||||
|
|
||||||
#: ../whois.c:214
|
#: ../whois.c:214
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Found referral to %s.\n"
|
"Found referral to %s.\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Βρέθηκε αναφορά από το InterNIC στο %s.\n"
|
"Βρέθηκε αναφορά στο %s.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: ../whois.c:218
|
#: ../whois.c:218
|
||||||
msgid "No whois server is known for this kind of object."
|
msgid "No whois server is known for this kind of object."
|
||||||
msgstr ""
|
msgstr "Κανένας εξυπηρετητής whois δεν είναι γνωστός για αυτού του είδους το αντικείμενο."
|
||||||
|
|
||||||
#: ../whois.c:221
|
#: ../whois.c:221
|
||||||
#, fuzzy
|
|
||||||
msgid "Unknown AS number or IP network. Please upgrade this program."
|
msgid "Unknown AS number or IP network. Please upgrade this program."
|
||||||
msgstr "Άγνωστος αριθμός AS. Παρακαλώ ενημερώστε αυτό το πρόγραμμα."
|
msgstr "Άγνωστος αριθμός AS ή IP δικτύου. Παρακαλώ αναβαθμίστε αυτό το πρόγραμμα."
|
||||||
|
|
||||||
#: ../whois.c:228
|
#: ../whois.c:228
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -98,6 +93,9 @@ msgid ""
|
|||||||
"Querying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n"
|
"Querying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Άντληση πληροφοριών για το σημείο τέλους IPv4 %s μιας διεύθυνσης 6to4 IPv6.\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
#: ../whois.c:249
|
#: ../whois.c:249
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -105,54 +103,52 @@ msgid ""
|
|||||||
"Query string: \"%s\"\n"
|
"Query string: \"%s\"\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Αλφαριθμητικό ερώτησης: \"%s\"\n"
|
"Αλφαριθμητικό ερώτησης: \"%s\"\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: ../whois.c:302 ../whois.c:305
|
#: ../whois.c:302
|
||||||
|
#: ../whois.c:305
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot parse this line: %s"
|
msgid "Cannot parse this line: %s"
|
||||||
msgstr ""
|
msgstr "Αδύνατη η ανάλυση αυτής της γραμμής: %s"
|
||||||
|
|
||||||
#: ../whois.c:446
|
#: ../whois.c:446
|
||||||
#, fuzzy
|
|
||||||
msgid "Warning: RIPE flags used with a traditional server."
|
msgid "Warning: RIPE flags used with a traditional server."
|
||||||
msgstr ""
|
msgstr "Προειδοποίηση: Η σημαίες του RIPE χρησιμοποιούνται σε έναν παραδοσιακό εξυπηρετητή."
|
||||||
"Προειδοποίηση: Η σημαίες του RIPE αγνοούνται σε έναν παραδοσιακό εξυπηρετητή."
|
|
||||||
|
|
||||||
#: ../whois.c:503
|
#: ../whois.c:503
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Detected referral to %s on %s.\n"
|
msgid "Detected referral to %s on %s.\n"
|
||||||
msgstr "Ανιχνεύθηκε αναφορά του %s στο %s.\n"
|
msgstr "Ανιχνεύθηκε αναφορά του %s στο %s.\n"
|
||||||
|
|
||||||
#: ../whois.c:520
|
#: ../whois.c:520
|
||||||
msgid ""
|
msgid ""
|
||||||
"Catastrophic error: disclaimer text has been changed.\n"
|
"Catastrophic error: disclaimer text has been changed.\n"
|
||||||
"Please upgrade this program.\n"
|
"Please upgrade this program.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Καταστροφικό σφάλμα: το κείμενο της αποποίησης ευθυνών έχει τροποποιηθεί.\n"
|
"Καταστροφικό σφάλμα: το κείμενο της αποποίησης ευθυνών έχει τροποποιηθεί.\n"
|
||||||
"Παρακαλώ αναβαθμίστε το πρόγραμμα.\n"
|
"Παρακαλώ αναβαθμίστε το πρόγραμμα.\n"
|
||||||
|
|
||||||
#: ../whois.c:639
|
#: ../whois.c:639
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Host %s not found."
|
msgid "Host %s not found."
|
||||||
msgstr "Το σύστημα %s δε βρέθηκε."
|
msgstr "Το σύστημα %s δε βρέθηκε."
|
||||||
|
|
||||||
#: ../whois.c:649
|
#: ../whois.c:649
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s/tcp: unknown service"
|
msgid "%s/tcp: unknown service"
|
||||||
msgstr "%s/tcp: άγνωστη υπηρεσία"
|
msgstr "%s/tcp: άγνωστη υπηρεσία"
|
||||||
|
|
||||||
#: ../whois.c:661
|
#: ../whois.c:661
|
||||||
msgid "Timeout."
|
msgid "Timeout."
|
||||||
msgstr ""
|
msgstr "Διάλειμμα."
|
||||||
|
|
||||||
#: ../whois.c:667
|
#: ../whois.c:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Interrupted by signal %d..."
|
msgid "Interrupted by signal %d..."
|
||||||
msgstr "Διακοπή από το σήμα %d..."
|
msgstr "Διακοπή από το σήμα %d..."
|
||||||
|
|
||||||
#: ../whois.c:728
|
#: ../whois.c:728
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: whois [OPTION]... OBJECT...\n"
|
"Usage: whois [OPTION]... OBJECT...\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -160,11 +156,9 @@ msgid ""
|
|||||||
"-L find all Less specific matches\n"
|
"-L find all Less specific matches\n"
|
||||||
"-m find first level more specific matches\n"
|
"-m find first level more specific matches\n"
|
||||||
"-M find all More specific matches\n"
|
"-M find all More specific matches\n"
|
||||||
"-c find the smallest match containing a mnt-irt "
|
"-c find the smallest match containing a mnt-irt attribute\n"
|
||||||
"attribute\n"
|
|
||||||
"-x exact match [RPSL only]\n"
|
"-x exact match [RPSL only]\n"
|
||||||
"-d return DNS reverse delegation objects too [RPSL "
|
"-d return DNS reverse delegation objects too [RPSL only]\n"
|
||||||
"only]\n"
|
|
||||||
"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
|
"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
|
||||||
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
|
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
|
||||||
"-K only primary keys are returned [RPSL only]\n"
|
"-K only primary keys are returned [RPSL only]\n"
|
||||||
@ -174,8 +168,7 @@ msgid ""
|
|||||||
"-a search all databases\n"
|
"-a search all databases\n"
|
||||||
"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
|
"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
|
||||||
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
|
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
|
||||||
"-t TYPE request template for object of TYPE ('all' for a "
|
"-t TYPE request template for object of TYPE ('all' for a list)\n"
|
||||||
"list)\n"
|
|
||||||
"-v TYPE request verbose template for object of TYPE\n"
|
"-v TYPE request verbose template for object of TYPE\n"
|
||||||
"-q [version|sources|types] query specified server info [RPSL only]\n"
|
"-q [version|sources|types] query specified server info [RPSL only]\n"
|
||||||
"-F fast raw output (implies -r)\n"
|
"-F fast raw output (implies -r)\n"
|
||||||
@ -186,81 +179,72 @@ msgid ""
|
|||||||
" --help display this help and exit\n"
|
" --help display this help and exit\n"
|
||||||
" --version output version information and exit\n"
|
" --version output version information and exit\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Uso: whois [ΕΠΙΛΟΓΈΣ]... ΑΝΤΙΚΕΊΜΕΝΟ...\n"
|
"Χρήση: whois [ΕΠΙΛΟΓΕΣ]... ΑΝΤΙΚΕΙΜΕΝΟ...\n"
|
||||||
"\n"
|
"\n"
|
||||||
"-a αναζήτηση σε όλες τις βάσεις δεδομένων\n"
|
"-l ένα επίπεδο λιγότερο συγκεκριμένη αναζήτηση [μόνο RPSL]\n"
|
||||||
"-F γρήγορη ακατέργαστη έξοδος (υπονοεί -r)\n"
|
"-L εύρεση όλων των Λιγότερο συγκεκριμένων ταιριασμάτων\n"
|
||||||
"-g ΠΗΓΉ:ΠΡΏΤΟ:ΤΕΛΕΥΤΑΊΟ πρώτα αναβαθμίζει από την ΠΗΓΉ από το "
|
"-m εύρεση όλων των πρώτου επιπέδου περισσότερο συγκεκριμένων ταιριασμάτων\n"
|
||||||
"σειριακό ΠΡΏΤΟ ως ΤΕΛΕΥΤΑΊΟ\n"
|
"-M εύρεση όλων των Περισσότερο συγκεκριμένων ταιριασμάτων\n"
|
||||||
"-h ΣΎΣΤΗΜΑ σύνδεση στον εξυπηρετητή ΣΎΣΤΗΜΑ\n"
|
"-c εύρεση του μικρότερου ταιριάσματος που να περιέχει μια ένα χαρακτηριστικό mnt-irt \n"
|
||||||
"-H απόκρυψη του νομικού εγγράφου αποποίησης ευθύνης\n"
|
"-x ακριβές ταίριασμα [μόνο RPSL]\n"
|
||||||
"-i ΧΑΡΑΚ[,ΧΑΡΑΚ]... να γίνει μια αντίστροφη αναζήτηση για το "
|
"-d επιστροφή και των αντίστροφων αντικειμένων DNS [μόνο RPSL]\n"
|
||||||
"καθορισμένα ΧΑΡΑΚτηριστικά\n"
|
"-i ΧΑΡΑΚ[,ΧΑΡΑΚ]... να γίνει μια αντίστροφη αναζήτηση για τα καθορισμένα ΧΑΡΑΚτηριστικά\n"
|
||||||
"-x ακριβές ταίριασμα [μόνο RPSL]\n"
|
"-T ΕΙΔΟΣ[,ΕΊΔΟΣ]... αναζήτηση μόνο αντικειμένου του ΕΙΔΟΥΣ\n"
|
||||||
"-l ένα επίπεδο λιγότερο συγκεκριμένη αναζήτηση [μόνο "
|
"-K επιστροφή μόνο των πρωταρχικών κλειδιών [μόνο RPSL]\n"
|
||||||
"RPSL]\n"
|
"-r απενεργοποίηση των αναδρομικών αναζητήσεων για πληροφορίες επικοινωνίας\n"
|
||||||
"-L εύρεση όλων των Λιγότερο συγκεκριμένων ταιριασμάτων\n"
|
"-R επιβολή εμφάνισης τοπικού αντιγράφου του αντικειμένου επιθήματος ακόμα και αν περιέχει αναφορές\n"
|
||||||
"-M εύρεση όλων των Περισσότερο "
|
"-a αναζήτηση σε όλες τις βάσεις δεδομένων\n"
|
||||||
"συγκεκριμένων ταιριασμάτων\n"
|
"-s ΠΗΓΗ[,ΠΗΓΉ]... αναζήτηση της βάσης δεδομένων από την ΠΗΓΗ\n"
|
||||||
"-m εύρεση όλων των πρώτου επιπέδου "
|
"-g ΠΗΓΗ:ΠΡΩΤΟ:ΤΕΛΕΥΤΑΙΟ εμφάνιση αναβαθμίσεων από την ΠΗΓΗ από το σειριακό ΠΡΏΤΟ ως ΤΕΛΕΥΤΑΙΟ\n"
|
||||||
"περισσότερο συγκεκριμένων ταιριασμάτων\n"
|
"-t ΕΙΔΟΣ αναζήτηση προτύπου για το αντικείμενο του ΕΊΔΟΥΣ ('all' για εμφάνιση λίστας)\n"
|
||||||
"-r απενεργοποίηση των αναδρομικών αναζητήσεων\n"
|
"-v ΕΙΔΟΣ αναζήτηση περιφραστικού προτύπου για το αντικείμενο του ΕΙΔΟΥΣ\n"
|
||||||
"-p ΘΎΡΑ σύνδεση στη ΘΎΡΑ\n"
|
"-q [έκδοση|πηγές|τύποι] συγκεκριμένο ερώτημα πληροφοριών εξυπηρετητή [μόνο RPSL]\n"
|
||||||
"-R επιβολή εμφάνισης τοπικού αντιγράφου του "
|
"-F γρήγορη ακατέργαστη έξοδος (υπονοεί -r)\n"
|
||||||
"αντικειμένου επιθήματος ακόμα και αν περιέχει "
|
"-h ΣΥΣΤΗΜΑ σύνδεση στον εξυπηρετητή ΣΎΣΤΗΜΑ\n"
|
||||||
"αναφορές\n"
|
"-p ΘΥΡΑ σύνδεση στη ΘΥΡΑ\n"
|
||||||
"-S πες στον εξυπηρετητή να αποφύγει τη "
|
"-H απόκρυψη του νομικού εγγράφου αποποίησης ευθύνης\n"
|
||||||
"συντακτική ζάχαρη\n"
|
" --verbose εξήγηση του τί συμβαίνει\n"
|
||||||
"-s ΠΗΓΉ[,ΠΗΓΉ]... αναζήτηση στη βάση από την ΠΗΓΉ\n"
|
" --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
|
||||||
"-T ΕΊΔΟΣ[,ΕΊΔΟΣ]... αναζήτηση μόνο αντικειμένου του ΕΊΔΟΥΣ\n"
|
" --version εμφάνιση της έκδοσης και έξοδος\n"
|
||||||
"-t ΕΊΔΟΣ αναζητά ένα πρότυπο για το αντικείμενο του "
|
|
||||||
"ΕΊΔΟΥΣ ('all' για για εμφάνιση λίστας)\n"
|
|
||||||
"-v ΕΊΔΟΣ αναζητά περιφραστικό πρότυπο για το αντικείμενο "
|
|
||||||
"του ΕΊΔΟΥΣ\n"
|
|
||||||
"-d επιστροφή και των αντιστρόφων αντικειμένων DNS\n"
|
|
||||||
" απόδοσης ευθύνης [μόνο RPSL]\n"
|
|
||||||
"-K επιστροφή μόνο των πρωταρχικών κλειδιών [μόνο RPSL]\n"
|
|
||||||
"-V --verbose εξήγηση του τί συμβαίνει\n"
|
|
||||||
" --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
|
|
||||||
" --version εμφάνιση της έκδοσης και έξοδος\n"
|
|
||||||
|
|
||||||
#: ../mkpasswd.c:55
|
#: ../mkpasswd.c:55
|
||||||
msgid "\tstandard 56 bit DES-based crypt(3)"
|
msgid "\tstandard 56 bit DES-based crypt(3)"
|
||||||
msgstr ""
|
msgstr "\tκαθεριερωμένη 56 bit με βάση το DES crypt(3)"
|
||||||
|
|
||||||
#: ../mkpasswd.c:96
|
#: ../mkpasswd.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid hash type '%s'.\n"
|
msgid "Invalid hash type '%s'.\n"
|
||||||
msgstr ""
|
msgstr "Άκυρος τύπος hash '%s'.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:105
|
#: ../mkpasswd.c:105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid number '%s'.\n"
|
msgid "Invalid number '%s'.\n"
|
||||||
msgstr ""
|
msgstr "Μη αποδεκτό νούμερο '%s'.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:123
|
#: ../mkpasswd.c:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try '%s --help' for more information.\n"
|
msgid "Try '%s --help' for more information.\n"
|
||||||
msgstr ""
|
msgstr "Προσπάθησε '%s --help' για περισσότερες πληροφορίες.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:152
|
#: ../mkpasswd.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wrong salt length: %d byte(s) when %d expected.\n"
|
msgid "Wrong salt length: %d byte(s) when %d expected.\n"
|
||||||
msgstr ""
|
msgstr "Εσφαλμένο μήκος salt : %d byte(s) όταν αναμένεται %d .\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:158
|
#: ../mkpasswd.c:158
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Illegal salt character '%c'.\n"
|
msgid "Illegal salt character '%c'.\n"
|
||||||
msgstr ""
|
msgstr "Μη αποδεκτός χαρακτήρας salt '%c'.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:172 ../mkpasswd.c:199
|
#: ../mkpasswd.c:172
|
||||||
|
#: ../mkpasswd.c:199
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr ""
|
msgstr "Συνθηματικό: "
|
||||||
|
|
||||||
#: ../mkpasswd.c:193
|
#: ../mkpasswd.c:193
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Illegal password character '0x%hhx'.\n"
|
msgid "Illegal password character '0x%hhx'.\n"
|
||||||
msgstr ""
|
msgstr "Μη αποδεκτός χαρακτήρας συνθηματικού '0x%hhx'.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:230
|
#: ../mkpasswd.c:230
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -268,6 +252,9 @@ msgid ""
|
|||||||
"Crypts the PASSWORD using crypt(3).\n"
|
"Crypts the PASSWORD using crypt(3).\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Χρήση: mkpasswd [ΕΠΙΛΟΓΕΣ]... [ΣΥΝΘΗΜΑΤΙΚΟ [SALT]]\n"
|
||||||
|
"Κρυπτογραφεί το ΣΥΝΘΗΜΑΤΙΚΟ χρησιμοποιώντας το crypt(3).\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:233
|
#: ../mkpasswd.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -286,21 +273,21 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Report bugs to %s.\n"
|
"Report bugs to %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
" -H, --hash=ΤΥΠΟΣ επιλογή hash ΤΥΠΟΣ\n"
|
||||||
|
" -S, --salt=SALT χρήση του συγκεκριμένου SALT\n"
|
||||||
|
" -P, --password-fd=NUM ανάγνωση του συνθηματικού από αρχείο περιγραφής NUM\n"
|
||||||
|
" αντί από το /dev/tty\n"
|
||||||
|
" -s, --stdin σαν το --password-fd=0\n"
|
||||||
|
" -h, --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
|
||||||
|
" -V, --version εμφάνιση πληροφοριών έκδοσης και έξοδος\n"
|
||||||
|
"\n"
|
||||||
|
"Αν λείπει το ΣΥΝΘΗΜΑΤΙΚΟ τότε γίνεται αλληλεπιδραστική ερώτηση.\n"
|
||||||
|
"Αν κανένα SALT δεν έχει προσδιοριστεί, τότε δημιουργείται ένα τυχαίο.\n"
|
||||||
|
"Αν λείπει ο ΤΥΠΟΣ τότε τυπώνονται διαθέσιμοι αλγόριθμοι.\n"
|
||||||
|
"\n"
|
||||||
|
"Αναφέρατε σφάλματα στο %s.\n"
|
||||||
|
|
||||||
#: ../mkpasswd.c:260
|
#: ../mkpasswd.c:260
|
||||||
msgid "Available algorithms:\n"
|
msgid "Available algorithms:\n"
|
||||||
msgstr ""
|
msgstr "Διαθέσιμοι αλγόριθμοι:\n"
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "I don't know where this IP has been delegated.\n"
|
|
||||||
#~ "I'll try ARIN and hope for the best..."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Δε γνωρίζε σε ποιον έχει αποδοθεί ευθύνη για αυτήν την διεύθυνση IP.\n"
|
|
||||||
#~ "Θα δοκιμάσω το ARIN και εύχομε για το καλύτερο..."
|
|
||||||
|
|
||||||
#~ msgid "I guess it's a netblock name but I don't know where to look it up."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Πιστεύω ότι είναι όνομα μπλοκ δικτύου αλλά δε γνωρίζω που να το αναζητήσω."
|
|
||||||
|
|
||||||
#~ msgid "I guess it's a domain but I don't know where to look it up."
|
|
||||||
#~ msgstr "Πιστεύω ότι είναι ένα επίθημα αλλά δε γνωρίζω που να το αναζητήσω."
|
|
||||||
|
|||||||
11
po/pl.po
11
po/pl.po
@ -1,17 +1,17 @@
|
|||||||
# cokolwi3k. whois.pot.
|
# cokolwi3k. whois.pot.
|
||||||
# Micha³ 'CeFeK' Nazarewicz <cefek@career.pl>, 1999
|
# Micha³ 'CeFeK' Nazarewicz <cefek@career.pl>, 1999
|
||||||
# Przemys³aw Knycz <djrzulf@pld.org.pl>, 2003
|
# Przemys³aw Knycz <djrzulf@pld.org.pl>, 2003
|
||||||
# Jakub Bogusz <qboosh@pld.org.pl>, 2003
|
# Jakub Bogusz <qboosh@pld-linux.org>, 2003
|
||||||
#
|
#
|
||||||
# BUG: xxx
|
# BUG: xxx
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: whois 4.6.5\n"
|
"Project-Id-Version: whois 4.6.9\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2003-12-01 18:31+0100\n"
|
"POT-Creation-Date: 2003-12-01 18:31+0100\n"
|
||||||
"PO-Revision-Date: 2003-05-10 08:40+0200\n"
|
"PO-Revision-Date: 2003-12-02 20:41+0100\n"
|
||||||
"Last-Translator: Jakub Bogusz <qboosh@pld.org.pl>\n"
|
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
|
||||||
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
|
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=iso-8859-2\n"
|
"Content-Type: text/plain; charset=iso-8859-2\n"
|
||||||
@ -96,6 +96,9 @@ msgid ""
|
|||||||
"Querying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n"
|
"Querying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Pytanie o zakoñczenie IPv4 %s adresu IPv6 typu 6to4.\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
#: ../whois.c:249
|
#: ../whois.c:249
|
||||||
#, c-format
|
#, c-format
|
||||||
|
|||||||
5
whois.1
5
whois.1
@ -54,7 +54,10 @@ server becomes \fIwhois.networksolutions.com\fP.
|
|||||||
.P
|
.P
|
||||||
When querying \fIwhois.nic.mil\fP for AS numbers, the program will
|
When querying \fIwhois.nic.mil\fP for AS numbers, the program will
|
||||||
automatically convert the request in the appropriate format, inserting
|
automatically convert the request in the appropriate format, inserting
|
||||||
a space after the string "AS".
|
a space after the string \fIAS\fP.
|
||||||
|
.P
|
||||||
|
When querying \fIwhois.denic.de\fP for domain names, the program will
|
||||||
|
automatically add the flags \fI-T dn,ace -C US-ASCII\fP.
|
||||||
.P
|
.P
|
||||||
When querying \fIwhois.corenic.net\fP, machine readable output is requested.
|
When querying \fIwhois.corenic.net\fP, machine readable output is requested.
|
||||||
.P
|
.P
|
||||||
|
|||||||
371
whois.c
371
whois.c
@ -37,9 +37,9 @@
|
|||||||
int sockfd, verb = 0;
|
int sockfd, verb = 0;
|
||||||
|
|
||||||
#ifdef ALWAYS_HIDE_DISCL
|
#ifdef ALWAYS_HIDE_DISCL
|
||||||
int hide_discl = 0;
|
int hide_discl = HIDE_UNSTARTED;
|
||||||
#else
|
#else
|
||||||
int hide_discl = 2;
|
int hide_discl = HIDE_DISABLED;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *client_tag = (char *)IDSTRING;
|
char *client_tag = (char *)IDSTRING;
|
||||||
@ -63,7 +63,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int ch, nopar = 0;
|
int ch, nopar = 0;
|
||||||
const char *server = NULL, *port = NULL;
|
const char *server = NULL, *port = NULL;
|
||||||
char *p, *q, *qstring, fstring[64] = "\0";
|
char *p, *qstring, fstring[64] = "\0";
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
@ -89,19 +89,15 @@ int main(int argc, char *argv[])
|
|||||||
/* program flags */
|
/* program flags */
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'h':
|
case 'h':
|
||||||
server = q = malloc(strlen(optarg) + 1);
|
server = strdup(optarg);
|
||||||
for (p = optarg; *p && *p != ':'; *q++ = tolower(*p++));
|
|
||||||
if (*p == ':')
|
|
||||||
port = p + 1;
|
|
||||||
*q = '\0';
|
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
client_tag = optarg;
|
client_tag = optarg;
|
||||||
case 'H':
|
case 'H':
|
||||||
hide_discl = 0; /* enable disclaimers hiding */
|
hide_discl = HIDE_UNSTARTED; /* enable disclaimers hiding */
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
port = optarg;
|
port = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
verb = 1;
|
verb = 1;
|
||||||
@ -143,9 +139,16 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signal(SIGTERM, sighandler);
|
||||||
|
signal(SIGINT, sighandler);
|
||||||
|
signal(SIGALRM, alarm_handler);
|
||||||
|
|
||||||
|
if (getenv("WHOIS_HIDE"))
|
||||||
|
hide_discl = HIDE_UNSTARTED;
|
||||||
|
|
||||||
/* -v or -t has been used */
|
/* -v or -t has been used */
|
||||||
if (!server && !*qstring)
|
if (!server && !*qstring)
|
||||||
server = "whois.ripe.net";
|
server = strdup("whois.ripe.net");
|
||||||
|
|
||||||
#ifdef CONFIG_FILE
|
#ifdef CONFIG_FILE
|
||||||
if (!server) {
|
if (!server) {
|
||||||
@ -155,11 +158,6 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
signal(SIGTERM, sighandler);
|
|
||||||
signal(SIGINT, sighandler);
|
|
||||||
signal(SIGALRM, alarm_handler);
|
|
||||||
alarm(60);
|
|
||||||
|
|
||||||
if (!server) {
|
if (!server) {
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
@ -168,101 +166,100 @@ int main(int argc, char *argv[])
|
|||||||
qstring = tmp;
|
qstring = tmp;
|
||||||
server = whichwhois(qstring);
|
server = whichwhois(qstring);
|
||||||
|
|
||||||
retry:
|
|
||||||
switch (server[0]) {
|
|
||||||
case 0:
|
|
||||||
if (!(server = getenv("WHOIS_SERVER")))
|
|
||||||
server = DEFAULTSERVER;
|
|
||||||
if (verb)
|
|
||||||
printf(_("Using default server %s.\n"), server);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
puts(_("This TLD has no whois server, but you can access the "
|
|
||||||
"whois database at"));
|
|
||||||
case 2:
|
|
||||||
puts(server + 1);
|
|
||||||
exit(0);
|
|
||||||
case 3:
|
|
||||||
puts(_("This TLD has no whois server."));
|
|
||||||
exit(0);
|
|
||||||
case 4:
|
|
||||||
if (verb)
|
|
||||||
puts(_("Connecting to whois.crsnic.net."));
|
|
||||||
sockfd = openconn("whois.crsnic.net", NULL);
|
|
||||||
server = query_crsnic(sockfd, qstring);
|
|
||||||
close(sockfd);
|
|
||||||
if (!server)
|
|
||||||
exit(0);
|
|
||||||
printf(_("\nFound a referral to %s.\n\n"), server);
|
|
||||||
alarm(60);
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
if (verb)
|
|
||||||
puts(_("Connecting to whois.nic.cc."));
|
|
||||||
sockfd = openconn("whois.nic.cc", NULL);
|
|
||||||
server = query_crsnic(sockfd, qstring);
|
|
||||||
close(sockfd);
|
|
||||||
if (!server)
|
|
||||||
exit(0);
|
|
||||||
printf(_("\nFound a referral to %s.\n\n"), server);
|
|
||||||
alarm(60);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
if (verb)
|
|
||||||
puts(_("Connecting to whois.publicinterestregistry.net."));
|
|
||||||
sockfd = openconn("whois.publicinterestregistry.net", NULL);
|
|
||||||
server = query_pir(sockfd, qstring);
|
|
||||||
close(sockfd);
|
|
||||||
if (!server)
|
|
||||||
exit(0);
|
|
||||||
printf(_("\nFound referral to %s.\n\n"), server);
|
|
||||||
alarm(60);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
puts(_("No whois server is known for this kind of object."));
|
|
||||||
exit(0);
|
|
||||||
case 6:
|
|
||||||
puts(_("Unknown AS number or IP network. Please upgrade this program."));
|
|
||||||
exit(0);
|
|
||||||
case 0x0A:
|
|
||||||
{
|
|
||||||
char *tmp6 = convert_6to4(qstring);
|
|
||||||
free(qstring);
|
|
||||||
qstring = tmp6;
|
|
||||||
printf(_("\nQuerying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n\n"), qstring);
|
|
||||||
server = whichwhois(qstring);
|
|
||||||
/*
|
|
||||||
* This code sucks enough that I can afford to use goto...
|
|
||||||
* Some day whichwhois() and queryformat() will be merged
|
|
||||||
* and will return a struct with status code, server name
|
|
||||||
* and query string.
|
|
||||||
*/
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
if (verb)
|
|
||||||
printf(_("Using server %s.\n"), server);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getenv("WHOIS_HIDE"))
|
handle_query(server, port, qstring, fstring);
|
||||||
hide_discl = 0;
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* server may be a server name from the command line, a server name got
|
||||||
|
* from whichwhois or an encoded command/message from whichwhois.
|
||||||
|
* server and port are allocated with malloc.
|
||||||
|
*/
|
||||||
|
const char *handle_query(const char *hserver, const char *hport,
|
||||||
|
const char *qstring, const char *fstring)
|
||||||
|
{
|
||||||
|
const char *server, *port = NULL;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
if (hport) {
|
||||||
|
server = strdup(hserver);
|
||||||
|
port = strdup(hport);
|
||||||
|
} else
|
||||||
|
split_server_port(hserver, &server, &port);
|
||||||
|
|
||||||
|
switch (server[0]) {
|
||||||
|
case 0:
|
||||||
|
if (!(server = getenv("WHOIS_SERVER")))
|
||||||
|
server = DEFAULTSERVER;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
puts(_("This TLD has no whois server, but you can access the "
|
||||||
|
"whois database at"));
|
||||||
|
puts(server + 1);
|
||||||
|
return NULL;
|
||||||
|
case 2:
|
||||||
|
puts(server + 1);
|
||||||
|
return NULL;
|
||||||
|
case 3:
|
||||||
|
puts(_("This TLD has no whois server."));
|
||||||
|
return NULL;
|
||||||
|
case 5:
|
||||||
|
puts(_("No whois server is known for this kind of object."));
|
||||||
|
return NULL;
|
||||||
|
case 6:
|
||||||
|
puts(_("Unknown AS number or IP network. Please upgrade this program."));
|
||||||
|
return NULL;
|
||||||
|
case 4:
|
||||||
|
if (verb)
|
||||||
|
puts(_("Connecting to whois.crsnic.net."));
|
||||||
|
sockfd = openconn("whois.crsnic.net", NULL);
|
||||||
|
server = query_crsnic(sockfd, qstring);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (verb)
|
||||||
|
puts(_("Connecting to whois.publicinterestregistry.net."));
|
||||||
|
sockfd = openconn("whois.publicinterestregistry.net", NULL);
|
||||||
|
server = query_pir(sockfd, qstring);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if (verb)
|
||||||
|
puts(_("Connecting to whois.nic.cc."));
|
||||||
|
sockfd = openconn("whois.nic.cc", NULL);
|
||||||
|
server = query_crsnic(sockfd, qstring);
|
||||||
|
break;
|
||||||
|
case 0x0A:
|
||||||
|
p = convert_6to4(qstring);
|
||||||
|
printf(_("\nQuerying for the IPv4 endpoint %s of a 6to4 IPv6 address.\n\n"), p);
|
||||||
|
server = whichwhois(p);
|
||||||
|
qstring = p; /* XXX leak */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!server)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
p = queryformat(server, fstring, qstring);
|
p = queryformat(server, fstring, qstring);
|
||||||
if (verb)
|
if (verb) {
|
||||||
|
printf(_("Using server %s.\n"), server);
|
||||||
printf(_("Query string: \"%s\"\n\n"), p);
|
printf(_("Query string: \"%s\"\n\n"), p);
|
||||||
strcat(p, "\r\n");
|
}
|
||||||
|
|
||||||
sockfd = openconn(server, port);
|
sockfd = openconn(server, port);
|
||||||
|
|
||||||
/*
|
strcat(p, "\r\n");
|
||||||
* Now we are connected and the query is supposed to complete quickly.
|
server = do_query(sockfd, p);
|
||||||
* This will help people who run whois ... | less
|
|
||||||
*/
|
|
||||||
alarm(0);
|
|
||||||
do_query(sockfd, p);
|
|
||||||
|
|
||||||
exit(0);
|
/* recursion is fun */
|
||||||
|
if (server) {
|
||||||
|
printf(_("\n\nFound a referral to %s.\n\n"), server);
|
||||||
|
handle_query(server, NULL, qstring, fstring);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FILE
|
#ifdef CONFIG_FILE
|
||||||
@ -271,9 +268,6 @@ const char *match_config_file(const char *s)
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
static const char delim[] = " \t";
|
static const char delim[] = " \t";
|
||||||
#ifdef HAVE_REGEXEC
|
|
||||||
regex_t re;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((fp = fopen(CONFIG_FILE, "r")) == NULL) {
|
if ((fp = fopen(CONFIG_FILE, "r")) == NULL) {
|
||||||
if (errno != ENOENT)
|
if (errno != ENOENT)
|
||||||
@ -286,6 +280,7 @@ const char *match_config_file(const char *s)
|
|||||||
const char *pattern, *server;
|
const char *pattern, *server;
|
||||||
#ifdef HAVE_REGEXEC
|
#ifdef HAVE_REGEXEC
|
||||||
int i;
|
int i;
|
||||||
|
regex_t re;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (p = buf; *p; p++)
|
for (p = buf; *p; p++)
|
||||||
@ -336,6 +331,9 @@ const char *match_config_file(const char *s)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Parses an user-supplied string and tries to guess the right whois server.
|
||||||
|
* Returns a statically allocated buffer.
|
||||||
|
*/
|
||||||
const char *whichwhois(const char *s)
|
const char *whichwhois(const char *s)
|
||||||
{
|
{
|
||||||
unsigned long ip;
|
unsigned long ip;
|
||||||
@ -424,9 +422,8 @@ char *queryformat(const char *server, const char *flags, const char *query)
|
|||||||
char *buf;
|
char *buf;
|
||||||
int i, isripe = 0;
|
int i, isripe = 0;
|
||||||
|
|
||||||
/* +2 for \r\n; +1 for NULL */
|
/* 64 bytes reserved for server-specific flags added later */
|
||||||
buf = malloc(strlen(flags) + strlen(query) + strlen(client_tag) + 4
|
buf = malloc(strlen(flags) + strlen(query) + strlen(client_tag) + 64);
|
||||||
+ 2 + 1);
|
|
||||||
*buf = '\0';
|
*buf = '\0';
|
||||||
for (i = 0; ripe_servers[i]; i++)
|
for (i = 0; ripe_servers[i]; i++)
|
||||||
if (strcmp(server, ripe_servers[i]) == 0) {
|
if (strcmp(server, ripe_servers[i]) == 0) {
|
||||||
@ -450,10 +447,17 @@ char *queryformat(const char *server, const char *flags, const char *query)
|
|||||||
puts(_("Warning: RIPE flags used with a traditional server."));
|
puts(_("Warning: RIPE flags used with a traditional server."));
|
||||||
strcat(buf, flags);
|
strcat(buf, flags);
|
||||||
}
|
}
|
||||||
/* FIXME: /e is not applied to .JP ASN */
|
|
||||||
if (!isripe && (strcmp(server, "whois.nic.mil") == 0 ||
|
/* why, oh why DENIC had to make whois "user friendly"?
|
||||||
|
* I hope that adding -T dn,ace will not break some queries.
|
||||||
|
*/
|
||||||
|
if (isripe && strcmp(server, "whois.denic.de") == 0 && domcmp(query, ".de")
|
||||||
|
&& !strchr(query, ' '))
|
||||||
|
sprintf(buf, "-T dn,ace -C US-ASCII %s", query);
|
||||||
|
else if (!isripe && (strcmp(server, "whois.nic.mil") == 0 ||
|
||||||
strcmp(server, "whois.nic.ad.jp") == 0) &&
|
strcmp(server, "whois.nic.ad.jp") == 0) &&
|
||||||
strncasecmp(query, "AS", 2) == 0 && isasciidigit(query[2]))
|
strncasecmp(query, "AS", 2) == 0 && isasciidigit(query[2]))
|
||||||
|
/* FIXME: /e is not applied to .JP ASN */
|
||||||
sprintf(buf, "AS %s", query + 2); /* fix query for DDN */
|
sprintf(buf, "AS %s", query + 2); /* fix query for DDN */
|
||||||
else if (!isripe && strcmp(server, "whois.nic.ad.jp") == 0) {
|
else if (!isripe && strcmp(server, "whois.nic.ad.jp") == 0) {
|
||||||
char *lang = getenv("LANG"); /* not a perfect check, but... */
|
char *lang = getenv("LANG"); /* not a perfect check, but... */
|
||||||
@ -466,11 +470,50 @@ char *queryformat(const char *server, const char *flags, const char *query)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_query(const int sock, const char *query)
|
/* the first parameter contains the state of this simple state machine:
|
||||||
|
* HIDE_DISABLED: hidden text finished
|
||||||
|
* HIDE_UNSTARTED: hidden text not seen yet
|
||||||
|
* >= 0: currently hiding message hide_strings[*hiding]
|
||||||
|
*/
|
||||||
|
int hide_line(int *hiding, const char *const line)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (*hiding == HIDE_DISABLED) {
|
||||||
|
return 0;
|
||||||
|
} else if (*hiding == HIDE_UNSTARTED) { /* looking for smtng to hide */
|
||||||
|
for (i = 0; hide_strings[i] != NULL; i += 2) {
|
||||||
|
if (strncmp(line, hide_strings[i], strlen(hide_strings[i])) == 0) {
|
||||||
|
*hiding = i; /* start hiding */
|
||||||
|
return 1; /* and hide this line */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; /* don't hide this line */
|
||||||
|
} else if (*hiding > HIDE_UNSTARTED) { /* hiding something */
|
||||||
|
if (strncmp(line, hide_strings[*hiding + 1],
|
||||||
|
strlen(hide_strings[*hiding + 1])) == 0) {
|
||||||
|
*hiding = HIDE_DISABLED; /* stop hiding */
|
||||||
|
return 1; /* but hide the last line */
|
||||||
|
}
|
||||||
|
return 1; /* we are hiding, so do it */
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
/* XXX */
|
||||||
|
/* no match, the action depends on the state stored in *hiding */
|
||||||
|
if (*hiding > HIDE_UNSTARTED)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* returns a string which should be freed by the caller, or NULL */
|
||||||
|
const char *do_query(const int sock, const char *query)
|
||||||
{
|
{
|
||||||
char buf[2000], *p;
|
char buf[2000], *p;
|
||||||
FILE *fi;
|
FILE *fi;
|
||||||
int i = 0, hide = hide_discl;
|
int hide = hide_discl;
|
||||||
|
char *referral_server = NULL;
|
||||||
|
|
||||||
fi = fdopen(sock, "r");
|
fi = fdopen(sock, "r");
|
||||||
if (write(sock, query, strlen(query)) < 0)
|
if (write(sock, query, strlen(query)) < 0)
|
||||||
@ -479,39 +522,43 @@ void do_query(const int sock, const char *query)
|
|||||||
if (shutdown(sock, 1) < 0)
|
if (shutdown(sock, 1) < 0)
|
||||||
err_sys("shutdown");
|
err_sys("shutdown");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
while (fgets(buf, sizeof(buf), fi)) {
|
while (fgets(buf, sizeof(buf), fi)) {
|
||||||
if (hide == 1) {
|
/* 6bone-style referral:
|
||||||
if (strncmp(buf, hide_strings[i+1], strlen(hide_strings[i+1]))==0)
|
* % referto: whois -h whois.arin.net -p 43 as 1
|
||||||
hide = 2; /* stop hiding */
|
*/
|
||||||
continue; /* hide this line */
|
if (!referral_server && strncmp(buf, "% referto:", 10) == 0) {
|
||||||
}
|
|
||||||
if (hide == 0) {
|
|
||||||
for (i = 0; hide_strings[i] != NULL; i += 2) {
|
|
||||||
if (strncmp(buf, hide_strings[i], strlen(hide_strings[i]))==0){
|
|
||||||
hide = 1; /* start hiding */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hide == 1)
|
|
||||||
continue; /* hide the first line */
|
|
||||||
}
|
|
||||||
#ifdef EXT_6BONE
|
|
||||||
/* % referto: whois -h whois.arin.net -p 43 as 1 */
|
|
||||||
if (strncmp(buf, "% referto:", 10) == 0) {
|
|
||||||
char nh[256], np[16], nq[1024];
|
char nh[256], np[16], nq[1024];
|
||||||
|
|
||||||
if (sscanf(buf, REFERTO_FORMAT, nh, np, nq) == 3) {
|
if (sscanf(buf, REFERTO_FORMAT, nh, np, nq) == 3) {
|
||||||
int fd;
|
/* XXX we are ignoring the new query string */
|
||||||
|
referral_server = malloc(300);
|
||||||
if (verb)
|
sprintf(referral_server, "%s:%s", nh, np);
|
||||||
printf(_("Detected referral to %s on %s.\n"), nq, nh);
|
|
||||||
strcat(nq, "\r\n");
|
|
||||||
fd = openconn(nh, np);
|
|
||||||
do_query(fd, nq);
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
/* ARIN referrals:
|
||||||
|
* ReferralServer: rwhois://rwhois.fuse.net:4321/
|
||||||
|
* ReferralServer: whois://whois.ripe.net
|
||||||
|
*/
|
||||||
|
if (!referral_server && strncmp(buf, "ReferralServer:", 15) == 0) {
|
||||||
|
char *q;
|
||||||
|
|
||||||
|
q = strstr(buf, "rwhois://");
|
||||||
|
if ((q = strstr(buf, "rwhois://")))
|
||||||
|
referral_server = strdup(q + 9);
|
||||||
|
else if ((q = strstr(buf, "whois://")))
|
||||||
|
referral_server = strdup(q + 8);
|
||||||
|
if (referral_server) {
|
||||||
|
if ((q = strchr(referral_server, '/'))
|
||||||
|
|| (q = strchr(referral_server, '\n')))
|
||||||
|
*q = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hide_line(&hide, buf))
|
||||||
|
continue;
|
||||||
|
|
||||||
for (p = buf; *p && *p != '\r' && *p != '\n'; p++);
|
for (p = buf; *p && *p != '\r' && *p != '\n'; p++);
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
fprintf(stdout, "%s\n", buf);
|
fprintf(stdout, "%s\n", buf);
|
||||||
@ -520,15 +567,18 @@ void do_query(const int sock, const char *query)
|
|||||||
err_sys("fgets");
|
err_sys("fgets");
|
||||||
fclose(fi);
|
fclose(fi);
|
||||||
|
|
||||||
if (hide == 1)
|
if (hide > HIDE_UNSTARTED)
|
||||||
err_quit(_("Catastrophic error: disclaimer text has been changed.\n"
|
err_quit(_("Catastrophic error: disclaimer text has been changed.\n"
|
||||||
"Please upgrade this program.\n"));
|
"Please upgrade this program.\n"));
|
||||||
|
|
||||||
|
return referral_server;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *query_crsnic(const int sock, const char *query)
|
const char *query_crsnic(const int sock, const char *query)
|
||||||
{
|
{
|
||||||
char *temp, buf[2000], *ret = NULL;
|
char *temp, buf[2000], *ret = NULL;
|
||||||
FILE *fi;
|
FILE *fi;
|
||||||
|
int hide = hide_discl;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
|
|
||||||
temp = malloc(strlen(query) + 1 + 2 + 1);
|
temp = malloc(strlen(query) + 1 + 2 + 1);
|
||||||
@ -557,8 +607,8 @@ const char *query_crsnic(const int sock, const char *query)
|
|||||||
}
|
}
|
||||||
/* the output must not be hidden or no data will be shown for
|
/* the output must not be hidden or no data will be shown for
|
||||||
host records and not-existing domains */
|
host records and not-existing domains */
|
||||||
/* XXX feel free to send a patch to hide the long disclaimer */
|
if (!hide_line(&hide, buf))
|
||||||
fputs(buf, stdout);
|
fputs(buf, stdout);
|
||||||
}
|
}
|
||||||
if (ferror(fi))
|
if (ferror(fi))
|
||||||
err_sys("fgets");
|
err_sys("fgets");
|
||||||
@ -571,6 +621,7 @@ const char *query_pir(const int sock, const char *query)
|
|||||||
{
|
{
|
||||||
char *temp, buf[2000], *ret = NULL;
|
char *temp, buf[2000], *ret = NULL;
|
||||||
FILE *fi;
|
FILE *fi;
|
||||||
|
int hide = hide_discl;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
|
|
||||||
temp = malloc(strlen(query) + 5 + 2 + 1);
|
temp = malloc(strlen(query) + 5 + 2 + 1);
|
||||||
@ -599,7 +650,8 @@ const char *query_pir(const int sock, const char *query)
|
|||||||
*q = '\0';
|
*q = '\0';
|
||||||
state = 2;
|
state = 2;
|
||||||
}
|
}
|
||||||
fputs(buf, stdout);
|
if (!hide_line(&hide, buf))
|
||||||
|
fputs(buf, stdout);
|
||||||
}
|
}
|
||||||
if (ferror(fi))
|
if (ferror(fi))
|
||||||
err_sys("fgets");
|
err_sys("fgets");
|
||||||
@ -620,6 +672,8 @@ int openconn(const char *server, const char *port)
|
|||||||
struct sockaddr_in saddr;
|
struct sockaddr_in saddr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
alarm(60);
|
||||||
|
|
||||||
#ifdef HAVE_GETADDRINFO
|
#ifdef HAVE_GETADDRINFO
|
||||||
memset(&hints, 0, sizeof(struct addrinfo));
|
memset(&hints, 0, sizeof(struct addrinfo));
|
||||||
hints.ai_family = AF_UNSPEC;
|
hints.ai_family = AF_UNSPEC;
|
||||||
@ -656,6 +710,13 @@ int openconn(const char *server, const char *port)
|
|||||||
if (connect(fd, (struct sockaddr *)&saddr, sizeof(saddr)) < 0)
|
if (connect(fd, (struct sockaddr *)&saddr, sizeof(saddr)) < 0)
|
||||||
err_sys("connect");
|
err_sys("connect");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Now we are connected and the query is supposed to complete quickly.
|
||||||
|
* This will help people who run whois ... | less
|
||||||
|
*/
|
||||||
|
alarm(0);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -696,15 +757,31 @@ char *normalize_domain(const char *dom)
|
|||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
#ifdef HAVE_LIBIDN
|
#ifdef HAVE_LIBIDN
|
||||||
if (idna_to_ascii_from_locale(ret, &p, 0, 0) != IDNA_SUCCESS)
|
if (idna_to_ascii_lz(ret, &p, 0) != IDNA_SUCCESS) {
|
||||||
|
free(ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
free(ret);
|
free(ret);
|
||||||
ret = p;
|
ret = p;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* server and port have to be freed by the caller */
|
||||||
|
void split_server_port(const char *const input,
|
||||||
|
const char **server, const char **port) {
|
||||||
|
char *q, *p;
|
||||||
|
|
||||||
|
*server = q = strdup(input);
|
||||||
|
|
||||||
|
for (p = q; *p && *p != ':'; *q++ = tolower(*p++));
|
||||||
|
if (*p == ':')
|
||||||
|
*port = strdup(p + 1);
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
char *convert_6to4(const char *s)
|
char *convert_6to4(const char *s)
|
||||||
{
|
{
|
||||||
char *new = malloc(sizeof("255.255.255.255"));
|
char *new = malloc(sizeof("255.255.255.255"));
|
||||||
@ -719,11 +796,13 @@ char *convert_6to4(const char *s)
|
|||||||
|
|
||||||
unsigned long myinet_aton(const char *s)
|
unsigned long myinet_aton(const char *s)
|
||||||
{
|
{
|
||||||
int a, b, c, d;
|
unsigned long a, b, c, d;
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
return 0;
|
return 0;
|
||||||
if (sscanf(s, "%d.%d.%d.%d", &a, &b, &c, &d) != 4)
|
if (sscanf(s, "%lu.%lu.%lu.%lu", &a, &b, &c, &d) != 4)
|
||||||
|
return 0;
|
||||||
|
if (a > 255 || b > 255 || c > 255 || d > 255)
|
||||||
return 0;
|
return 0;
|
||||||
return (a << 24) + (b << 16) + (c << 8) + d;
|
return (a << 24) + (b << 16) + (c << 8) + d;
|
||||||
}
|
}
|
||||||
|
|||||||
10
whois.h
10
whois.h
@ -5,12 +5,16 @@
|
|||||||
/* Do *NOT* change it if you don't know what you are doing! */
|
/* Do *NOT* change it if you don't know what you are doing! */
|
||||||
#define IDSTRING "Md4.6"
|
#define IDSTRING "Md4.6"
|
||||||
|
|
||||||
|
#define HIDE_DISABLED -2
|
||||||
|
#define HIDE_UNSTARTED -1
|
||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
const char *whichwhois(const char *);
|
const char *whichwhois(const char *);
|
||||||
const char *match_config_file(const char *);
|
const char *match_config_file(const char *);
|
||||||
const char *whereas(const unsigned short);
|
const char *whereas(const unsigned short);
|
||||||
char *queryformat(const char *, const char *, const char *);
|
char *queryformat(const char *, const char *, const char *);
|
||||||
void do_query(const int, const char *);
|
int hide_line(int *hiding, const char *const line);
|
||||||
|
const char *do_query(const int, const char *);
|
||||||
const char *query_crsnic(const int, const char *);
|
const char *query_crsnic(const int, const char *);
|
||||||
const char *query_pir(const int, const char *);
|
const char *query_pir(const int, const char *);
|
||||||
int openconn(const char *, const char *);
|
int openconn(const char *, const char *);
|
||||||
@ -23,6 +27,10 @@ int domcmp(const char *, const char *);
|
|||||||
int domfind(const char *, const char *[]);
|
int domfind(const char *, const char *[]);
|
||||||
char *normalize_domain(const char *);
|
char *normalize_domain(const char *);
|
||||||
char *convert_6to4(const char *);
|
char *convert_6to4(const char *);
|
||||||
|
const char *handle_query(const char *server, const char *port,
|
||||||
|
const char *qstring, const char *fstring);
|
||||||
|
void split_server_port(const char *const input, const char **server,
|
||||||
|
const char **port);
|
||||||
|
|
||||||
void err_quit(const char *,...);
|
void err_quit(const char *,...);
|
||||||
void err_sys(const char *,...);
|
void err_sys(const char *,...);
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
Summary: Enhanced WHOIS client
|
Summary: Enhanced WHOIS client
|
||||||
Name: whois
|
Name: whois
|
||||||
Version: 4.6.8
|
Version: 4.6.11
|
||||||
Release: 1
|
Release: 1
|
||||||
License: GPL
|
License: GPL
|
||||||
Vendor: Marco d'Itri <md@linux.it>
|
Vendor: Marco d'Itri <md@linux.it>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user