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

Annotation of /lib/PXElator/upstream.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 508 - (hide annotations)
Wed Jul 21 16:17:46 2010 UTC (13 years, 9 months ago) by dpavlin
File size: 1476 byte(s)
check once in mirror_file so we can call it directly

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

  ViewVC Help
Powered by ViewVC 1.1.26