--- 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||
+ , join(qq| | |, @cols)
+ , qq| | |
|
+ ;
+ }
+
+ # XXX sigh, dump dies if we don't do this
+# delete $o->{$_} foreach ( grep { ! defined $o->{$_} } keys %$o );
+
+ print $client qq||
+ , strftime( qq|%H:%M:%S | |, localtime($p->{time}) )
+ , map { qq|$_ | | } ( $p->{name} , html::pre_dump($o) )
+ , qq| |
\n|
+ ;
+ ( $s1, $s2 ) = ( $s2, $s1 );
+ $from_t = $p->{time};
+ });
+ print $client 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;