diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/Makefile.tplt /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/Makefile.tplt
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/Makefile.tplt 2008-05-31 11:57:20.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/Makefile.tplt 2008-07-16 13:12:29.000000000 -0400
@@ -3,9 +3,9 @@
# Created: 2002-Jun-27
# Function: Makefile template
#
-# $Id: Makefile.tplt,v 1.173 2008/03/05 03:45:55 jaw Exp $
+# $Id: Makefile.tplt,v 1.175 2008/07/16 17:12:29 jaw Exp $
-VERSION = dev-20080531
+VERSION = dev-20080716
MESSAGE = This is unstable development code
INSTALL = please see the INSTALL document for the next steps
UPGRADE1 = be sure to install the new misc/argus.css and misc/argus.js files
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::Compute.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::Compute.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::Compute.pm 2008-05-31 13:29:10.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::Compute.pm 2008-06-25 12:03:16.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2007-Dec-22 12:27 (EST)
# Function: service for math calculations
#
-# $Id: Argus::Compute.pm,v 1.2 2007/12/31 01:24:30 jaw Exp $
+# $Id: Argus::Compute.pm,v 1.3 2008/06/25 16:03:16 jaw Exp $
# But the age of chivalry is gone; that of sophisters, economists,
# and calculators has succeeded.
@@ -174,6 +174,15 @@
$me->SUPER::isdown(@_);
}
+sub check_now {
+ my $me = shift;
+
+ # check all component srvcs
+ for my $s ( @{$me->{compute}{srvcs}} ){
+ $s->check_now();
+ }
+}
+
sub recycle {
my $me = shift;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::HashDir.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::HashDir.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::HashDir.pm 2008-02-03 10:07:47.000000000 -0500
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::HashDir.pm 2008-07-16 13:12:30.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2008-Jan-21 12:18 (EST)
# Function:
#
-# $Id$
+# $Id: Argus::HashDir.pm,v 1.1 2008/07/16 17:12:30 jaw Exp $
package Argus::HashDir;
use strict;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::RPC::UDP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::RPC::UDP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::RPC::UDP.pm 2005-02-13 23:06:28.000000000 -0500
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::RPC::UDP.pm 2008-07-16 23:42:08.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2004-Dec-26 13:41 (EST)
# Function: udp sunrpc testing
#
-# $Id: Argus::RPC::UDP.pm,v 1.5 2005/02/14 04:06:28 jaw Exp $
+# $Id: Argus::RPC::UDP.pm,v 1.6 2008/07/17 03:42:08 jaw Exp $
package Argus::RPC::UDP;
use Argus::RPC;
@@ -73,6 +73,8 @@
return $me->isdown( "UDP recv failed: $!", 'recv failed' )
unless defined($i);
+ return if $me->check_response($i);
+
$me->debug( 'UDP recv data' );
$me->{udp}{rbuffer} = $l;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::SNMP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::SNMP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::SNMP.pm 2008-03-04 22:45:56.000000000 -0500
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::SNMP.pm 2008-07-17 00:03:10.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 18:59 (EST)
# Function: testing of SNMP things - support for both v1, v2c and v3
#
-# $Id: Argus::SNMP.pm,v 1.6 2008/03/05 03:45:56 jaw Exp $
+# $Id: Argus::SNMP.pm,v 1.8 2008/07/17 04:03:10 jaw Exp $
# SNMP v1 => RFC 1157
# SNMP v2 => RFC 1905
@@ -82,6 +82,8 @@
# convert common v3 errors to user-friendly messages
my %v3errs =
(
+ '1.3.6.1.6.3.15.1.1.1.0' => 'unsupported security level',
+ '1.3.6.1.6.3.15.1.1.2.0' => 'time window expired',
'1.3.6.1.6.3.15.1.1.3.0' => 'wrong username?',
'1.3.6.1.6.3.15.1.1.4.0' => 'wrong engine-id?',
'1.3.6.1.6.3.15.1.1.5.0' => 'wrong password?',
@@ -744,6 +746,8 @@
return $me->m_isdown( "SNMP recv failed: $!", 'recv failed' )
unless defined($i);
+ return if $me->check_response($i);
+
$me->debug( "SNMP recv data" );
$me->{udp}{rbuffer} = $l; # for debugging
delete $me->{udp}{send} if $me->{snmp}{bulk};
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::SNMP::Helper.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::SNMP::Helper.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Argus::SNMP::Helper.pm 2008-05-31 14:16:03.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Argus::SNMP::Helper.pm 2008-07-16 13:12:30.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2007-Jun-24 17:04 (EDT)
# Function: look up interface names, to permit easier config
#
-# $Id: Argus::SNMP::Helper.pm,v 1.7 2008/03/05 03:45:56 jaw Exp $
+# $Id: Argus::SNMP::Helper.pm,v 1.9 2008/07/16 17:12:30 jaw Exp $
# let the config file say:
# oid: ifOperStatus[Serial1/0]
@@ -17,7 +17,8 @@
use vars qw(@ISA $doc);
my $MULTI_MAX = 32;
-my $FREQUENCY = 120;
+my $FREQUENCY = 30;
+my $TIMEOUT = 15;
my $OID_UPTIME = '1.3.6.1.2.1.1.3.0';
my $OID_IFNUMBER = '1.3.6.1.2.1.2.1.0';
@@ -25,6 +26,7 @@
my $OID_DSKPATH = '1.3.6.1.4.1.2021.9.1.2'; # by path
my $OID_DSKDEVS = '1.3.6.1.4.1.2021.9.1.3'; # by device
+# keep track of where helpers are enabled
my %host; # {host}{src}{ service, hostname, idxsrc, descr, nservices }
my %SRC =
@@ -55,6 +57,17 @@
snmph::descr => {}, # descr table data
snmph::rdescr => {}, # ditto. reversed
snmph::lastuptime => {}, # most recent uptime
+
+ snmph::snmp_helper_frequency => {
+ descr => 'how often the should the snmp helper be started, if needed',
+ attrs => ['config', 'top', 'timespec'],
+ versn => '3.6',
+ },
+ snmph::snmp_helper_timeout => {
+ descr => 'how long to wait for an snmp helper response before giving up',
+ attrs => ['config', 'top', 'timespec'],
+ versn => '3.6',
+ },
},
};
@@ -204,7 +217,8 @@
my $results = shift;
my $gotend;
my $gotupt;
-
+ my $gotextra;
+
my $src = $me->{snmph}{idxsrc};
my $ctabl = $me->{snmph}{phase} ? $SRC{$src}{oid}[ $me->{snmph}{phase} - 1 ] : undef;
my $ngot;
@@ -216,7 +230,8 @@
my( $table, $idx ) = $oid =~ /(.*)\.(\d+)$/;
if($val =~ /\# ){
- $gotend = 1;
+ # an error value. we are done.
+ $gotend = "value=$val";
next;
}
@@ -257,17 +272,16 @@
}
else{
- # $me->debug("WTF: $oid => $table, $idx");
+ $me->debug("got extra $oid => $val");
+ $gotextra = 1;
+ $gotend ||= "past the end";
}
}
- if( !$me->{snmph}{idxnumber} && $ngot ){
- $gotend = 1 unless $ngot == $MULTI_MAX;
- }
-
if( $gotend || $me->{snmph}{idxnumber} && ($me->{snmph}{idxfetch} >= $me->{snmph}{idxnumber}) ){
# got entire table
-
+ $gotend ||= "idxfetch >= idxnumber ($me->{snmph}{idxnumber})";
+
$me->next_phase();
if( ! $me->{snmph}{phase} ){
@@ -275,12 +289,14 @@
my $h = $me->{ip}{hostname};
my $s = $me->{snmph}{idxsrc};
$host{$h}{$s}{descr} = $me->{snmph}{rdescr};
- $me->debug("all results fetched. finished");
+ $me->debug("all results fetched. finished ($gotend)");
}
}
- if( !$ngot && !$gotupt ){
- return $me->isdown('unexpected responses');
+ return $me->isup() if $ngot || $gotupt;
+
+ if( $gotend && !$me->{snmph}{idxfetch} ){
+ return $me->isdown("unexpected responses");
}
$me->isup();
@@ -303,6 +319,7 @@
return $cf->error("do not know how to convert $me->{snmp}{idxname} for table $me->{snmp}{tabloid}")
unless $SRC{$src};
+ # is a helper already enabled for this?
if( $host{$host}{$src} ){
$host{$host}{$src}{service}{debug} = 1 if $me->{config}{debug};
$host{$host}{$src}{nservices} ++;
@@ -340,9 +357,8 @@
graph => 'no',
darp_mode => 'none',
- # RSN - configurable?
- frequency => $FREQUENCY,
- timeout => 15,
+ frequency => (::topconf('snmp_helper_frequency') || $FREQUENCY),
+ timeout => (::topconf('snmp_helper_timeout') || $TIMEOUT),
retries => 3,
retrydelay => 1, # chunk delay
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Conf.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Conf.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Conf.pm 2008-05-31 13:00:46.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Conf.pm 2008-06-25 12:03:16.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 09:13 (EST)
# Function: config file reading
#
-# $Id: Conf.pm,v 1.62 2008/02/03 03:00:42 jaw Exp $
+# $Id: Conf.pm,v 1.63 2008/06/25 16:03:16 jaw Exp $
# some bozo put a Config.pm in the standard perl dist
package Conf;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Configable.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Configable.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Configable.pm 2008-05-31 13:07:06.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Configable.pm 2008-06-25 12:03:16.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Dec-30 23:29 (EST)
# Function: configurable objects
#
-# $Id: Configable.pm,v 1.26 2008/02/03 03:00:42 jaw Exp $
+# $Id: Configable.pm,v 1.27 2008/06/25 16:03:16 jaw Exp $
package Configable;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DARP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DARP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DARP.pm 2008-05-31 13:03:35.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DARP.pm 2008-06-25 12:03:17.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2003-Jan-23 21:23 (EST)
# Function: Distributed Argus Redundancy Protocol
#
-# $Id: DARP.pm,v 1.29 2007/12/22 21:47:10 jaw Exp $
+# $Id: DARP.pm,v 1.30 2008/06/25 16:03:17 jaw Exp $
package DARP;
@ISA = qw(Configable);
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DARP::Conf.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DARP::Conf.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DARP::Conf.pm 2008-05-31 13:03:49.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DARP::Conf.pm 2008-06-25 12:03:17.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2003-Dec-04 16:53 (EST)
# Function: DARP Master (Server) config for each slave
#
-# $Id: DARP::Conf.pm,v 1.18 2007/12/22 17:22:13 jaw Exp $
+# $Id: DARP::Conf.pm,v 1.19 2008/06/25 16:03:17 jaw Exp $
# on darp master, darp::conf describes config for each slave.
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DNS::UDP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DNS::UDP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/DNS::UDP.pm 2004-09-18 17:05:22.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/DNS::UDP.pm 2008-07-16 23:42:08.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2004-Apr-28 12:55 (EDT)
# Function: UDP based DNS functions
#
-# $Id: DNS::UDP.pm,v 1.2 2004/09/18 21:05:22 jaw Exp $
+# $Id: DNS::UDP.pm,v 1.3 2008/07/17 03:42:08 jaw Exp $
package DNS::UDP;
use DNS;
@@ -72,6 +72,8 @@
return $me->isdown( "DNS/UDP recv failed: $!", 'recv failed' )
unless defined($i);
+ return if $me->check_response($i);
+
$me->debug( "DNS/UDP recv data" );
$me->{udp}{rbuffer} = $l; # for debugging
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Group.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Group.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Group.pm 2008-05-31 13:01:00.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Group.pm 2008-06-25 12:03:17.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 08:56 (EST)
# Function: the group class
#
-# $Id: Group.pm,v 1.42 2007/09/01 16:51:37 jaw Exp $
+# $Id: Group.pm,v 1.43 2008/06/25 16:03:17 jaw Exp $
package Group;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/MonEl.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/MonEl.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/MonEl.pm 2008-05-31 12:28:33.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/MonEl.pm 2008-06-25 12:03:17.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-02 17:11 (EST)
# Function: Monitor Element class
#
-# $Id: MonEl.pm,v 1.158 2008/03/03 15:45:17 jaw Exp $
+# $Id: MonEl.pm,v 1.159 2008/06/25 16:03:17 jaw Exp $
package MonEl;
@ISA = qw(Configable);
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/NotMe.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/NotMe.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/NotMe.pm 2008-05-31 13:01:32.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/NotMe.pm 2008-06-25 12:03:18.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Oct-22 16:06 (EDT)
# Function: Notification Method base class
#
-# $Id: NotMe.pm,v 1.39 2007/12/22 17:22:14 jaw Exp $
+# $Id: NotMe.pm,v 1.40 2008/06/25 16:03:18 jaw Exp $
package NotMe;
# but I seek my master, and my master seeks not me
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Notify.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Notify.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Notify.pm 2008-05-31 12:08:25.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Notify.pm 2008-06-25 12:03:18.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-12 20:06 (EDT)
# Function: Tell someone what happened
#
-# $Id: Notify.pm,v 1.74 2008/03/03 15:45:17 jaw Exp $
+# $Id: Notify.pm,v 1.75 2008/06/25 16:03:18 jaw Exp $
package Notify;
use NotMe;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Override.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Override.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Override.pm 2007-12-30 20:24:33.000000000 -0500
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Override.pm 2008-07-16 13:12:30.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-05 15:32 (EST)
# Function: handle overrides
#
-# $Id: Override.pm,v 1.24 2007/12/31 01:24:33 jaw Exp $
+# $Id: Override.pm,v 1.25 2008/07/16 17:12:30 jaw Exp $
use strict;
use vars qw(%inoverride);
@@ -166,9 +166,15 @@
sub cmd_override {
my $ctl = shift;
my $param = shift;
- my( $x );
- $x = $MonEl::byname{ $param->{object} };
+ if( $param->{expires} ){
+ eval {
+ $param->{expires} = ::timespec( $param->{expires} );
+ };
+ }
+
+ my $x = $MonEl::byname{ $param->{object} };
+
if( $x ){
if( ($param->{remove} eq 'yes') ? $x->override_remove($param->{user}, $param->{text})
: $x->override(%$param) ){
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Resolv.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Resolv.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Resolv.pm 2008-02-02 22:00:44.000000000 -0500
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Resolv.pm 2008-07-16 23:42:08.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2003-May-22 21:46 (EDT)
# Function: caching async resolver + re-resolver
#
-# $Id: Resolv.pm,v 1.24 2008/02/03 03:00:44 jaw Exp $
+# $Id: Resolv.pm,v 1.25 2008/07/17 03:42:08 jaw Exp $
# Wise to resolve, and patient to perform.
# -- Homer, Odyssey
@@ -227,7 +227,7 @@
$me->{passive} = 1;
$me->{nostats} = 1;
$me->{transient} = 1;
-
+
$me->{uname} = "Resolv_$n_resolv";
$n_resolv++;
@@ -426,6 +426,8 @@
$me->debug( $m );
return $me->done();
}
+
+ my($rport, $rip) = sockaddr_in( $i );
$me->debug( 'RESOLV recv data' );
$me->settimeout( $me->{srvc}{timeout} );
@@ -434,12 +436,6 @@
my $id = unpack( 'n', $l );
my $ec = unpack( 'x3 C', $l) & 0xF;
- # decode pkt
- my $r;
- unless( $ec ){
- eval{ $r = DNS::decode( $me, $l ); };
- }
-
# find matching query
my $d = $me->{resolv}{pending}{$id};
my $h = $d->{host};
@@ -448,12 +444,19 @@
$me->debug( "RESOLV recv qid=$id, rcode=$ec" );
- unless($h){
+ if( !$h || ($rip ne $me->{resolv}{nameserver}) || ($rport != $DNS_PORT) ){
# un-expected response?
- $me->debug( "RESOLV recv unexpected response id=$id" );
+ my $ripa = inet_ntoa($rip);
+ $me->debug( "RESOLV recv unexpected response from $ripa:$rport id=$id" );
return;
}
+ # decode pkt
+ my $r;
+ unless( $ec ){
+ eval{ $r = DNS::decode( $me, $l ); };
+ }
+
delete $pending{$h};
$me->{resolv}{n_responses} ++;
$me->{resolv}{rcvqidlast} = $id;
@@ -494,7 +497,7 @@
$cache{$h}{expire} = $^T;
add_todo( $h );
$me->debug("RESOLV recv nxdomain $h - retry now");
- };
+ }
}
}
@@ -502,11 +505,16 @@
}
# decode packet, find correct answer, there may be several...
-
+ my @allow = "$z.";
+
foreach my $a ( @{ $r->{answers} } ){
$me->debug( "RESOLV recv $a->{name} $a->{ttl} $a->{class} $a->{type} $a->{answer}" );
+ next unless grep {$_ eq $a->{name}} @allow;
+ push @allow, $a->{answer} if $a->{type} eq 'CNAME';
+
next unless $a->{type} eq 'A' || $a->{type} eq 'AAAA';
+
# if we have an answer, it always updates cache
$me->debug( "RESOLV - caching $h = $a->{answer}" );
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Service.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Service.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Service.pm 2008-05-31 13:01:14.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Service.pm 2008-06-25 12:03:18.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 08:56 (EST)
# Function: the service class
#
-# $Id: Service.pm,v 1.116 2008/03/03 15:45:17 jaw Exp $
+# $Id: Service.pm,v 1.117 2008/06/25 16:03:18 jaw Exp $
package Service;
@ISA = qw(MonEl BaseIO);
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/TCP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/TCP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/TCP.pm 2008-03-27 22:13:39.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/TCP.pm 2008-06-25 12:03:19.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 15:59 (EST)
# Function: testing of TCP services
#
-# $Id: TCP.pm,v 1.77 2008/02/03 03:00:44 jaw Exp $
+# $Id: TCP.pm,v 1.78 2008/06/25 16:03:19 jaw Exp $
package TCP;
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/UDP.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/UDP.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/UDP.pm 2008-03-27 21:42:55.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/UDP.pm 2008-07-16 23:42:08.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-03 18:25 (EST)
# Function: testing of UDP services
#
-# $Id: UDP.pm,v 1.69 2008/02/03 03:00:45 jaw Exp $
+# $Id: UDP.pm,v 1.71 2008/07/17 03:42:08 jaw Exp $
package UDP;
@@ -28,6 +28,7 @@
use strict qw(refs vars);
use vars qw(@ISA $doc);
+my $SA4LEN = length(sockaddr_in(0, INADDR_ANY));
$doc = {
package => __PACKAGE__,
@@ -284,6 +285,8 @@
return $me->isdown( "UDP recv failed: $!", 'recv failed' )
unless defined($i);
+ return if $me->check_response($i);
+
$me->debug( 'UDP recv data' );
$me->{udp}{rbuffer} = $l; # for debugging
@@ -299,6 +302,26 @@
$me->isdown( 'UDP timeout', 'timeout' );
}
+# drop forged responses
+sub check_response {
+ my $me = shift;
+ my $sa = shift;
+
+ my $ip = $me->{ip}{addr};
+ my $pt = $me->{udp}{port},
+
+ my $ok;
+ eval {
+ my($rport, $rip) = (length($ip) == 4) ? sockaddr_in( $sa ) : unpack_sockaddr_in6( $sa );
+ my $ripa = ::xxx_inet_ntoa($rip);
+ $ok = 1 if $rip eq $ip && $rport == $pt;
+ $me->debug("unexpected response from $ripa:$rport") unless $ok;
+ };
+ $me->debug("udp recv check failed: $@") if $@;
+
+ return $ok ? undef : 1;
+}
+
################################################################
# and also object methods
################################################################
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/UserCron.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/UserCron.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/UserCron.pm 2008-05-31 13:03:23.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/UserCron.pm 2008-06-25 12:03:19.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2003-Sep-12 18:30 (EDT)
# Function: run things at a specified time
#
-# $Id: UserCron.pm,v 1.8 2007/12/22 17:22:14 jaw Exp $
+# $Id: UserCron.pm,v 1.9 2008/06/25 16:03:19 jaw Exp $
# replacement for using a system cronjob to run argusctl
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Web.pm /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Web.pm
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/Web.pm 2008-05-31 12:44:47.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/Web.pm 2008-07-16 23:53:59.000000000 -0400
@@ -5,7 +5,7 @@
# Date: 2002-Apr-06 21:30 (EST)
# Function: web page stuff
#
-# $Id: Web.pm,v 1.68 2008/03/03 15:45:18 jaw Exp $
+# $Id: Web.pm,v 1.69 2008/06/25 16:03:19 jaw Exp $
package MonEl;
use strict;
@@ -515,7 +515,6 @@
sub web_graphs {
my $me = shift;
my $fh = shift;
- my( $n );
return unless $me->{graph};
return if ::topconf('_no_images');
diff -ruBNx HTML /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/web_login.pl /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/web_login.pl
--- /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080531/src/web_login.pl 2008-05-31 12:12:58.000000000 -0400
+++ /home/hostedsites/www.jeremykister.com/data/argus/argus-dev-20080716/src/web_login.pl 2008-06-25 12:03:20.000000000 -0400
@@ -5,7 +5,7 @@
# Created: 2005-Dec-10 12:55 (EST)
# Function:
#
-# $Id: web_login.pl,v 1.4 2008/02/04 04:56:21 jaw Exp $
+# $Id: web_login.pl,v 1.5 2008/06/25 16:03:20 jaw Exp $
package Argus::Web;
use strict;