]> git.etc.gen.nz Git - spong.git/commitdiff
added support for noping in $services field of %HOSTS
authorStephen L Johnson <sjohnson@monsters.org>
Tue, 18 Apr 2000 18:12:30 +0000 (18:12 +0000)
committerStephen L Johnson <sjohnson@monsters.org>
Tue, 18 Apr 2000 18:12:30 +0000 (18:12 +0000)
src/spong-network.pl

index a529411d7d6869a5327ed24ff6d75e6fe55aed84..819e98c3ead44f94c592104ef2c3e24f7ce881fa 100755 (executable)
@@ -66,6 +66,8 @@ Spong::Daemon::Daemonize()  # Daemonize if not signalling or a one-shot
 $SPONGSLEEP = $SPONGSLEEP{'spong-network'} || $SPONGSLEEP{'DEFAULT'} ||
               $SPONGSLEEP || 300;
 
+&munge_services();  # Convert service list in %HOSTS to a form that we like
+
 %PLUGINS = {};
 &config_funcs();
 
@@ -76,7 +78,7 @@ while( 1 ) {
       &debug( "checking network services on $host" );
 
       my $check;
-      foreach $check (('ping',split(/\s+/,$HOSTS{$host}->{'services'}))) {
+      foreach $check ( split(/\s+/,$HOSTS{$host}->{'services'}) ) {
            $0 = "spong-network (checking $host/$check)";
            &do_check($host,$check);
       }
@@ -419,6 +421,26 @@ sub pipe_handler {
    $SIG{$_[0]} = \&pipe_handler;
 }
 
+# This routine munges the services list in %HOSTS to a form that spong-network likes
+# it and converts/removed any meta-service names
+sub munge_services { 
+
+   my ( $service, $services, $host, $ping );
+   foreach $host ( @HOSTS_LIST )  {
+      $ping = 1; $services = "";
+
+      foreach $service ( split(/\s+/,$HOSTS{$host}->{'services'}) ) {
+         # noping is a meta-service that say to skip ping test for this host
+         if ( $service eq "noping" ) { $ping = 0; next; }
+         $service = " $service" if ( $services );
+         $services .= $service;
+      }
+
+      $services = "ping $services" if ( $ping );
+      $HOSTS{$host}->{'services'} = $services;
+   }
+}
+
 
 # Load all of the checks specified in all of the 'services' attribute
 # in %HOSTS
@@ -434,7 +456,7 @@ sub config_funcs {
   }
 
    my $plugin;
-   foreach $plugin ( ('ping',keys(%checks)) ) {
+   foreach $plugin ( keys(%checks) ) {
       &debug("Loading $plugin plugin");
       eval "require 'Spong/Network/plugins/check_$plugin';";
       if ( $@ ) { &error("Could not load $plugin plugin: $@"); }