--- lib/PXElator/httpd.pm 2010/01/23 20:47:17 487 +++ lib/PXElator/httpd.pm 2010/08/26 19:29:18 522 @@ -18,7 +18,7 @@ #use JSON; use IO::Socket::INET; use Regexp::Common qw/net/; -use YAML; +use POSIX qw(strftime); our $title; @@ -77,8 +77,8 @@ brctl ip | -store -query +MongoDB +latest | nmap client @@ -270,20 +270,65 @@ | ; - } elsif ( $path =~ m{^/store/query} ) { + } elsif ( $path =~ m{^/store/latest} ) { print $client ok + , qq| + + | , qq|| ; - store::query( sub { + my ( $s1,$s2 ) = ( ' class=z', '' ); + my @cols; + + my $from_t = $param->{from_t}; + + my $q; + $q->{'package.time'} = { '$lt' => $from_t * 1 } if $from_t; +# $q->{'package.name'} = { '$ne' => 'syslogd' }; + $q->{'package.name'} = { '$ne' => 'dhcpd' }; +# $q->{'package.name'} = { '$ne' => [ 'dhcpd', 'dnsd' ] }; + $q->{'tag'} = { '$ne' => 'CRON' }; + store::query( $q, sub { my $o = shift; my $p = delete( $o->{package} ); delete( $o->{_id} ); + + if ( ! @cols ) { + #@cols = keys %$p; + @cols = qw( time name ); + print $client qq|| + ; + } + # XXX sigh, dump dies if we don't do this - my $tmp = delete( $o->{param} ); - $o->{param} = $tmp if defined $tmp; - print $client qq|\n|; +# delete $o->{$_} foreach ( grep { ! defined $o->{$_} } keys %$o ); + + print $client qq|| + , strftime( qq||, localtime($p->{time}) ) + , map { qq|\n| + ; + ( $s1, $s2 ) = ( $s2, $s1 ); + $from_t = $p->{time}; }); - print $client qq|
| + , join(qq||, @cols) + , qq|
|, join(qq||, map { $p->{$_} } keys %$p ), qq|
|, dump( $o ), qq|
%H:%M:%S$_| } ( $p->{name} , html::pre_dump($o) ) + , qq|
|; + print $client qq||, + qq|more| + ; } elsif ( $path =~ m!^/client(?:/$RE{net}{IPv4}{-keep})?! ) { my $ip = $1; @@ -379,7 +424,9 @@ my $mac = delete $conf->{mac} || ''; my $dev = $arp->{$mac}; - next unless $dev || $param->{all}; + my $in_dhcp_range = ip::in_dhcp_range($ip); + + next unless $dev || $param->{all} || $in_dhcp_range; my $style = 'style="color:' @@ -389,7 +436,7 @@ $style ||= ''; my $ip_text = qq|$ip|; - $ip_text = qq|$ip| if ip::in_dhcp_range($ip); + $ip_text = qq|$ip| if $in_dhcp_range; $dev = qq|$dev| if $dev;