--- lib/PXElator/httpd.pm 2010/01/05 17:34:07 474 +++ lib/PXElator/httpd.pm 2010/07/21 18:29:33 514 @@ -18,6 +18,7 @@ #use JSON; use IO::Socket::INET; use Regexp::Common qw/net/; +use POSIX qw(strftime); our $title; @@ -50,7 +51,6 @@ use log; use x11; use amt; -use boolean; use daemons; use kvm; @@ -63,12 +63,12 @@ use ping; use wol; -use CouchDB; +use store; sub menu { - my $couch_url = $url; - $couch_url =~ s{:\d+.+}{:5984/_utils/}; + my $store_url = $url; + $store_url =~ s{:\d+.+}{:28017}; qq{
home @@ -77,7 +77,8 @@ brctl ip | -couchdb +MongoDB +latest | nmap client @@ -117,7 +118,7 @@ my $buff; my $pos = 0; - CouchDB::audit( 'static', { pid => $$, path => $path, type => $type, size => $size, block => $block, peerhost => $client->peerhost }); + store::audit( 'static', { pid => $$, path => $path, type => $type, size => $size, block => $block, peerhost => $client->peerhost }); progress_bar::start; @@ -145,12 +146,17 @@ qq|HTTP/1.1 302 Found\r\nContent-type: text/html\r\nLocation: $to\r\n\r\n| } +sub toggle { + my $v = shift; + return $v ? 0 : 1; +} + sub get_request { my ( $client, $path, $param ) = @_; server->refresh; - CouchDB::audit( 'request', { path => $path, param => $param, peerhost => $client->peerhost } ); + store::audit( 'request', { path => $path, param => $param, peerhost => $client->peerhost } ); $title = $path; @@ -241,7 +247,7 @@ eval '$server::' . $name . '= $param->{$name}'; } my @table = ( - 'debug' => qq|$debug|, + 'debug' => qq|$debug|, , 'new_clients' => qq|| ); @@ -264,6 +270,60 @@ | ; + } elsif ( $path =~ m{^/store/latest} ) { + print $client ok + , qq| + + | + , qq|| + ; + my ( $s1,$s2 ) = ( ' class=z', '' ); + my @cols; + + my $from_t = $param->{from_t}; + + store::query( $from_t, 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 +# 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|
%H:%M:%S$_| } ( $p->{name} , html::pre_dump($o) ) + , qq|
|, + qq|more| + ; + } elsif ( $path =~ m!^/client(?:/$RE{net}{IPv4}{-keep})?! ) { my $ip = $1; $title = $ip if $ip; @@ -358,7 +418,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:' @@ -368,7 +430,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;