This is the changes for the the enhacements that I have been adding into
Spong. You can pick up this file at http://monsters.org/pub/spong/CHANGES.
You can pick up the latest spong version from:
   http://monsters.org/pub/spong/spong.tar.gz

Stephen L Johnson <sjohnson@monsters.org>

Version 2.6g
01/09/00
FIXED - brief.html file name was mispelled in lib/Spong/Info.pm module
(thanks to Andrew Ruthven <puck@chelmer.co.nz)

CHANGED - enchacement to spong-message to enable mulitple services to be
placed in Spong Acks
(thanks to Brian Jared <bjared@monster.com> )

Version 2.6f
02/28/00
FIXED - added code to clear signal mask in handle_signals in case process
inherits any blocked signals ( thanks to "mike bayliss" <mbayliss@datax.be> )
   files - spong-server
           spong-network
           spong-client

FIXED - added missing show() function to www-spong-ack (thanks to "Eric D.
Christensen" <edc@ns.proadmin.com> )

FIXED - added chmod 755 to build program for directories in /lib/Spong 
directory ( thanks to "Eric D. Christensen" <edc@ns.proadmin.com> )

Version 2.6e
02/18/00
FIXED - Status.pm module was missing an eval statement around the alarm block
   file - lib/Spong/Status.pm

ADDED - spong-server listen_for_update() function now has configuration alarm
timeout for client connections.


Version 2.6d
02/16/00
FIXED - np-* files were not being deleted when a service recovers while using
$SEND_MESSAGE = "RED".
   file - spong-server.pl

Version 2.6c
02/09/00
CHANGED - Spong::Status::status() is now more agressive in trying to connect
to spong-server. It will try up to 30 times before aborting.
  file - lib/Spong/Status.pm

FIXED - spong-network was die'ing when it failed to connect to spong-server.
It will now just log a message and then continue.

CHANGED - spong-netowrk modules check_ftp and check_smtp now sent the quit\n
command to the host being check to properly terminate the connection.

CHANGED - spong-network plugin check_http was changed to treat a response code
of 401 (Authorization Required) as a green status. A 401 should be treated as
a normal reponse from a passworded page being checking on the web server. 
(Thanks to Gerald Combs <gerald@zing.org> for this enhancement.)

FIXED - spong-network was deleting the spong-client.pid file instead of 
it's own spong-network.pid file is --nosleep was specified on the command
line. (Thanks to Gerald Combs <gerald@zing.org> for finding this bug.)


Version 2.6b

01/24/00
FIXED - Fixed bug in Host.pm oject class which would cause spong-server to
crash if a host had no service status files in the database.

FIXED - spong-server data modules plugins in contrib/plugins/spong-server/
were older development versions. The proper release versions have been 
installed.


Version 2.6a Changes

01/10/00
FIXED - Fixed notfication bug in spong-server and spong-message for contacts
defined with "delay" attributes. Notification would be sent repeated after
the initial delay.


Version 2.6 Changes


12/08/99
FEATURE - Added data plugin mechanism to spong-server. This is a hook to 
the service status update to be used by output programs. Two sample plugin 
modules in contrib/plugins/spong-server are included. They both write data
to RRD Tool databases. data_rrd_disk logs usage for file system on a host.
data_rrd_la logs the load average, number of user and numbers of jobs.

12/07/99
FIXED - www-spong-ack was missing 'use Time::Local;' statement. This was 
causing web server error when an explicit date/time was used in the Duration
field. (Thanks to Jonathan Bryne)

12/06/99
CHANGED - Moved spong-cleanup's configuration parameters to spong.conf file.

CHANGED - Update documentation with new changes.

12/05/99
FIXED - Fixed bug in spong-message which cause contact with a delay and 
repeat attributes to be continually notified.

FEATURE - Added host_groups and exclude_host_groups matching to spong-message.
The hostname will be checked to see if it in any of the host groups defined
in host_groups and exclude_host_groups.

CHANGE - Moved the &load_msg_func() function from begging of program to
after the rules scanning. They messaging functions will now only be loaded
it there are notifications to be sent.

CHANGE - Create module Status.pm to encapsulate the &status() function.
Changed spong-network and spong-client to use the new package.
   files - lib/Spong/Status.pm
           spong-client
           spong-network

12/01/99
FIXED - Added error checking code to query process display routined. Querying
for invalid information caused the query process to crash.

11/27/99
CHANGES - Various documenation updated and additions.

11/24/99
FIXED - spong-network and spong-client had a wrong variable name in the
&status() function if the inet_aton() function failed. (Thanks to Tom Brown)
   files - spong-client
           spong-network

FIXED - Changed file permissions setting of CGI programs installation in the
'build' program. The CGI programs were installed with write permission for the
$WEB users in the build program. (Thanks to Tom Brown)

CHANGE - The uiowa.edu "Machine Info" link on the Web Displays has been 
replaced with a $WWW_ACTIONBAR_CUSTOM variable in the spong.conf configuration
file. If the $WWW_ACTIONBAR_CUSTOM variable is defined, the contents of
the variable will be included in the Display frame's Action Bar. Only
HTML code should be used in this variable.

11/22/99
FIXED - Some machines were core dumping in the spong-message program in the
&load_msg_funcs() procedure on a glob() function. This function loads the
messaging plugins from the library. The &load_msg_funcs was rewritten to 
use opendir() and readdir() instead of glob().

FIXED - spong-server had a bug in the --restart logic. It was not handling
the terminated of it's child processes correctly. The HUP handler function 
(hup_handler) was rewritten to waitpid() explicit on the child process pids,
instead of using the standard &chld_handler() function.

FIXED - spong-server had another latent bug in the &chld_handler function. 
It was not reinitializing the $SIG{CHLD} signal handler. This has to be done
on systems using System V based libraries.

FIXED - spong.conf.solaris had a bug if spong-client was not run as root. 
The &gets_swap() function called "swap -s" without an explicit path. The
fix was to call "swap -s" with the full path name to the swap command.

CHANGED - Changed the check_ntp network check to be a bit less draconian 
with a critical error. It will not only be a critical is the service is
not running. A yellow conditions will be reported if the time is more then
one second off or it the ntp server is not synchonized yet.
  files - lib/Spong/Network/plugins/check_ntp

11/15/99
ADDED - Added code to spong-server to have it automatically daemonize itself
and disconnect from the foreground. It is using a new Daemon.pm library 
module. 
 files - spong-server
         lib/Spong/Daemon.pm

CHANGED - The child process handle logic has been changed to better handle
termination signals. The child processes now exit gracefull.
 files - spong-server

CHANGED - spong-client and spong-network daemonize code has been replace with
the Daemon.pm module.

11/02/99
CHANGED - Changed daemonize code to use the POSIX setsid() function to become
session leader. Programs where not disconnecting from tty in FreeBSD.
 files - spong-network
         spong-client

ADDED - Added new OS configure. FreeBSD. The uptime program has weird 
behaviour when called with full path name.

ADDED - Added new client check 'check_mailq'. It checks sendmail mail queue
levels against $MAILQWARN and $MAILQCRIT. It uses $MAILQ as the command to
execute to display the mailq.  Added $MAILQ to all spong.conf files.

FIXED - spong-client program has a bug in the load_plugins subroutine. It was
trying to use $HOSTS from spong.hosts, but the program doesn't use spong.hosts.
Change the logic to look for $CHECKS in the spong.conf file instead.

11/01/99
FIXED - Fixed missing @@PERL@@ substitution variable for #! line of spong-clientand spong-network.

10/30/99
CHANGED - Added new client check plugin mechanism similar to spong-network. Client checks are now plugs that can be configured at runtime. Client plugs 
resident in the lib/Spong/Client/plugins directory. The current plugsin are 
the 'disk','cpu','processes','logs'. 

Spong-client now looks for a 'checks' field in the $HOSTS hash to see what
plugins to run. The syntax the the same as the 'services' field. If no
'checks' field is present, spong-client defaults to 'disk_space cpu_load
processes log_files' and &check_local if present.

 10/29/99
FIX - Fixed forking and signal login of spong-server to fork off properly
and terminate properly when signalled.

10/28/99
CHANGED - spong-network now, by default, forks, disconnects from the console
and runs in the background. spong-network will run in the foreground if the
--debug parameter is used.

CHANGED - spong-message has been enchanced with a new messaging function
plugin mechanism (like spong-network's). New messaging functions can be
added by adding the msg_* file into the lib/Spong/Message/plugins directory.
The old messaging functions converted use the new plugin mechanism, and a
couple of others have been added to show the full functionality of the
new code.

CHANGED - spong-message contact syntax has been enhanced to allow finer
control over the to whom messages are sent. Your can specify which message
function/carrier to notify rather than all of a $HUMANS defined notifications.
I.E.: 'sjohnson:email' or 'unix-oncall:teletouch' or 'thebosses:sprintphone'.
  Files - bin/spong-message
          etc/spong.message

ADDED - You now specify an initial delay before notifications are send out
(e.g. Don't page until a service has RED for at least 15 minutes). And you may
also specify a repeat interval for notifications after the initial notification
(e.g. Keep paging every 10 minutes until problem is acknowledged). The new
synatx is detailed in the comments of spong.message configuration file.
  Files - bin/spong-server
          bin/spong-message
          etc/spong.message

10/12/99
ADDED - NTP (Network Time Protocol) spong-network plugin. This plugin checks
the NTP offset of the server using the "ntpdate -q" command. If the ntpdate
checks returns "Server not suitable for sync...", the status is red. Otherwise
if the offset is not than one second the status is yellow.  A $NTPDATE variable
with the path to the ntpdate command must be added to the spong.conf
configuration file.

10/11/99
ADDED - Secure Shell (ssh) spong-network plugin. It checks whether the Secure
Shell service is running or not.

10/07/99
ADDED - A timestamp has been added to the services status file to track 
event duration. The start time of an event is defined as a when a change of
status for a service. A new field 'stime' (Start Time) has been added to
the Service.pm object. The display of the event duration has been added to
the Service::display_* routines for a full format displays.
  Files - bin/spong-server
          lib/Spong/Service.pm

10/06/99
ADDED - Added code to spong-client to allow it to fork and daemionize.
spong-client will not daemonize is run with --debug.


version 2.5 Changes

CHANGED - Updated basic help html files.

spong-server

ADDED - Code to handle purple colored service status files in the database. 
The start of code to allow spong-server to handle old status as a real 
status state.ADDED - Big Brother server emulation. The server can now 
handle Big Brother Clients. The emulation is not 100% percent yet. The 
client must be configured to use FQDN names. And the server can't handle 
PAGE commands.
ADDED - Added new a type of SEND_MESSAGE rule: RED-CHANGE. The spong-server 
will attempt to send out messages on any status transition to or from RED.
FIXED - Fixed problem with in save_acks with 2 acks bein created with-in 
the same second. The second ack would overlay the first ack with the same 
file name.

spong-client
CHANGED - The old log scanning code is gone. There is a new Object Oriented 
log scanning routine logmon.  logmon monitors the log file by monitoring 
the end of a file like "tail -f". Events are not reported over and over 
again until he file is rotated or edited. They will be reported for a 
specified period of time and then are discard. This does not work if 
spong-client is run with --nosleep from a crontab.
ADDED - Added new OS specified get_swap routines to check swap space levels 
in the disk checks.

spong-network
CHANGED - Change the check routines to a new plug-in mechanism. New checks 
can be added by writing a plug-in module and placing it in the plugin 
directory. The new service can be used by referencing in the spong.host 
file. spong-network will load the routine and it will be registered with 
the plugin registry.
ADDED - Added a new escalation mechanism to guard against transiant network 
problems. A RED status is not reported until a service for host has failed 
a certain number of times. Otherwise it is reported as a YELLOW status.
CHANGED - Added a loop to &check_tcp to check a service 3 time before 
reporting that it is down. This is guard against temporary network gliches.

spong-message
ADDED - Added new rules based messaging. The new code is configured in the 
new spong.message configuration file. The rules allow for host and service 
based include and/or exclusion, along with version flexible time and day 
selection. Multiple contacts can also be specified.

spong-ack
FIXED - Replace unreliable getlog() call with getuserbyname($<) to get user 
login name.
FIXED - Made sure to exit with a non-zero exit code on any errors. This is 
to make it more script friendly.
CHANGED - Change options processing to use GetOpts modules for to simplifiy 
checks.
ADDED - Added --batch parameter which forces program to print the ack. id 
instead of the more verbose output. This is to make it more script friendly.