- From: Ville Skytta <ville@dev.w3.org>
- Date: Sat, 06 Nov 2004 11:39:30 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/perl/modules/W3C/LinkChecker/bin
In directory hutz:/tmp/cvs-serv17507/bin
Modified Files:
checklink
Log Message:
Make Net::IP and other modules required for restricting access to
private IP addresses optional.
Index: checklink
===================================================================
RCS file: /sources/public/perl/modules/W3C/LinkChecker/bin/checklink,v
retrieving revision 4.8
retrieving revision 4.9
diff -u -d -r4.8 -r4.9
--- checklink 12 Oct 2004 21:54:11 -0000 4.8
+++ checklink 6 Nov 2004 11:39:28 -0000 4.9
@@ -92,9 +92,6 @@
use HTML::Parser 3.00 qw();
use HTTP::Request qw();
use HTTP::Response qw();
-use Net::hostent qw(gethostbyname);
-use Net::IP qw();
-use Socket qw(inet_ntoa);
use Time::HiRes qw();
use URI qw();
use URI::Escape qw();
@@ -214,6 +211,22 @@
);
undef $cmdline;
+unless ($Opts{Allow_Private_IPs}) {
+ eval {
+ require Net::IP;
+ require Socket;
+ Socket->import('inet_ntoa');
+ require Net::hostent;
+ };
+ if ($@) {
+ die <<".EOF.";
+Allow_Private_IPs is false; this feature requires the Net::IP, Socket, and
+Net::hostent modules:
+$@
+.EOF.
+ }
+}
+
# Global variables
# What is our query?
my $query;
@@ -1778,19 +1791,19 @@
sub ip_allowed ($)
{
my ($uri) = @_;
+ return undef if $Opts{Allow_Private_IPs}; # Short-circuit
+
my $hostname = undef;
eval { $hostname = $uri->host() }; # Not all URIs implement host()...
return undef unless $hostname;
my $addr = my $iptype = my $resp = undef;
- if (my $host = gethostbyname($hostname)) {
+ if (my $host = Net::hostent::gethostbyname($hostname)) {
$addr = inet_ntoa($host->addr()) if $host->addr();
if ($addr && (my $ip = Net::IP->new($addr))) {
$iptype = $ip->iptype();
}
}
- $iptype = 'PUBLIC'
- if ($iptype && $iptype eq 'PRIVATE' && $Opts{Allow_Private_IPs});
if ($iptype && $iptype ne 'PUBLIC') {
$resp = HTTP::Response->new(403,
'Checking non-public IP address disallowed by link checker configuration');
Received on Saturday, 6 November 2004 11:39:30 UTC