/[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

Diff of /lib/PXElator/upstream.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.138  
changed lines
  Added in v.516

  ViewVC Help
Powered by ViewVC 1.1.26