]> git.etc.gen.nz Git - spong.git/commitdiff
Added code to display Status History entries using histservice command.
authorStephen L Johnson <sjohnson@monsters.org>
Wed, 29 Dec 1999 04:30:02 +0000 (04:30 +0000)
committerStephen L Johnson <sjohnson@monsters.org>
Wed, 29 Dec 1999 04:30:02 +0000 (04:30 +0000)
src/spong-server.pl
src/www-spong.pl

index 8b70417b800bb04abd93cb35c5f37c2e098d78f6..f8f6b11c2640f97f4cbd0b8578599324b7a61aa5 100755 (executable)
@@ -12,6 +12,7 @@
 # (1) Rewritten so that it answered both updates and queries (Ed Jul 22, 1997)
 # (2) Added code to handle "*-purple" named status files (Stephen L Johnson  Jun 03, 1999)
 
+
 use lib "@@LIBDIR@@";
 
 use Spong::HostList;
@@ -230,7 +231,7 @@ sub listen_for_queries {
       # updates however, as we need to send back some information.  Query
       # requests are simple one line messages.
 
-      my $header = <CLIENT>; chomp $header;
+      my $header = <CLIENT>; chomp $header; $header =~ s/\r//;
       my( $query, $hosts, $type, $view, $other ) =
         ( $header =~ /^(\w+)\s+\[([^\]]*)\]\s+(\w+)\s+(\w+)\b\s*(.*)$/ );
 
@@ -254,6 +255,7 @@ sub listen_for_queries {
       if( $query eq "config" )   { &show_config( @args ); }
       if( $query eq "info" )     { &show_info( @args ); }
       if( $query eq "service" )  { &show_service( @args, $other ); }
+      if( $query eq "histservice" ) { &show_hist_service( @args, $other ); }
 
       close( CLIENT );
       select $output;
@@ -318,8 +320,16 @@ sub save_status {
    # color, then update the history table and state file as well.
 
    if( ! -f "$SPONGDB/$host/services/$service-$color" ) {
+      # Update the history file
       $data = "status $time $service $color $sum\n";
       &save_data( ">>", "$SPONGDB/$host/history/current", $data);
+
+      if ( $STATUS_HISTORY ) {
+         # Save the status update information
+         $data = "timestamp $start $time\ncolor $color\n$time $sum\n$message\n";
+         &save_data( ">>", "$SPONGDB/$host/history/status/$time-$service",
+                    $data);
+      }
    }
 
    &debug( "[$$] updating status for $host/$service/$color" );
@@ -597,6 +607,19 @@ sub show_service {
    }
 }
 
+sub show_hist_service {
+   my( $hosts, $type, $view, $other ) = @_;
+   my( $service, $time ) = split(/ /,$other);
+   my( $h );
+   eval { $h = Spong::HistoryService->new( $hosts, $service, $time ); };
+   if ( $h ) {
+      $h->summary();
+      $h->display( $type, $view );
+   } else {
+     print &fmt_error($type,"Invalid request, object $hosts $other does not exist"),"\n";
+   }
+}
+
 
 
 
index 55fefba86db2c24ecfd6cb04ac36c37619f6f2fa..0b63ff0b1b019c5a0ecfbb3281848bc96ea7052a 100755 (executable)
@@ -47,6 +47,7 @@ if( $ENV{'SCRIPT_NAME'} eq "" ) {
    my %opt;
    my @options = ( "help", "summary:s", "problems:s", "history:s", "host=s", 
                   "services=s", "stats=s", "config=s", "info=s", "service=s",
+                   "histservice=s",
                   "brief", "standard", "full" );
 
    $actionbar = 0;
@@ -75,6 +76,12 @@ if( $ENV{'SCRIPT_NAME'} eq "" ) {
       $opt = 1;
    }
 
+   if ( defined $opt{'histservice'} ) {
+      my( $host, $service, $time ) = split ( ':',  $opt{'histservice'} );
+      &histservice( $host, "$service $time" );
+      $opt=1;
+   }
+
    if( ! $opt ) { &summary( "all" ); }
 
    exit(0);
@@ -124,6 +131,8 @@ if( $cmd =~ m!^/info/(.*)$! )     { &info($1);     exit;}
 
 if( $cmd =~ m!^/service/(.*)/(.*)$! ) { &service( $1, $2 ); exit; }
 
+if( $cmd =~ m!^/histservice/(.*)/(.*)/(.*)$! ) { &histservice( $1, "$2 $3" ); exit; }
+
 # Need to do something when an invalid request comes through...
 exit(0);
 
@@ -362,6 +371,17 @@ sub service {
    &footer();
 }
 
+sub histservice {
+   my ($host, $service, $time ) = @_;
+   my $view = $main::view || "full";
+
+   &header( 0 );
+   print &query( $SPONGSERVER, "histservice", $host, "html", $view, $service,
+                 $time );
+   &footer();
+}
+  
+
 
 # Just print a little message to stdout showing what valid options are to 
 # the command line interface to spong, and then exit the program.