/[pxelator]/lib/PXElator/upstream.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /lib/PXElator/upstream.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 276 - (show annotations)
Thu Aug 20 17:36:17 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 1464 byte(s)
extracted first_time into once package
1 package upstream;
2
3 use warnings;
4 use strict;
5 use autodie;
6
7 use Data::Dump qw/dump/;
8 use LWP::Simple qw/mirror RC_NOT_MODIFIED/;
9 use server;
10 use once;
11
12 sub mirror_file {
13 my ( $url, $file ) = @_;
14 warn "mirror_file $url -> $file\n";
15 mirror( $url, $file )
16 == RC_NOT_MODIFIED
17 && warn(" not modified\n")
18 || warn(" done ", -s $file, " bytes\n")
19 ;
20 }
21
22 sub iso {
23 my $url = shift;
24
25 my $name = (caller(1))[3];
26 $name =~ s{config::}{} || die "caller isn't package config !";
27
28 warn "$name $url";
29
30 my $dir = "$server::base_dir/iso";
31 mkdir $dir unless -e $dir;
32
33 my $file = $1 if $url =~ m{/([^/]+\.iso$)}i;
34 die "can't find iso file in $url" unless $file;
35
36 my $iso = "$dir/$file";
37
38 mirror_file( $url, $iso ) if once::first_time $url;
39
40 $file =~ s{\.iso$}{}i;
41 my $mnt = "$server::base_dir/tftp/$name";
42 mkdir $mnt unless -d $mnt;
43 $mnt .= '/iso';
44 mkdir $mnt unless -d $mnt;
45
46 system("mount -t iso9660 | grep $name/iso || sudo mount $iso $mnt -o loop -t iso9660 -v") == 0;
47 }
48
49 sub files {
50 my $url = shift;
51 my @files = @_;
52
53 if ( ! @files ) {
54 push @files, $1 if $url =~ s{/([^/]+)$}{};
55 }
56
57 my $name = (caller(1))[3];
58 $name =~ s{config::}{} || die "caller isn't package config !";
59
60 my $path = "$server::base_dir/tftp/$name";
61 mkdir $path unless -d $path;
62
63 warn "# files $url ",dump( @files ), " -> $path\n";
64
65 foreach my $file ( @files ) {
66 mirror_file( "$url/$file", "$path/$file" )
67 if ! -e "$path/$file" || once::first_time( "$url/$file" );
68 }
69 }
70
71 1;

  ViewVC Help
Powered by ViewVC 1.1.26