blob: 80e95ef1efd06055e4fb7668fa98d5d4318e6584 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#!/usr/bin/perl
use strict ;
use LWP::Simple ; ;
use HTML::LinkExtor ;
my @upstream_url =
(
"http://grsecurity.net/test.php",
"http://grsecurity.net/download_stable.php"
) ;
my $file_pattern = "grsecurity-";
my @allowed_suffixes = ( ".patch", ".patch.sig" ) ;
my %currently_available = () ;
sub sane
{
my ( $name ) = @_ ;
return 0 if $name eq "" ;
return 0 if $name =~ / / ;
my $got_suffix = 0 ;
foreach my $suffix ( @allowed_suffixes )
{
$got_suffix = 1 if $name =~ /$suffix$/ ;
}
return $got_suffix ;
}
sub get_currently_available
{
my $parser ;
my @links ;
foreach my $uurl ( @upstream_url )
{
$parser = HTML::LinkExtor->new( undef, $uurl ) ;
$parser->parse( get( $uurl ) )->eof ;
@links = $parser->links ;
foreach my $ref ( @links )
{
my $file_url = ${$ref}[2] ;
my $file_name = $file_url ;
$file_name =~ s/^.*\/(.*)$/$1/ ;
next unless sane( $file_name ) ;
$currently_available{ $file_name } = $file_url ;
}
}
}
sub download_newly_available
{
my $downloads = "" ;
foreach my $file_name ( sort keys %currently_available )
{
next unless $file_name =~ /$file_pattern/ ;
print "\tDownloading $file_name ... " ;
my $file_url = $currently_available{ $file_name } ;
if ( getstore( $file_url, $file_name ) )
{
print "OK\n" ;
$downloads .= "\t$file_name\n" ;
}
else
{
print "FAIL\n" ;
}
}
return $downloads ;
}
sub print_successful_downloads
{
my ( $downloads ) = @_ ;
if( $downloads ne "" )
{
print "\n\nSuccessfully downloaded files from upstream:\n\n" ;
print $downloads ;
print "\n\n" ;
}
else
{
print "\n\nNo files downloaded from upstream --- nothing to report.\n\n" ;
print "\n\n" ;
}
}
sub main
{
get_currently_available() ;
my $downloads = download_newly_available() ;
print_successful_downloads( $downloads ) ;
}
main() ;
|