implement client::conf to fetch/set (with default) client configuration
[pxelator] / lib / PXElator / server.pm
index 7671887..dda409c 100644 (file)
@@ -3,16 +3,40 @@ package server;
 use warnings;
 use strict;
 
+
 our $ip      = '172.16.10.1';
 our $netmask = '255.255.255.0';
 
 our ( $ip_from, $ip_to ) = ( 10, 100 );
 
-our $base_dir = '/home/dpavlin/llin/pxelator';
+our $domain_name = 'pxelator.lan';
+
+our $base_dir = '/srv/pxelator';
+
+our $conf = "$base_dir/conf/$ip";
+
+use Module::Refresh qw//;
+sub refresh { Module::Refresh->refresh };
 
-use config;
 
-our $debug;
-sub debug { $debug = config::shared('debug', @_) || 0 }
+mkdir $_ foreach grep { ! -d $_ } map { "$conf/$_" } ( 'ip', 'mac' );
+
+use File::Slurp;
+sub shared {
+       my ($name, $value) = @_;
+
+       my $path ="$conf/$name";
+       if ( defined $value ) {
+               write_file $path, $value;
+               warn "update $path = $value";
+       } else {
+               $value = read_file $path if -e $path;
+       }
+       return $value;
+}
+
+sub debug { shared('debug', @_) || 0 }
 
 warn "loaded";
+
+1;