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 =~ /\#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;