/[pxelator]/lib/PXElator/pxelinux.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/pxelinux.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: 993 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 pxelinux;
2
3 use warnings;
4 use strict;
5 use autodie;
6
7 our $magic = 0xF100747E;
8
9 our $config_file; #= 'pxelinux.cfg/default';
10 our $path_prefix;
11 our $reboot_time; # 300 s
12
13 use server;
14 use File::Slurp;
15 use Carp qw/confess/;
16
17 sub config_for_ip {
18 my ($ip,$config) = @_;
19 confess "$ip not IP" unless $ip =~ m{^\d+\.\d+\.\d+\.\d+$};
20
21 $path_prefix = (caller(1))[3];
22 $path_prefix =~ s{config::}{} || die "caller isn't package config !";
23 $path_prefix .= '/';
24
25 warn "# $ip $path_prefix";
26
27 my $dir = "$server::base_dir/tftp";
28 $dhcpd::file = 'pxelinux.0';
29 symlink "/usr/lib/syslinux/pxelinux.0", "$dir/$dhcpd::file" unless -e "$dir/$dhcpd::file";
30
31 $dir .= "/$path_prefix";
32 mkdir $dir unless -d $dir;
33
34 mkdir "$dir/pxelinux.cfg" unless -e "$dir/pxelinux.cfg";
35
36 $config_file = 'pxelinux.cfg/' . uc sprintf "%02x%02x%02x%02x", split(/\./, $ip, 4);
37 warn "$ip config_file $config_file";
38
39 my $path = "$dir/$config_file";
40 write_file $path, $config;
41
42 warn "# config: $path ", -s $path;
43
44
45 }
46
47 1;

  ViewVC Help
Powered by ViewVC 1.1.26