This file lists changes that affect users who installed older versions 
of this software.  When upgrading from an older version, be sure to
check this file to see if you need to make changes to your system.

---------------------------------------------------------------------------
Changes from 2.0.2 to 2.0.3:

 - nothing that affects upgraded systems.
 - hidups users are encouraged to switch to newhidups, as hidups will be
   removed by nut 2.2.

---------------------------------------------------------------------------
Changes from 2.0.1 to 2.0.2:

 - The newhidups driver, which is the long run USB support approach,
   needs hotplug files installed to setup the right permissions on
   device file to operate. Check newhidups manual page for more information.

---------------------------------------------------------------------------
Changes from 2.0.0 to 2.0.1:

 - The cyberpower1100 driver is now called cpsups since it supports
   more than just one model.  If you use this driver, be sure to remove
   the old binary and update your ups.conf 'driver=' setting with the
   new name.

 - The upsstats.html template page has been changed slightly to reflect
   better HTML compliance, so you may want to update your installed copy
   accordingly.  If you've customized your file, don't just copy the new
   one over it, or your changes will be lost!

---------------------------------------------------------------------------
Changes from 1.4.0 to 2.0.0:

 - The sample config files are no longer installed by default.  If you
   want to install them, use 'make install-conf' for the main programs,
   and 'make install-cgi-conf' for the CGI programs.

 - ACCESS is no longer supported in upsd.conf.  Use ACCEPT and REJECT.

   Old way:

        ACCESS grant all adminbox
        ACCESS grant all webserver
        ACCESS deny all all

   New way:

        ACCEPT adminbox
        ACCEPT webserver
        REJECT all

   Note that ACCEPT and REJECT can take multiple arguments, so this
   will also work:

        ACCEPT adminbox webserver
        REJECT all

 - The drivers no longer support sddelay in ups.conf or -d on the
   command line.  If you need a delay after calling 'upsdrvctl
   shutdown', add a call to sleep in your shutdown script.

 - The templates used by upsstats have changed considerably to reflect
   the new variable names.  If you use upsstats, you will need to
   install new copies or edit your existing files to use the new names.

 - Nobody needed UDP mode, so it has been removed.  The only users
   seemed to be a few people like me with ancient asapm-ups binaries.
   If you really want to run asapm-ups again, bug me for the new patch
   which makes it work with upsclient.

 - 'make install-misc' is now 'make install-lib'.  The misc directory
   has been gone for a long time, and the target was ambiguous.

 - The newapc driver has been renamed to apcsmart.  If you previously
   used newapc, make sure you delete the old binary and fix your 
   ups.conf.  Otherwise, you may run the old driver from 1.4.

---------------------------------------------------------------------------

Changes from 1.2.2 to 1.4.0:

 - The clients no longer support the notion of a "default UPS" when
   communicating with newer versions of upsd.  If you leave off a UPS
   name, they will fall back on compatibility mode and will use the
   old variable and command names.

   That is, "upsc localhost" will give you things like STATUS, and you
   have to do "upsc myups@localhost" to get the new ones like
   ups.status.

   The old variable names and default UPS mode will be supported 
   throughout the 1.4 series to allow users to convert to the new
   style.  This support will be formally dropped in 2.0.

 - upsmon is part of the "no default upsname" change.  You must change
   the MONITOR directives in your upsmon.conf if you were using this
   technique before.

   Old way:

   MONITOR bigserver 1 monuser password master

   New way:

   MONITOR myups@bigserver 1 monuser password master

   Just look at the top of ups.conf on 'bigserver' to figure out what
   the first UPS is called, and stick it and a @ on that MONITOR line.

 - upsrw's appearance has changed to avoid wrapping when displaying
   the new longer variable names and descriptions.  It still displays
   the old format when talking to an older upsd.

   To see the difference, try "upsrw localhost" and then compare it to
   "upsrw myups@localhost", assuming a new version of upsd is running
   on localhost.

 - upslog now uses the new variable names in the default format
   string.  It will still monitor the old variable names for backwards
   compatibility, but you will have to specify the format string
   explicitly.

 - 'make install' no longer creates the state path.  Instructions for
   creating it properly have been added to the INSTALL file.  

   Technically, this only affects packagers, since this is the
   UPGRADING file and normal users should already have a state path.
   If you are a packager, you will need to add the right mkdir + chown +
   chmod magic to your install process to keep things working.

   This also means that you no longer need any special permissions to
   bundle this software into a package.  The installer no longer 
   requires root now that the chown is gone.

 - configure --with-group no longer does anything useful.  The programs
   which will drop permissions support "-u <user>", and will pick up
   the group id based on the values in /etc/passwd for that user name.

   configure --with-user still works as before, and provides the default
   value if you don't specify another one with -u.

 - The "DROP" action in upsd.conf now behaves a little differently.

   It still causes new TCP connections to be closed without reading
   from the socket, and still causes UDP datagrams to be ignored.

   The only difference is that commands that are denied after the
   remote host connects will now generate an error message.  Previously,
   upsd would just ignore them, and the clients could get out of sync.

   DENY also has been changed slightly to silently ignore UDP packets.

   Essentially, DROP and DENY are now the same thing.  If you use DROP
   anywhere, you should change to DENY before it goes away in the future.

 - upsmon now requires a username on the MONITOR lines.  If you have an
   older installation from the 1.x era or earlier, you probably need
   to convert them.

   Old way: MONITOR ups@mybox 1 mypass master
   New way: MONITOR ups@mybox 1 username mypass master

   You will also have to add a [username] section to the upsd.users
   with a matching password, an allowfrom value, and "upsmon master" or
   "upsmon slave".

   If upsmon says the login failed due to "username required" or fails to
   start, saying "Unable to use old-style MONITOR line without a username",
   then you're still using the old method.

---------------------------------------------------------------------------

Changes from 1.2.1 to 1.2.2:

 - upssched.conf now requires the LOCKFN directive to prevent races when
   handling two events that happen at nearly the same time.

   If you use upssched, you must add this to your upssched.conf or it
   will fail to run.

---------------------------------------------------------------------------

Changes from 1.0.0 to 1.2.0:

 - upsct is gone.  upsc now uses the new upsclient library which is
   TCP only, so there is no need for a separate client for TCP polling.

 - upsct2 has been renamed to upsrw since the name was already
   ambiguous and it looked even more out of place with upsct gone.

 - The multimon.cgi behavior has been absorbed into upsstats.cgi.

 - Calling upsstats.cgi with no arguments will make it render
   the template file called upsstats.html in your confpath.  The default
   version of this file looks a lot like multimon, but is flexible.
   You will have to copy this file from upsstats.html.sample to 
   upsstats.html the first time you install this version.

 - Calling upsstats.cgi with host= set will still render a single status
   page as before, but the markup for that page now comes from
   upsstats-single.html.  This is also a template and may be
   reconfigured to suit your needs.  It must also be copied over from
   the .sample filename the first time.

 - upsmon can now send a username when authenticating to upsd.  It is
   recommended that you change to this mode, as the old host-based
   authentication is clunky and eventually will be removed.

   Old way:

	MONITOR myups@bigserver 1 blah master

   New way:

	MONITOR myups@bigserver 1 monmaster blah master

   Note that the username has been inserted between the power value and
   the password.  When switching to this method, be sure to add a user
   to upsd.users, i.e.:

	[monmaster]
		password  = blah
		allowfrom = localhost
		upsmon master

   You still need to give the upsmon host(s) at least "monitor" access,
   so don't delete those old ACCESS lines in your upsd.conf.  Just
   lower the access level and remove the password.

   Old way:

	ACCESS grant master localhost blah

   New way:

	ACCESS grant monitor localhost

 - The old upsfetch "library" (used loosely) has been replaced by
   upsclient.  This will be installed if you do "make install-misc",
   but it goes into $(prefix)/lib and $(prefix)/include by default.

   The upsclient interface is not compatible with upsfetch.  Old
   accessory programs which linked to upsfetch will have to be updated
   to work with upsclient instead.

   Existing binaries that were linked against upsfetch will still work
   since the network protocol used by upsd has not changed.

 - SET and INSTCMD no longer work via host-level authentication.  This
   is only a meaningful change if you are using very old versions of
   upscmd/upsct2/upsset.cgi, or if you're talking to upsd directly.

   You must now set a USERNAME first, and authentication will occur
   through upsd.users as a result.

   This means that the "manager" level in upsd.conf ACCESS directives
   is no longer meaningful, and you should remove them.

 - INSTALLROOT is no longer available for redirecting 'make install' -
   use DESTDIR instead.

 - Makefile targets have been reworked to allow fine-grained control
   over what happens at install-time.  'make install' and 'make
   install-cgi' still do everything, but you can call subsets instead
   if necessary.  See CHANGES.
