			 CHANGES version 3.1

	     This file summarizes changes made since 1.0

Version 3.1

*  This release optionally makes use of openssl. It is possible to
   monitor processes which are forged with ssl. Monit's http server
   can run with ssl, too. Read more about this feature in the man
   documentation and in the file, README.SSL. The SSL feature is a
   beta feature in this release.

*  This release supports process dependency. This is a beta feature.

*  This release replaces the 'autostart' statement with the 'mode'
   keyword. 'autostart' is now deprecated.

*  Three monitoring modes are now supported. In addition to the
   standard active mode (equals obsolete autostart=yes) and passive
   mode (equals obsolete autostart=no) there is a new manual mode,
   which allows monit to work as a simple process monitor in a
   clustered environment. Thanks to Oliver Jehle
   <oliver.jehle@monex.li> for the proposal and helping with the
   patch.

*  The location of the pidfile can be modified via a command switch or
   in the control file using the new 'set pidfile' statement.

*  This release supports a native ssh protocol test. Thanks to
   Igor Homyakov <homyakov@altlinux.ru>

*  This release supports timestamp monitoring for files and for
   directories.

*  If start and/or stop programs are not defined, monit will act as in
   passive mode, that is, monit will send alert message in case of
   service failure. Previous release did nothing in such cases.

*  This release reloads monit httpd if the interface where monit httpd
   listens for connection was changed in monitrc (don't require
   monit's restart)

*  If a SIGHUP signal is sent to a monit daemon it will reload
   itself. This is useful if you use a monit log file and need to
   rotate the log, for instance with the logrotate program.


Version 3.0

*  A new feature to check and utilize systems and process information
   is introduced with this release. With this feature you can get an
   alert or monit will stop or restart programs based on their process
   characteristic. E.g. if a process is using to much memory you can
   get an alert, or if a process is using to much CPU monit can auto-
   matically restart the program. Please have a look in the document-
   ation to learn more about this new feature.

*  This release also augment the web interface and console status
   command to display for each process the uptime, cpu usage and
   memory usage.

*  To protect the security of your control file and passwords the
   control file must have permissions no more than 0700 (u=xrw,g=,o=);
   monit will complain and exit otherwise.

*  This release support up to 64 arguments for the start and stop
   programs. Previous versions supported only 2 arguments.

*  If monit fails to execute a start or stop program, monit will now
   send an alert message. Previously, monit only logged a message if
   it failed to execute a program.

*  This release makes use of autoheader and config.h. Thanks to Mark
   Ferlatte <ferlatte@cryptio.net>.


Version 2.5.1:

*  This release adds a new check for unix socket based servers in
   addition to networked port.  The syntax is based on the monit port
   command, e.g.: unix /var/run/foosocket

*  The file creation mask monit was started with is now passed along
   to programs started by monit. In other words, the umask monit was
   started with is inherited by programs started by monit.

*  The monit daemon is now properly detached from the console
   tty. Thanks to Mark Ferlatte <ferlatte@cryptio.net>.

*  Changed the the default udp socket test to actually check if an udp
   server is running or not. In previous versions the default udp test
   would always return success even if there was no server behind the
   stated portnumber. The new udp test is not perfect, a 1 byte udp
   packet is sent to the server to test if the server is running; this
   may cause an error report by the server. Still, we belive this test
   is better than no test. In a future release this test will be
   improved.

*  This release makes it possible to write %xy url-encoded characters
   in the http protocol request.

*  This release fixes a problem with a changed monitrc file and a
   monit daemon running in the background. The monit httpd will now
   start again if it was previously stopped or it will restart with a
   new portnumber if the portnumber was changed in the monitrc file.


Version 2.5:

*  This release adds IP address based ACL for monit httpd. It is now
   possible to use IP addresses in addition to hostnames in the
   'allow' statement.

*  The http protocol test is now based on HTTP/1.1 and actually
   supports HTTP/1.1 virtual hosts.

*  The http protocol test is also extended to include an optional
   request statement for http. With this statement it is possible to
   ask monit to check a particular url, like so:
     host www.cnn.com port 80 proto http request "/markets/ipo"

*  The status command is changed to print an uptime string for each
   process in addition to the usual output. The web interface will also
   show the uptime for each process monitored.

*  Suse rpm spec files added in contrib/packages/suse by Thomas Oppel

*  And finally, the monit's web interface has got a new designed


Version 2.4.3:

*  This release adds a new configuration file statement that makes it
   possible to specify an address the monit httpd should bind to.

*  This release fixes a problem with monit httpd descriptor
   inheritance. On Solaris it has been observed that programs started
   by monit could inherit the monit httpd server socket with the
   result that these programs also seemed to listen on the httpd port
   number.  Thanks to Christian Hopp <chopp@iei.tu-clausthal.de> for
   reporting and help solving this bug.

*  The date header in email alerts is changed to a RFC 1123 Date
   string. This will make Mail User Agents happier. Again thanks to
   Christian Hopp <chopp@iei.tu-clausthal.de> for reporting this
   problem.


Version 2.4.2:

*  This release adds an explicit date header to emails emitted by
   monit. It seems that qmail have problems setting the date header
   and if the header is not present in the mail, qmail will set a
   wrong date (i.e. the EPOCH). Patch submitted by Georgi
   Chorbadzhiyski <gf@unixsol.org>.

*  This release also fixes a possible SIGSEGV that could occur when
   the monit http://../_about HTML page was displayed. Thanks to
   Martin Pala for helping with the patch.

*  More consistent log and console reporting when starting and
   stopping the monit deamon and minor simplification in the http
   server code. Again thanks to Martin Pala for submitting patches.

*  This release also revert to using the old alarm code for http
   connection timeout in the monit http server, instead of using the
   new SO_RCVTIMEO socket option since few Unix versions support this
   (correctly).


Version 2.4.1:

* Fixed a bug that could cause monit *not* to start programs. The 2.4
  version had a bug that could cause a SIGSEGV in spawn.c with the
  result that the child process that should start a program died. This
  bug occured if the set logfile syslog statement was used in monitrc.
  Thanks to Volker-J Westphal <volker-j.westphal@db.com> for reporting
  and help solving this bug.

* $ is allowed in the from address in mail-format, to make this type
  of statement legal; mail-format { from: monit@$HOST }. 

* Internal simplification of the mail format code, Thanks to Martin
  Pala <martin.pala@hq.iol.cz>.

* The SIGUSR1 signal is blocked in the alert function so e.g. a monit
  wakeup call cannot interrupt a mail alert transfeer.


Version 2.4:

* Extended refactoring of the alert function. It is now possible to
  customize the email message monit will send. Thanks to Martin Pala
  <martin.pala@hq.iol.cz>, for helping with this refactoring and for
  providing code that makes it possible to send multiple alert messages.

* If a monit daemon is running in the background it is requested to
  stop programs. This way, a monit daemon will not start a program
  again after it was stopped with the command; 'monit stop'

* The statements 'checksum start' and 'checksum stop' are
  depricated. Instead use the 'checksum file' statement.

* Fixed a significant but extremely rare alarm signal thread conflict.
  An alarm signal emitted by one thread and catched by another could
  cause monit to die (observed on FreeBSD). This could happen if monit
  was sending an alert mail while the http thread processed a request
  at the same time.

* Minor bug fixes in the parser and the source code is changed to use
  stronger typing.


Version 2.3:

* This release adds a group statement feature to monit, thanks to
  K. Sayah Karadji. It's now possible to group together several
  program entries in the control file and manage a group of programs
  from the command line. This release also introduce the autostart
  statement, also provided by K. Sayah Karadji. This statement is used
  to control if monit should automatically start a program if it is
  not running.

* Restarts is again a noise keyword, (but note, restart without the
  ending 's' is a regular keyword). This makes it possible to write
  the timeout statement verbosely again as stated in the documentation:
       timeout if 3 restarts within 3 cycles

Version 2.2.1:

* This release fix a problem with Basic Authentication overriding the
  Host Allow List authentication. Now both authentication methods can
  be used together as stated in the documentation.

* This release also fix build problems on Solaris and on FreeBSD (with
  only GNU Portable Threads).


Version 2.2:

* The monit http server socket is made reusable. This is useful if
  monit has been shut down, and then restarted right away.

* The md5 checksum function has been refactored. Checksum are now
  optional per program entry.


Version 2.1.1:

* The socket interface has been made more robust in this release by
  masking out the SIGPIPE signal.

* Removed a mini memory leakage when starting/stopping programs from
  the web-interface.


Version 2.1:

* Basic Authentication schema added. This feature is usefull if you
  want to connect to a monit httpd from a host without a permanent
  IP-address and want an alternative to the host allow list
  authentication.

* If an 'allow host' entry is removed from the control file, the host
  will also be removed from monits internal allow list on the next
  poll cycle. This was not done in previous releases.

* Some refactoring and extensive HTML documentation for the monit
  source code.


Version 2.0:

* Support for start, stop and restart of specified programs from the
  command line.

* The http interface now support start and stop of all programs
  managed by monit. This is e.g. useful for managing daemons on
  several machines from a browser.

* monit now use POSIX threads and does not fork of a standalone http
  process, instead the monit http server is started in its own thread.


Version 1.4.1:

* Programs are now actually started with standard filedescriptors
  opened. There was a bug in the spawn.c code that did the opposite.
  Thanks to Martin Pala <martin.pala@hq.iol.cz> for providing this
  bugfix.

  If you had a problem with starting certain deamons from monit this
  release will (probably) fix that.


Version 1.4:

* Fixed build problems on Solaris 2.[5/6]


Version 1.4beta:

* monit now has a web-interface. You can check if monit is running and
  the status of all programs monitored by monit from a browser.

* A checksum is taken for all programs that monit uses for managing
  daemons, and an alert notification is sent if a program changes. 
  Thanks to Rick Robino <rrobino@peek.com> for suggesting this feature.

* The spawn code has been simplified and tighten.

* NOTE: THIS VERSION HAS ONLY BEEN BUILT AND TESTED ON LINUX RH 7.1. 


Version 1.3.1:

* Alert notification is put after server restart. Relevant if monit
  watches the local smtp server and use this for alert as well.
  Thanks to "Martynas" <martynas@inet.lt> for the reminder.
  
* The timeout alarm is started before monit tries to open a socket, so
  monit doesn't hang on a connection.

* Fixed the possible '-c' exploit. (And hopefully others). 


Version 1.3:

* Most of the source files in this release are to some extent
  changed. For the most part, it's just polishing, but the grammar is
  refactored a bit and the connection testing code are extended
  much. Because of this I feel more comfortable to coin this release a
  BETA release. The quality of the code should be good, but this
  release has not been long into production. Feedback and any bugfixes
  are welcome.

* NB! The syntax for the host-statement is changed slightly. The new
  syntax is (see the man file for explanation): 
   [HOST hostname] PORT number [TYPE {TCP|UDP}] [PROTO(COL) {name}]

* Code added for safer exec and environment handling

* Polished the controlfile grammar, so that optional statements
  doesn't have to be written in any particular order.

* Extended the alert function to include restart alerts. Alert is now
  a standalone statement, not depending on timeout.

* Code added for better memory allocation.

* When testing (default) connection to a port, new code is added to
  test if it's possible to write or read to/from the socket. This is 
  a good vitality test for any server.

* The following was provided by Michael Amster <mamster@webeasy.com>
  and included into this release:

  - sendmail.c now correctly supports RFC822 and does not send bare
    linefeeds.

  - Fixed stack smashing security issues. General replacement of
    strcpy with strncpy, sprintf with snprintf, strcat with strncat.

* Michael also provided code that inspired me to create a new
  interface for semantic test for some of the more popular Internet
  protocols, like HTTP, POP, SMTP and FTP. The "interface" design is
  loosely based on the Delegation Pattern. It's easy to develop new or
  change existing protocol modules without changing any main program
  logic.  With this feature, monit will be able to, not only connect
  to a certain port, but also speak the protocol to verify that the
  server works. If you want to create your own protocol modules, see
  the NOTES file in the protocols directory.


Version 1.2:

* monit now saves its pidfile in /var/run or /etc when run by root

* Fixed Mailserver-statement so real hostnames can be used as well as
  localhost.

* Fixed permission problem when checking for running process. This
  problem occured when monit was started by a regular user and monit
  tested a program run by root (e.g. a program doing setuid=root). 
  In this case monit wrongfully reported that the program was not 
  running, even if it did.

* The following was provided by Olivier Beyssac and included into
  this release:

  - In case your server provides IP-based or name-based virtual hosts
    you can now use monit for connection testing to explicit stated  
    hostnames:
        New format for this is : host <hostname> port <number>
    This is backward-compatible with the "port <number>" only
    statement, where the hostname is implicit localhost.

  - Added an every statement, to check a process every n cycle


Version 1.1:

* Support for UDP as well as TCP in port checking

* Program timeout mechanism and alert notification

* Fixed minor precedence problem between global 'set-variables' set at
  the command-line and the control file
  

Version 1.0:

* Initial release

