7 use Data::Dump qw/dump/;
8 use LWP::Simple qw/mirror RC_NOT_MODIFIED/;
13 my ( $url, $file ) = @_;
14 warn "mirror_file $url -> $file\n";
17 && warn(" not modified\n")
18 || warn(" done ", -s $file, " bytes\n")
22 my $once_path = '/tmp/pxelator.once';
23 our $just_once = retrieve $once_path if -e $once_path;
26 return if $just_once->{$what}++;
27 store $just_once, $once_path;
34 return if ! first_time($url);
36 my $name = (caller(1))[3];
37 $name =~ s{config::}{} || die "caller isn't package config !";
41 my $dir = "$server::base_dir/iso";
42 mkdir $dir unless -e $dir;
44 my $file = $1 if $url =~ m{/([^/]+\.iso$)}i;
45 die "can't find iso file in $url" unless $file;
47 my $iso = "$dir/$file";
49 mirror_file( $url, $iso );
51 $file =~ s{\.iso$}{}i;
52 my $mnt = "$server::base_dir/tftp/$name";
53 mkdir $mnt unless -d $mnt;
55 mkdir $mnt unless -d $mnt;
57 system("mount -t iso9660 | grep $name/iso || sudo mount $iso $mnt -o loop -t iso9660 -v") == 0;
65 push @files, $1 if $url =~ s{/([^/]+)$}{};
68 my $name = (caller(1))[3];
69 $name =~ s{config::}{} || die "caller isn't package config !";
71 my $path = "$server::base_dir/tftp/$name";
72 mkdir $path unless -d $path;
74 warn "# files $url ",dump( @files ), " -> $path\n";
76 foreach my $file ( @files ) {
77 mirror_file( "$url/$file", "$path/$file" )
78 if ! -e "$path/$file" || first_time( "$url/$file" );