report error without nmap output
[pxelator] / lib / PXElator / client.pm
index 7d49920..13ca3fd 100644 (file)
@@ -50,7 +50,8 @@ sub conf {
        }
 
        my $path = ip_path $ip;
-       mkdir $path unless -d $path;
+       mkdir $path unless -e $path;
+       warn "WARNING: $path not directory" unless -d $path;
        $path .= '/' . $name;
 
        if ( defined $value ) {
@@ -62,6 +63,8 @@ sub conf {
                write_file $path, $default;
                warn "default $path = $default";
                $value = $default;
+       } elsif ( -l $path ) {
+               $value = readlink $path;
        } elsif ( -f $path ) {
                $value = read_file $path;
                chomp $value;
@@ -78,7 +81,11 @@ sub all_conf {
        foreach my $file ( glob("$path/*"), glob("$path/*/*") ) {
                my $name = $file;
                $name =~ s{^$path/+}{} || die "can't remove $path from $name";
-               $conf->{ $name } = read_file $file if -f $file;
+               next if -d $file;
+               $conf->{ $name } =
+                       -l $file ? readlink  $file :
+                       -f $file ? read_file $file :
+                       '?';
        }
        return $conf;
 }
@@ -175,7 +182,7 @@ sub all_ips {
 sub remove {
        my $ip = shift;
        if ( my $mac = mac_from_ip $ip ) {
-               unlink "$server::conf/mac/$mac";
+               unlink mac_path($mac);
        }
        rmtree "$server::conf/ip/$ip";
 }
@@ -202,6 +209,7 @@ sub rebuild_mac_links {
                my $mac = ip_path $ip, 'mac';
                if ( -e $mac ) {
                        $mac = read_file $mac;
+                       chomp $mac;
                        save_ip_mac( $ip, $mac );
                        warn "## $ip $mac\n";
                }