/[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 138 - (hide annotations)
Tue Aug 4 15:25:09 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 889 byte(s)
quite huge refactoring

- config is now place to define client configuration
- upstream provide mirroring
- pxelinux creates per-client specific configurations
- various tweaks and cleanups

1 dpavlin 138 package upstream;
2    
3     use warnings;
4     use strict;
5     use autodie;
6    
7     use LWP::Simple qw/mirror RC_NOT_MODIFIED/;
8     use server;
9    
10     our $just_once;
11    
12     sub iso {
13     my $url = shift;
14    
15     return if $just_once->{$url}++;
16    
17     my $name = (caller(1))[3];
18     $name =~ s{config::}{} || die "caller isn't package config !";
19    
20     warn "$name $url";
21    
22     my $dir = "$server::base_dir/iso";
23     mkdir $dir unless -e $dir;
24    
25     my $file = $1 if $url =~ m{/([^/]+\.iso$)}i;
26     die "can't find iso file in $url" unless $file;
27    
28     my $iso = "$dir/$file";
29    
30     print STDERR "$name mirror $url";
31     mirror( $url, $iso )
32     == RC_NOT_MODIFIED
33     && warn(" not modified\n")
34     || warn(" done ", -s $iso, " bytes\n")
35     ;
36    
37     $file =~ s{\.iso$}{}i;
38     my $mnt = "$server::base_dir/tftp/$name";
39     mkdir $mnt unless -d $mnt;
40     $mnt .= '/iso';
41     mkdir $mnt unless -d $mnt;
42    
43     system("mount -t iso9660 | grep $mnt || sudo mount $iso $mnt -o loop -t iso9660 -v") == 0;
44     }
45    
46     1;

  ViewVC Help
Powered by ViewVC 1.1.26