0.41.2-pre2:

Tue Jul 13 15:21:11 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Applied RH6 compatibility patch from Bas Vermeulen <bvermeul@blackstar.nl>

0.41.2-pre1:

Tue Jul 13 08:28:00 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: POLLFREQ and ALERTTIME now config file options for tuning.

Tue Jul 13 08:06:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * The Boutell gd page is gone.  Get it while you can just in case the
   Unisys people turn their attention to me next.

   http://www.exploits.org/~rkroll/smartupstools/gd/

   And remember, if anything should happen, the _old_ (before 0.40.0) releases
   of this software have ALL of gd within the tarball!  Just find one of 
   those and rip it out.

 - smartups: #define SU600_HACK to try out experimental Smart-UPS 600
   support which effectively disables polling for a few variables.

Tue Jul 13 07:59:17 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/FAQ: new file that should help people along...

Sun Jul 11 00:26:05 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/protocol.txt: updated for upsnames and login/password

Sun Jul 11 00:11:02 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/access.txt: updated for passwords

 - upsd: Now uses field 4 of the access controls as a password.  If 
   a client matches an access line and it has a password set, they must 
   have that password set or access will be denied.

   This only applies to the 'login' level of security right now.  Other
   (lower) levels do not require a password.  This may be reworked somewhat
   in the near future to be a little more obvious.

 - upsd: PASSWORD - sets a password for a client

 - upsfetch: upslogin now sets the password

Sat Jul 10 22:29:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/access.txt: updated for login level security

 - upsd: enabled login level security (allow logins from clients)

 - upsd: fixed a potential crash when TCP clients disconnected

Sat Jul 10 20:28:36 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups: Measure-UPS II now prints detection notice at startup

 - upscommon: handler for SIGTERM so detach_shm() gets a chance to run

Sat Jul 10 20:03:28 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: now waits 10 seconds for getupsvarfd with alarm() just in case
   something goes wrong and it blocks...

Sat Jul 10 19:10:47 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/new-modules.txt: updated for AMBTEMP and AMBHUMID.

 - multimon: config file now available for specifying custom fields

   This means you no longer have to suffer if all of your systems lack
   a certain variable - just exclude it to save on horizontal space.

   Some field names are ALL CAPS and have special meanings and are parsed
   in interesting ways.  Everything else is just a variable name straight 
   from the protocol and is displayed without modification.

   This is optional ... if you don't create a configuration, the old
   layout with the standard fields will be used.

   See conf/multimon.conf for a stock file.

 - upsd: new variables: AMBTEMP and AMBHUMID.

 - smartups: Now supports the Measure-UPS II sensors for external
   temperature and humidity readings.

Sat Jul 10 13:54:58 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon: now properly close table cells when no data available for a field

 - upsfetch: handle ANS <foo> UNKNOWN properly, but it's an evil hack...

0.41.1:

Fri Jul  9 21:37:06 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Prerelease testing ends, promoted to 0.41.1

0.41.1-pre3:

Thu Jul  8 10:09:47 MET DST 1999 / Lars Balker Rasmussen <lbr@mjolner.dk>

 - upsfetch/upsd: replaced bzero()/bcopy() by memset()/memcpy()

Thu Jul  8 08:45:23 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - clients/Makefile.in: Patched to get the $(NETLIBS) stuff right

0.41.1-pre2:

Wed Jul  7 22:08:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - configure.in: check for -lnsl and -lsocket for Solaris compiles

 - server/Makefile.in, clients/Makefile.in: pass NETLIBS to upsd/upsfetch

Wed Jul  7 10:38:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - server/Makefile.in: removed tab that was confusing Emacs

Tue Jul  6 20:40:05 MET DST 1999 / Lars Balker Rasmussen  <lbr@mjolner.dk>

 - upscommon: create_info() now checks to see if it can write to the state file

 - upscommon: writeinfo() only takes one param now (no initial mode)

 - models/*: all calls to writeinfo(1,...) are gone.

 - upscommon: writeinfo() syslogs errors that were silent before.
       
 - multimon: replaced strsep() by strtok()

 - upsfetch: replace bzero()/bcopy() by memset()/memcpy() for Solaris
   compatibility. 

 - upsstats: renamed getdate() to my_getdate() because of name-clash.

0.41.1-pre1:

Mon Jul  5 14:48:13 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: External notifier.  See NOTIFYCMD in upsmon.conf.

   This is good for when you want to send pages when your power starts
   going crazy and people need to know about it.  Also see pager.txt in
   the docs directory for an example of how to use it.

   The idea for this feature came from Christopher Huffine but I decided
   to implement it differently.  He still deserves the credit though.   

Mon Jul  5 14:14:04 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: Now uses TCP mode for monitoring

   *** This means it can no longer monitor older versions of upsd ***

   If you need to maintain older UDP-only upsd versions, keep an old copy
   of upsmon around!

Mon Jul  5 13:02:07 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - clients/: New program: upsct - like upsc, but it uses the TCP based 
	     function calls to get the job done.

 - upsfetch: Added new functions for TCP mode

Sun Jul  4 23:50:28 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: dropped some scaffolding from the TCP addition

 - upsd: new -t argument to set TCP port... -p sets *both* TCP and UDP
         but -t will override the TCP port only.

   In other words, for UDP on 1234 and TCP on 5678, use -p 1234 -t 5678 ...

Sun Jul  4 03:39:50 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: sprintf() to snprintf()

 - multimon, upsimage, upsstats: sprintf() calls replaced with snprintf()

Sun Jul  4 03:17:33 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/protocol.txt: updated for LOGOUT and TCP mode

 - upsd: fixed overflow condition in parse (off by one error)

Sun Jul  4 02:24:11 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: TCP connections.  Clients need at least "base" access from the
         ACLs or they will be dropped immediately upon connection.

   The protocol semantics are the same as before, with a new LOGOUT command
   to have the server disconnect you.  This obviously doesn't work in UDP 
   mode.

0.41.0:

Fri Jul  2 08:52:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - No bugs found/reported, so version number change only...

0.41.0-pre1:

Tue Jun 29 12:50:40 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsfetch: Generic ERR * responses now handled properly

   Also added specific support for "access denied" situations

Tue Jun 29 12:23:02 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: command line state file now prints depreciated behavior message

 - docs/access.txt: New documentation file for access controls

 - conf/upsd.conf: New stock config file with reasonable stock limits

Tue Jun 29 10:35:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: Access controls.  "ACCESS <action> <level> <aclname>"

   When <aclname> is matched for an attempt to do something that requires at
   least <level>, handle it according to <action>...

 - upsd: ACLs.  "ACL <aclname> <ipblock>" in the config file...

   This takes CIDR /nn style or the n.n.n.n format ...

   ACL localhost 127.0.0.1/32
   ACL localhost 127.0.0.1/255.255.255.255

   Those two lines are identical.

Tue Jun 29 08:42:30 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: Use "UPS <ident> <filename>" in config file to name UPSes
   Just putting them on the command line gives them dull ups-0 type names...

   This means you can just start upsd by itself now with no arguments.

 - upsd: now reads configuration file (upsd.conf)

0.40.3:

Fri Jun 25 22:37:00 CEST 1999 / Peter Bieringer <pb@bieringer.de> 
 
 - Bugfix upsd (supplied information wasn't ok)

Fri Jun 25 14:41:39 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - Default log facility now "daemon".  Use configure --with-faculity=... 
   to change it if this doesn't suit you.

Thu Jun 24 00:37:56 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Reminder: to use the new features like port number and ups name in
   programs that link to upsfetch, you must reinstall upsfetch and then
   relink the program.  Otherwise it will use the old library which doesn't
   know about the new features.

 - clients/Makefile.in: upsfetch.h now installed with install-misc target

 - <subdirs>: changed Makefiles around so that ./configure generates 
   them from Makefile.in so that BASEPATH gets substituted.

   In other words, "make install" works from the subdirectories now.

Thu Jun 24 00:30:13 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/backupspro: try to wake up a UPS that goes to sleep on us
   by sending GO_SMART once in awhile

Thu Jun 24 00:16:16 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: now supports changing the udp listening port on the command line.
   Do -p <portnum> to change it.

 - upsfetch: now supports <hostname>:<portnum> in the host field 

   Naturally, things like <upsname>@<hostname>:<portnum> are also supported...

Wed Jun 23 23:47:06 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: now supports multiple local UPSes.  Just add the filenames to
   the command line and it will read everything it can find.

 - upsfetch: now supports <upsname>@<hostname> in the host field for
   function calls

0.40.2:

Mon Jun 21 07:21:20 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Version number change from pre3 only.

0.40.2-pre3:

Fri Jun 18 16:49:38 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - upsd: some snprintf() implementations don't like having the destination
   buffer as one of the source strings.  listvars() now uses a temporary
   buffer to shove data around to avoid this problem.

 - server/Makefile: statedebug target added for easier compiling

Thu Jun 17 12:08:30 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: check return value of recvfrom before calling parse

0.40.2-pre2:

Tue Jun 15 19:17:49 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: changed segment deletion policy - now called in cleanup_shm
   which is part of the exit() chain since certain systems don't let you
   attach to a segment that's marked for deletion.

   This means a kill -9 will leave shared memory segments hanging around,
   so don't do that on a model support module unless absolutely necessary.

Tue Jun 15 17:28:10 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - backupspro: installinfo for UPSTEMP removed - they don't support it

 - upsd: oops... moved the sys/shm.h include down to where it should be...

 - conf/upsmon.conf: changed shutdown command to something that should
   work on more systems

 - docs/new-modules.txt: updated for shared memory support details

 - upscommon: mark shm segment for deletion in case the model module 
   blows up so we don't leave segments hanging around in memory...

 - upsd/upscommon: shmid 0 is valid, changed tests around somewhat

Tue Jun 15 21:25:00 CEST 1999 / Peter Bieringer <pb@bieringer.de> 
     
 - server/upsd.c: "UNKNOWN: UNKNOWN" answers from upsd no longer given,
     prevents confusion of users
     
 - models/ups-trust425+625.c: see Changes.trust for details

Tue Jun 15 17:16:56 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: now calls the system's wall binary to send messages.

 - upsmon: off by one error in the config file reader spotted by
   Alexander Savelyev.

0.40.2-pre1:

Mon Jun 14 00:01:29 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Applied patch from Peter Bieringer <pb@bieringer.de> 

   - upscommon/upscommon-addon: use syslog instead of printf when 
     installinfo/installinfodirect fails

Sun Jun 13 23:01:14 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - server/Makefile: clean target now removes statedebug

 - Makefile.in: "make" turned to "$(MAKE)", subdir compiles reworked

   I guess I've been spoiled by GNU utilities.  Now I understand why
   nobody uses the -C option in Makefiles even though it's so nifty.

   All subdirectories are now handled with the following form:

   cd dir; $(MAKE) target; cd ..

Sun Jun 13 22:08:34 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: "Can't open" code redone somewhat to not trash errno with
   printf - remember the old "Not a typewriter" problems from yesteryear?

 - upscommon: writeinfo doesn't write anything in initial mode now.
   The idea is to perform a check of writing to the state file before the
   process enters the background and loses the controlling tty.

   This should fix the bug where programs could pick up a bogus status
   value for a few moments after the initial writeinfo happened but before
   the first "real" (non-initial) writeinfo was called.

 - upscommon: create_info added to make the info array either from shared
   memory OR in conventional memory which then gets written to disk

   So, shm support in the model support programs should be a matter of
   calling create_info instead of declaring one locally.

   Model programs should ask the user if they want to disable shm and 
   then set shmok accordingly.  1 = allow if available, 0 = never use.

 - smartups: shared memory support (via create_info)

 - upsd: staleness interval now 15 seconds

 - upsd: staleness checks changed to be more descriptive

 - upsd: updateups completely reworked to handle shared memory mode
   and switching between shm and state files on the fly

 - upsd: big changes to the ups tracking structures 

   The arrays (iptr/statefn and so on) are now gone and are replaced with
   a linked list that should allow any number of local UPSes without
   needless memory waste.  There are hooks for multiple UPS support, but it
   is not implemented yet in the program or the protocol.

   I expect it to work like this protocol-wise:

   REQ MODEL -> gives you the model info for the first/default UPS
                which should work fine for most single-UPS users

   REQ MODEL@second-ups -> gives you the model info for a UPS called
                           "second-ups", assuming it exists

   As for the user interface, "upsc second-ups@localhost" should work.

Fri Jun 11 23:06:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/upscommon: info array reworked for shm compatibility

   Other modules to follow...

0.40.1:

Fri Jun 11 13:38:40 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Remaining Makefile targets added to new autoconf Makefile.in scheme

 - QUICKSTART file added for the impatient

Tue Jun  8 04:04:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - README file rewritten to remove the "crystal ball problem" where
   new users had no idea what each program did.  Things should now be
   at least as descriptive as they were in 0.34.

 - multimon, upsstats: reworked to handle Celsius a little differently

   Thanks to autoconf, you can now do ./configure --enable-celsius ...

Tue Jun  8 02:58:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - GNU configure now handles all details previously set by editing
   config.h

 - All: include config.h

 - clients: moved upsfetch from common, removed common

 - Hmm, COPYING wandered off.  It's back now.

Sun Jun  6 20:53:20 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - Source cleanups: new subdirectories: models, clients, server, common

 - Makefiles redesigned to handle new layout

 - #includes rewritten for new directories

Sat Jun  5 22:06:59 MDT 1999 / Russell Kroll <rkroll@exploits.org>   

 - GNU autoconf support begins
 
 - Source tree reorg begins - lots of include files moved around 

0.40.0:

Sat Jun  5 01:22:00 MDT 1999 / Russell Kroll <rkroll@exploits.org>   

 - Version number change, doc tweaks for release version

0.40.0-pre6:

Mon May 31 12:11:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: skip the writing phase when the data is stale

   It detects this by seeing if the last data read timed out.  upsd picks
   up on this after a minute by default, so everything down the line gets
   notified.  To test it, disconnect the serial cable from your UPS and
   watch what happens about a minute later.

0.40.0-pre5:

Sun May 30 18:42:41 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon/upsstats: handle new "OFF" value

 - backupspro/smartups: internal status "00" now results in "OFF" value

 - docs/new-modules.txt revised to reflect new "OFF" value for status

Sun May 30 12:05:24 CEST 1999 / Peter Bieringer <pb@bieringer.de>

 - upscommon.h: new function nolongertimeout, which should be called after each
    successful read. Triggers the "Serial port" syslog messages.

0.40.0-pre4:

Sat May 29 19:01:24 MDT 1999

 - statedebug now compiles cleanly on BSD/OS without any funny resolv.h stuff

 - timeout() now uses sigaction to restore the SIGALRM to default
   since SA_ONESHOT does not work on BSD/OS, maybe others...

Sat May 29 18:21:51 MDT 1999

 - Note: INFOMAX was supposed to be the maximum count of how many info
   members a model support program could use total.  Since this number
   can vary wildly (backupspro uses 4, smartups uses at least 12), it
   was a way to save memory and do some bounds checking at the same time.

   To keep the confusion down, I've moved the #defines for INFOMAX around
   so that it's not forced to 16 in the upscommon module.  It should be
   defined in each model's source file if they compile with upscommon.

 - TODO: Move the growing assortment of model support programs to
   models/ to keep the source tree clean as suggested in Changes.trust

 - smartups/backupspro: Fixed help info for arguments (/dev/...)

 - merged in Trust UPS support from Peter Bieringer <pb@bieringer.de>
   See Changes.trust for more details

 - upsimage.cgi now uses -lgd rather than bluntly specifying the full 
   filename to the library - this will break compiles if your system
   doesn't find the lib and header files.

Sat May 22 16:22:29 MDT 1999

 - upscommon now uses sigaction() directly for timeout checking to get
   around a problem where read() would be restarted on some systems.

Fri May 21 17:27:54 MDT 1999

 - upslog now enters the background automatically.

 - upsmon still had the bogus openlog() facility.  Fixed.

 - Forgot to mention in the pre3 notes that a fix was added for hangs
   in the upsfetch module when the target host was down/unreachable...

0.40.0-pre3:

Tue May 18 17:56:06 MDT 1999

 - The example hosts.conf wandered off somewhere since 0.34.  It's back now.
   The install-cgi target also now copies it across just in case.

 - RECVTIMEOUT condition handling added to upsstrerror() - was causing
   some bogus 'unknown error' messages when it was a known condition...

 - upsfetch: error handling for DATA-STALE added

 - upsd: staleness check now performed on the state files.  After 60 seconds
   (default) of not changing, they will be declared stale and clients will get
   an error.  This is the first of many "no contact with UPS possible" 
   conditions that will be added.

   This is a pretty evil hack right now until a cleaner method is added.

 - I had openlog() using some bogus values for the second parameter.  The
   facility is now configurable in config.h - see #define LOG_FACILITY.

 - Computer room floods due to massive rainfall in Colorado.  Development 
   lags.  Ugh.

0.40.0-pre2:

Tue Apr 27 17:34:24 MDT 1999

 - Serial locking change - compiles on FreeBSD will now use uulock() instead
   of flock() without any change to config.h.  The eventual goal is to have
   autoconf take care of this without any future #define hacking.

   This means NO_SERIAL_FLOCK from pre2 is gone.

Mon Apr 26 17:10:44 MDT 1999

 - fix: upscommon: cfsetospeed() now has a matching cfsetispeed()
   Thanks for Alexander Nedotsukov for spotting this.

 - fix: upsmon now compiles on BSD/OS - needed to include errno.h

 - The default Makefile target no longer compiles the CGI programs.
   Do "make cgi" to build them.

 - New config.h #define possibility: NO_SERIAL_FLOCK - use this on
   FreeBSD 3.0 systems if you get an "not supported operation" error.
   Recommended by Alexander Nedotsukov.

 - backups: flock() test moved down a chunk in the serial open code.
