Files
bpfire/src/scripts/updatelists.pl

43 lines
1.3 KiB
Perl

#!/usr/bin/perl
use strict;
use LWP::UserAgent;
require "CONFIG_ROOT/general-functions.pl";
my @this;
my $return = &downloadlist();
if($return && $return->is_success) {
unless(open(LIST, ">CONFIG_ROOT/patches/available")) {
die "Could not open available lists database.";
}
flock LIST, 2;
@this = split(/----START LIST----\n/,$return->content);
print LIST $this[1];
close(LIST);
} else {
die "Could not download patches list.";
}
sub downloadlist {
unless(-e "CONFIG_ROOT/red/active") {
die "Not connected.";
}
my $downloader = LWP::UserAgent->new;
$downloader->timeout(5);
my %proxysettings;
&General::readhash("CONFIG_ROOT/proxy/settings", \%proxysettings);
if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
if ($proxysettings{'UPSTREAM_USER'}) {
$downloader->proxy("http","http://$proxysettings{'UPSTREAM_USER'}:$proxysettings{'UPSTREAM_PASSWORD'}@"."$peer:$peerport/");
} else {
$downloader->proxy("http","http://$peer:$peerport/");
}
}
return $downloader->get("http://www.ipcop.org/patches/${General::version}", 'Cache-Control', 'no-cache');
}