--- lib/PXElator/html.pm 2009/07/29 19:57:07 43 +++ lib/PXElator/html.pm 2009/09/08 20:45:24 404 @@ -1,14 +1,121 @@ package html; +use Data::Dump qw/dump/; +use amt; + sub table { my $cols = shift; + my $th; + + if ( $cols < 0 ) { + $cols = abs($cols); + $th .= qq|
}g; + $html .= qq| |
$row |
| . join(' ', @_) . qq|| if @_; +} + +sub pre_dump { + my $data = shift; + my $dump = dump( $data ); + $dump =~ s{"([^"]+)"(\s*=>)}{$1 $2}gs; + $dump =~ s{"([^"]*)"}{"$1"}gs; + qq|
$dump|; +} + +sub conf { + my ($ip,$conf,$format) = @_; + my @editable = splice(@_,3); + + warn "# conf ",dump( $ip, $conf, $format, [ @editable ] ); + + $format ||= 'inline'; + + my @opts = map { + my $name = $_; + my $html = $conf->{$name}; + + if ( $format eq 'edit' && grep { m/^$name$/ } @editable ) { + $size = length($html); + ( $name, qq|| ) + } else { + if ( $name eq 'amt' ) { + my $amt_ip = amt::ip($ip,$html); + $html = qq|$amt_ip|; + + if ( $format ne 'inline' ) { + my $power = amt::power_on($ip); + $html .= qq| power: | + . ( $power + ? qq|on| + : qq|off| + ); + client::conf( $ip, 'power' => $power ? 'on' : 'off' ); + } + } elsif ( $name eq 'ssh' ) { + $html =~ s{\s(\S{16}).+(\S{16})\s}{ $1..$2 }; + chomp($html); + } elsif ( $name eq 'kvm' ) { + $html = qq|$html|; + } + $html = qq|$html| + unless + $html =~ s{\b(\S+)\t(\S+)\t(\S+)\b}{$3 }gs; + + if ( $format =~ /edit|table/ ) { + ( $name, $html ); + } else { + qq|