SVN: toys/fun/rsget.pl
sparky
sparky at pld-linux.org
Fri Apr 17 19:57:20 CEST 2009
Author: sparky
Date: Fri Apr 17 19:57:20 2009
New Revision: 10331
Modified:
toys/fun/rsget.pl
Log:
- add multiple output address/interface support
Modified: toys/fun/rsget.pl
==============================================================================
--- toys/fun/rsget.pl (original)
+++ toys/fun/rsget.pl Fri Apr 17 19:57:20 2009
@@ -77,7 +77,7 @@
$move = "\033[" . $steps . "B";
}
my $tl = length $text;
- substr $text, 15, $tl - $columns + 3, '...'
+ substr $text, 22, $tl - $columns + 3, '...'
if $tl > $columns;
print $move . "\r\033[K" . $text;
@@ -129,7 +129,7 @@
$self->{file_name} = $fn;
}
my $net = $self->{obj}->{net};
- $self->{obj}->{netname} = "[$net] $fn: ";
+ $self->{obj}->{netname} =~ s/] .*/] $fn: /;
}
{
@@ -185,8 +185,11 @@
};
$curl->setopt( CURLOPT_PRIVATE, $id );
-
- if ( $opts{cookies} ) {
+ if ( $obj->{outaddr} ) {
+ $curl->setopt( CURLOPT_INTERFACE, $obj->{outaddr} );
+ }
+
+ if ( defined $opts{cookies} ) {
$curl->setopt( CURLOPT_COOKIEJAR, $opts{cookies} );
$curl->setopt( CURLOPT_COOKIEFILE, $opts{cookies} );
}
@@ -197,7 +200,7 @@
$curl->setopt( CURLOPT_HTTPHEADER, $curl_headers );
$curl->setopt( CURLOPT_URL, $url );
$curl->setopt( CURLOPT_REFERER, $opts{referer} )
- if $opts{referer};
+ if defined $opts{referer};
$curl->setopt( CURLOPT_ENCODING, 'gzip,deflate' );
$curl->setopt( CURLOPT_CONNECTTIMEOUT, 20 );
@@ -362,6 +365,22 @@
package Get; # {{{
use URI;
+my @outaddr;
+
+sub add_outaddr
+{
+ my $newaddr = shift;
+ NEW_IP: foreach my $ip ( split /[ ,]+/, $newaddr ) {
+ foreach my $outaddr ( @outaddr ) {
+ if ( $ip eq $outaddr ) {
+ print "Address $ip already on the list\n";
+ next NEW_IP;
+ }
+ }
+ print "Adding $ip address\n";
+ push @outaddr, $ip;
+ }
+}
my %running;
sub makenew
@@ -374,6 +393,9 @@
shift;
$slots = shift;
}
+ if ( scalar @outaddr > $slots ) {
+ $slots = scalar @outaddr;
+ }
return {} if $gotlist{ $url };
$running{ $net } = {} unless exists $running{ $net };
@@ -385,6 +407,22 @@
}
}
+ my $outaddr = undef;
+ if ( scalar @outaddr ) {
+ FIND_IP: foreach my $maybe_outaddr ( @outaddr ) {
+ foreach my $id ( keys %$rn ) {
+ if ( $rn->{ $id }->{outaddr} eq $maybe_outaddr ) {
+ next FIND_IP;
+ }
+ }
+ $outaddr = $maybe_outaddr;
+ }
+ # no IP found ?
+ return {}
+ unless defined $outaddr;
+ }
+ my $outaddrstr = $outaddr ? "[$outaddr]" : "";
+
my $id = 1;
++$id while exists $rn->{ $id };
@@ -400,7 +438,8 @@
try => 0,
line => $line,
net => $net,
- netname => "[$net] $fn: ",
+ netname => "[$net]$outaddrstr $fn: ",
+ outaddr => $outaddr,
};
$rn->{ $id } = bless $self, $class;
@@ -428,8 +467,9 @@
$self->{curl_next} = $next_stage;
Curl::start( $url, $self,
- ($self->{referer} ? ( referer => $self->{referer} ) : ()),
- ($self->{cookies} ? ( cookies => $self->{cookies} ) : ()),
+ (referer => $self->{referer}),
+ (cookies => $self->{cookies}),
+ (outaddr => $self->{outaddr}),
@_ );
}
@@ -1234,7 +1274,14 @@
# }}}
package main; # {{{
-my $get_list = shift @ARGV || 'get.list';
+my $get_list = 'get.list';
+while ( my $arg = shift @ARGV ) {
+ if ( $arg eq '-i' ) {
+ Get::add_outaddr( shift @ARGV || die "argument missing" );
+ } else {
+ $get_list = $arg;
+ }
+}
print "Using '$get_list' file list\n";
die "Can't read the list\n" unless -r $get_list;
More information about the pld-cvs-commit
mailing list