- From: Mercurial notifier <nobody@w3.org>
- Date: Thu, 05 Aug 2010 14:47:23 +0000
- To: link-checker updates <www-validator-cvs@w3.org>
changeset: 330:162ab080f542 user: ville date: Thu Dec 03 21:28:09 2009 +0000 files: META.yml Makefile.PL bin/checklink bin/checklink.pod description: Add support for cookies (command line mode only for now). diff -r a38b915a6b71 -r 162ab080f542 META.yml --- a/META.yml Thu Dec 03 20:36:39 2009 +0000 +++ b/META.yml Thu Dec 03 21:28:09 2009 +0000 @@ -16,6 +16,7 @@ Getopt::Long: 2.17 HTML::Entities: 0 HTML::Parser: 3.2 + HTTP::Cookies: 0 HTTP::Request: 0 HTTP::Response: 1.5 Locale::Country: 0 diff -r a38b915a6b71 -r 162ab080f542 Makefile.PL --- a/Makefile.PL Thu Dec 03 20:36:39 2009 +0000 +++ b/Makefile.PL Thu Dec 03 21:28:09 2009 +0000 @@ -44,6 +44,9 @@ CGI::Carp => 0, CGI::Cookie => 0, + # Optional, required if using cookies: + HTTP::Cookies => 0, + # Required for the test suite: File::Spec => 0, Test::More => 0, diff -r a38b915a6b71 -r 162ab080f542 bin/checklink --- a/bin/checklink Thu Dec 03 20:36:39 2009 +0000 +++ b/bin/checklink Thu Dec 03 21:28:09 2009 +0000 @@ -5,7 +5,7 @@ # (c) 1999-2009 World Wide Web Consortium # based on Renaud Bruyeron's checklink.pl # -# $Id: checklink,v 4.170 2009-12-03 20:36:39 ville Exp $ +# $Id: checklink,v 4.171 2009-12-03 21:28:09 ville Exp $ # # This program is licensed under the W3C(r) Software License: # http://www.w3.org/Consortium/Legal/copyright-software @@ -283,7 +283,7 @@ $PROGRAM = 'W3C-checklink'; $VERSION = '4.5'; $REVISION = sprintf('version %s (c) 1999-2009 W3C', $VERSION); - my ($cvsver) = q$Revision: 4.170 $ =~ /(\d+[\d\.]*\.\d+)/; + my ($cvsver) = q$Revision: 4.171 $ =~ /(\d+[\d\.]*\.\d+)/; $AGENT = sprintf('%s/%s [%s] %s', $PROGRAM, $VERSION, $cvsver, (W3C::UserAgent::USE_ROBOT_UA @@ -396,6 +396,7 @@ Redirects => 1, Dir_Redirects => 1, Accept_Language => $cmdline ? undef : $ENV{HTTP_ACCEPT_LANGUAGE}, + Cookies => undef, No_Referer => 0, Hide_Same_Realm => 0, Depth => 0, # < 0 means unlimited recursion. @@ -445,6 +446,17 @@ $ua->delay($Opts{Sleep_Time}/60); } $ua->timeout($Opts{Timeout}); +# Set up cookie stash if requested +if (defined($Opts{Cookies})) { + require HTTP::Cookies; + my $cookie_file = $Opts{Cookies}; + if ($cookie_file eq 'tmp') { + $cookie_file = undef; + } elsif ($cookie_file =~ /^(.*)$/) { + $cookie_file = $1; # untaint + } + $ua->cookie_jar(HTTP::Cookies->new(file => $cookie_file, autosave => 1)); +} eval { $ua->allow_private_ips($Opts{Allow_Private_IPs}); }; @@ -658,6 +670,7 @@ 't|timeout=i' => \$Opts{Timeout}, 'S|sleep=i' => \$Opts{Sleep_Time}, 'L|languages=s' => \$Opts{Accept_Language}, + 'c|cookies=s' => \$Opts{Cookies}, 'R|no-referer' => \$Opts{No_Referer}, 'D|depth=i' => sub { $Opts{Depth} = $_[1] unless $_[1] == 0; }, @@ -797,6 +810,8 @@ specified multiple times. -L, --languages LANGS Accept-Language header to send. The special value 'auto' causes autodetection from the environment. + -c, --cookies FILE Use cookies, load/save them in FILE. The special + value 'tmp' causes non-persistent use of cookies. -R, --no-referer Do not send the Referer HTTP header. -q, --quiet No output if no errors are found (implies -s). -v, --verbose Verbose mode. @@ -971,12 +986,22 @@ my $s = $Opts{Sleep_Time} == 1 ? '' : 's'; my $acclang = $Opts{Accept_Language} || '(not sent)'; my $send_referer = $Opts{No_Referer} ? 'not sent' : 'sending'; - printf(<<'EOF', $Accept, $acclang, $send_referer, $Opts{Sleep_Time}, $s); + my $cookies = 'not used'; + if (defined($Opts{Cookies})) { + $cookies = 'used, '; + if ($Opts{Cookies} eq 'tmp') { + $cookies .= 'non-persistent'; + } else { + $cookies .= "file $Opts{Cookies}"; + } + } + printf(<<'EOF', $Accept, $acclang, $send_referer, $cookies, $Opts{Sleep_Time}, $s); Settings used: - Accept: %s - Accept-Language: %s - Referer: %s +- Cookies: %s - Sleeping %d second%s between requests to each server EOF printf("- Excluding links matching %s\n", $Opts{Exclude}) diff -r a38b915a6b71 -r 162ab080f542 bin/checklink.pod --- a/bin/checklink.pod Thu Dec 03 20:36:39 2009 +0000 +++ b/bin/checklink.pod Thu Dec 03 21:28:09 2009 +0000 @@ -1,4 +1,4 @@ -$Id: checklink.pod,v 1.27 2009-11-04 18:44:17 mernst Exp $ +$Id: checklink.pod,v 1.28 2009-12-03 21:28:09 ville Exp $ =head1 NAME @@ -115,6 +115,12 @@ a value to be detected from the C<LANG> environment variable, and sent if found. In CGI mode, the default is to send the value received from the client as is. + +=item B<-c, --cookies> I<cookie-file> + +Use cookies, load/save them in I<cookie-file>. The special value +C<tmp> causes non-persistent use of cookies, i.e. they are used but +only stored in memory for the duration of this link checker run. =item B<-R, --no-referer>
Received on Thursday, 5 August 2010 14:47:40 UTC