/[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 138 - (show 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 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