#######################
Icinga 1.0.x Change Log
#######################

1.0.2 - 30/06/2010

ENHANCEMENTS
* core: init script shows config errors option; don't remove pidfile if icinga did not stop in a timely manner
* core: check if icinga running before starting; if died remove lockfile first
* core: add in sync retention facility (Ton Voon, Opsera Ltd)
* core: add new is_volatile setting of 2 for services, which respects the re-notification interval for notifications (Ton Voon)
* core: add Icinga option -S functions much like -s but will dump the entire scheduling queue is it would run, 
        in addition to providing the summary data (Steven (Steven D. Morrey)
* core: icinga can send log messages to syslogd using a local facility instead of the default one
* core: enhanced diagnostic output when a regular expression fails to compile (Max Schubert)
* core: add state-based escalation ranges (Mark Gius)
        The directives first_notification and last_notification apply to the
        total count of notifications on a particular service or host.  It is
        sometimes desirable to escalate after the Nth critical notification,
        rather than after a total number of N notifications have been sent.
	NOTE: This can be enabled through configure, it is currently incompaitble with mk_livestatus!
* core: add event profiling option for stats of event counts and time taken for events
* core: retention file loading speedup (Matthieu Kermagoret)

* cgi: add opt-in display_name from hosts/services definitions; if set, they will be shown in the classical ui
* cgi: re-add quick search to navmenu in order to provide quick host/service lookups without idoutils/api
* cgi: add event profiling stats of event counts and time taken for events in 'Performance Info'
* cgi: add config option show_all_services_host_is_authorized_for to cgi.cfg
	It's possible to disable that the user can see all services only being an authorized contact for the host
* cgi: add multiple urls for notes|action_url on host|service object definition (Jochen Bernd)

* idoutils: add config options to allow users decision on clearing realtime and config tables on Icinga core startup
	Actual config objects are marked as (in)active, because disabling the clearing results in historical config
* idoutils: remove mysql binary selects, use case-sensitive collation instead (William Preston)
* idoutils: Spread the list of linked lists thinner (extend objects hash slots) (Opsera Ltd)
* idoutils: change select * into select [*_]id if unused results
* idoutils: add syslog output, if ido2db is unable to do initial db query
* idoutils: rewrite initscript not only depending on lockfile
* idoutils: check if ido2db running before starting; if died remove lockfile first
* idoutils: add upgrade scripts to fix object relations to historical data

* config: add trailing slash in apache config for html dir

FIXES
* core: fix scheduling downtime for all services AND the host (cgi url, external commands)
* core: fix custom notifications being sent during downtimes (Sven Nierlein)
* core: fix spurious dollar signs added to command_lines (Alexander Wirt)
* core: fix for choosing next valid time on day of DST change when clocks go one hour backwards (Ton Voon)
* core: fix for nagios now erroring when "Error: Could not find any contactgroup matching..." displayed (Ton Voon)
* core: minor cleanups to icingastats.c (Eric Sesterhenn)
* core: remove dead code (Andreas Ericsson)
* core: introduce common/shared.c and include/shared.h (Andreas Ericsson)
* core: move cgiutils.h compile time option macros to config.h (Andreas Ericsson)
* core: icinga.c: remove conditional main() configuration (Andreas Ericsson)
* core: icinga.c: replace asprintf() + write_to_logs_and_console() with logit() (Andreas Ericsson)
* core: revamp logging somewhat (Andreas Ericsson)
* core: create logging.h, with stubs for the common function in cgiutils.c (Andreas Ericsson)
* core: Janitor patch: Remove unused variables (Andreas Ericsson)
* core: base/utils.c: typo-fix s/escape_newlines==/escape_newlines_please==/ (Andreas Ericsson)
* core: cgi/cmd.c: Squelch warning about empty gnu_printf format string  (Andreas Ericsson)
* core: more linker tricks and less #ifdef's - log_debug_info() stubbed (Andreas Ericsson)
* core: common/objects.c: Use calloc() instead of malloc() + manual NULL'ing (Andreas Ericsson)
* core: macros: Protect against typos in macro names (Andreas Ericsson)
* core: macros: Add NOTIFICATIONISESCALATED to the list of macro names (Marc Powell)
* core: comments: Remove one comment at a time from hashlist (Hiren Patel)
* core: fix checking of the open(2) system call (David Glick)
* core: xodtemplate: Use macro magic to get rid of 900 LoC (Andreas Ericsson)
* core: more s/malloc(size) + init/calloc(1, size)/ replacements (Andreas Ericsson)
* core: header files: Remove dead prototypes (Andreas Ericsson)
* core: base/commands.c: Fix error path of opening checkresult files (Andreas Ericsson)
* core: fix open() error checking in move_check_result_to_queue() (Andreas Ericsson)
* core: xdata/xpddefault.c: Close perfdata files if fd's are >= 0 (Andreas Ericsson)
* core: fix xpddefault_{host,service}_perfdata_file_pipe not set properly on configuration re-read
* core: fix SIGSEGV in checks.c on Solaris (Torsten Huebler)
* core: added icinga object version variable in neb api for usage with idomod
* core: fix notification_period inheritance for services (Gordon Messmer)
* core: fix for notifications not being sent out when scheduled downtime is cancelled (Daniel Pouzzner)
* core: fix for first notification delay being calculated incorrectly, and notifications potentially going out early (reported by Pawel Malachowski)(Ethan Galstad)
* core: error out if services defined without description in service object definition (service def and/or used templates)
* core: fix servicechecks with timeperiods containing 'exclude' directives are incorrectly re-scheduled

* cgi: minor cleanups to cgiutils.c (Eric Sesterhenn)
* cgi: fix cmd.cgi incomplete output for command description
* cgi: fix typo: "stye" instead of "style" in cgi/tac.c
* cgi: check_daemon_running() not working on MacOS (Hendrik Baecker)
* cgi: fix CGIs don't show correct error on missing archived icinga-DATE.log file
* cgi: fix missing js files

* idoutils: Host DB inserts use string 'NULL\n' instead of NULL (William Preston)
* idoutils: ndo2db_get_object_id fails to return existing IDs (William Preston)
* idoutils: fix postgres wrong type in service_object_id
* idoutils: modify string escaping again (mysql, pgsql), needs a full rewrite though
* idoutils: fix for oracle when binding a NULL value on contactnotificationmethods
* idoutils: completely renamed idoutils (s/ndo/ido/g etc), removing old sources
* idoutils: fix compilation error of SUN_LEN on Solaris
* idoutils: add configure check for gethostbyname including -nsl on Solaris (Alexander Skwar)
* idoutils: fix host 2d y coord not stored properly

1.0.1 - 03/03/2010

ENHANCEMENTS
* core: updated docs
* core: fix config parsing for icinga_user and icinga_group
* core: fix status.dat ok, no daemon running, show error instead of old data
* core: permanently remove sleep on run_event == FALSE in main loop (Max Schubert)

* core: add service_check_timeout_state	configuration variable
	This setting determines the state Icinga will report when a
	service check times out - it does not respond within
	service_check_timeout seconds.  
	c - Critical (default)
	u - Unknown
	w - Warning
	o - OK

* core: add escalation_condition definition (Vitali Voroth DECOIT GmbH)
	The escalation_condition option is completely optional and can be
	defined for host escalations as well as for service escalations.
	escalation_condition <condition> ( [ & / | ] <condition> )*
	where <condition> is either host hostname = [u,d,o] or
	service hostname.service_description] = [w,u,c,o].
	The escalation_condition accepts a list of one or more conditions 
	separated by & (logical AND) or | (logical OR).
	w = WARNING
	u = UNKNOWN
	c = CRITICAL
	o = OK for services or UP for hosts
	d = DOWN for hosts

* idoutils: add ido2db threaded housekeeper
	- periodic cleanup will now be performed in own thread
	- startup blocking behavior removed
	- housekeeper will wait for idomod instance, idle wait using und db_hello
	- creates own db connection and does its job

* idoutils: add indexes for delete/select statements
	- delete/select will perform faster
	- getting cached objects with select runs faster
	- getting logentries within icinga-web is faster

* idoutils: reorganize db setup files for MySQL/Postgresql/Oracle
	- module/idoutils/db/<rdbms>/ holds needed files
	- module/idoutils/scripts/ with installdb/upgradedb for MySQL
	- updated Makefile, README

* idoutils: complete oracle rewrite to improve performance
	- query rewrite
		- 1x SELECT latest data time as is (called only at startup)
		- dynamic binded procedure for DELETE on table by instance_id called at startup
		  for cleaning config/status
		- dynamic binded procedure for DELETE on tably by instance_id, field<time called
		  during periodic cleanup in threaded housekeeper 
		- all other queries are prepared with their own statement handler
			 4x DELETE
			 52x MERGE
			 9x INSERT
			 9x UPDATE
			 5x SELECT
	- rewritten getting cached object_id using select
	- all queries use binded unixtimestamp instead of prepared query string
	- removed autoincrement sequence and insert triggers to update primary key
	- added sequence for each table
	- INSERT INTO ... (id, ...) VALUES (seq_name.nextval, ...) will do the trick
	- added RETURNING id INTO :id for INSERT statements to save one round trip
	- MERGE does not support returning INTO, added SELECT seq_name.currval query instead
	  for fetching last inserted id
	- add explizit upgrade information and provided procedure to alter sequence start
	  when importing data (check oracle-upgrade-1.0.1.sql for more info)

* idoutils: add upgrade path for mysql/pgsql/oracle for 1.0.1
* idoutils: add initial debug output for idomod (to be set in idomod.cfg)
* idoutils: add database name in connection msg to syslog
* idoutils: change mysql db engine to innodb (no table locking, better transcations)
* idoutils: add --with-oracle-lib=/path/to/instantclient for runtime export of 
	LD_LIBRARY_PATH if instantclient not installed to path
* idoutils: add max_logentries_age and max_acknowledgements_age to ido2db (check ido2db.cfg)

FIXES

* core: fix segfault in cmd.cgi
* core: fix event broker callback function self de-registering for callbacks (Sean Millichamp)
* core: add missing sound.js provided by scriptaculous
* core: string replaces for icinga
* core: typo fix in mrtg.cfg (Dennis van Zuijlekom) 
* core: add init info as required by LSB
* core: fix perl tests
* core: fix missing clean & distclean against tap/ directory
* core: fix several libtap c TAP tests and cleanups
* core: refactor perl test to use icingaadmin
* core: add cgi argument 'nodaemoncheck' and tests
* core: add config.cgi test
* core: add subtests to extinfo tests
* core: add tests against histogram.cgi
* core: add $srcdir to paths
* core: fix idomod doesn't de-initialize after config error
* core: fix make fullinstall/idoutils without enabled idoutils during configure
* core: fix sending two identical service_status events to neb module
* core: fix segmentation fault crash when a non-existant host or service is passed to the command pipe 
* core: add check for NULL for event_list_high

* idoutils: modify string escaping for mysql and pgsql
* idoutils: fix pgsql table systemcommands (missing column 'output')
* idoutils: fix arraysize of es in save_custom_variables
* idoutils: rename ndomod.h to idomod.h
* idoutils: fix several naming issues
* idoutils: fix acknowledgments query, wrong buffer freed/set as query to db (Bruce Pennypacker)
* idoutils: fix contactnotification data array, command args were not provided (Bruce Pennypacker)
* idoutils: fix custom_variables object_id type int => unsigned long


1.0 Stable - 16/12/2009
* core: create webserver conf.d dir if not existing
* core: output the correct config parameter name on error message
* core: run dos2unix on spec file
* core: check /proc/$pid instead of lock file while waiting for shutdown
* core: fix cgi/config.c typo
* core: fix typo in cgi/cmd.c
* core: applied nagios patches after 3.2.0

* idoutils: change default data_processing_options in idomod.cfg
* idoutils: fix missing query arguments in servicecheck query
* idoutils: fix thisversion and perl path generation in db install scripts
* idoutils: change db README to docs.icinga.org
* idoutils: fix wrong debug output in db_hello()
* idoutils: fix save custom variables segfault caused by wrong char*
* idoutils: fix duplicate rows in table servicecheck
* idoutils: fix duplicate rows in table systemcommands, timedevents, timedeventqueue (missing unique keys)
* idoutils: add upgrade path/sql queries for unique key failure - check the docs for upgrading information

* idoutils: Oracle improvents:
* add prepared statements for most called queries
	- hoststatus
	- servicestatus
	- hostchecks
	- servicechecks
	- timedevents*
	- contact_notificationcommands
	- programstatus
* modify data[] to get unixtimestamps only
* rewrite prepared statement queries to use SELECT unixts2date(unixtimestamp) FROM DUAL
* allow rebinding of params in prepared statement for multi execution
* prepared statement at db init
* bind params the correct way
* execute binded statement query instead of plain MERGE statement
* code is now the same as NDOUtils Oracle, but with
	- better code base (actual NDOUtils code)
	- long_output
	- SSL support
	- better library: ocilib instead of own driver
	- more prepared statements/bind param queries
* split code into ocilib OR libdbi
* --enable-oracle during configure decides which rdbm lib will be used


1.0 RC - 28/10/2009
* idoutils: add Oracle support with oclilib
* idoutils: add ssl support
* idoutils: add configure --enable-oracle
* idoutils: add configure --enable-ssl
* idoutils: add configure -with-ocilib-lib/inc for ocilib detection
* idoutils: add oracle support to ido2db.cfg
* idoutils: add ocilib runtime version check
* idoutils: add ocilib linked at runtime (prevents setting of $ORACLE_HOME during configure)
* idoutils: add ocilib hack to temp #undef CONFIG_H during compiling
* idoutils: add #define USE_ORACLE set by --enable-oracle
* idoutils: add #ifndef USE_ORACLE #else #endif to get code compatible with libdbi
* idoutils: add ocilib connection, statement, resultset
* idoutils: add ocilib execute statement, commit (no autocommit since we want to use the pros of oracle!)
* idoutils: add ocilib insert id for sequence handling
* idoutils: add ocilib free statement to match with sequences
* idoutils: add oracle sysdate instead of NOW()
* idoutils: add long_output to oracle.sql - introduce clob (Character Large Object)
* idoutils: add even more debugoutput for oracle
* idoutils: modify configure to use OCI_CHARSET_ANSI
* idoutils: modify configure to set LD_LIBRARY_PATH for ido2db init script
* idoutils: modify formatting to get more readable
* idoutils: fix typecast bug - unsigned long is bigger then int
* idoutils: fix oracle notif_timeperiod_object_id (30 chars max)
* idoutils: fix oracle table serviceescalationcontactgroups (30 chars max)
* idoutils: fix hoststatus/servicestatus/servicecheck unique constraint updating mismatch
* idoutils: fix insert_or_update queries where update violates unique constraint
* idoutils: remove and ignore oracle table_prefix (30 chars max)
* idoutils: workaround to handle more than 4k Data which may exceed service outputs incl. long perf_data
* core init: delete 'su' usage since all previously su touched files were created by the icinga user
* idoutils: fix unescape bug during tabstops
* idoutils: fix idomod/icinga segfault while try to use ssl on unix sockets
* idoutils: set long_output/perfdata to TEXT in MySQL
* core configure: set INIT_OPTS depending on detected host OS (no more root:root on FreeBSD?)
* core spec: added new spec file
* idoutils: fix case insensitive comparison in MySQL using BINARY
* idoutils: change ido2db.cfg: ndo2db_[user|group] to ido2db_[user|group]
* core web: fix missing gif icon copy


0.8.4 - 09/15/2009
* idoutils: fix failure_prediction_options in tables hosts, services for postgres
* idoutils: add configure support for manual libdbi detection
* idoutils: fix typo laste_state (wrong column)
* idoutils: fix buffer freeing with NAGIOS_SIZEOF_ARRAY
* idoutils: delete old mysql files coming from ndoutils
* idoutils: add new versionhandling, idomod/ido2db now shows version of Icinga core
* idoutils: rename existing mysql/pgsql files, added upgrade/fix files
* idoutils: fix wrong typecast in servicestatusdata_add, no more segfault while query preparing
* idoutils: add experimental db trimming interval option in ido2db.cfg
* core: fix wrong copyright url for Ethan
* docu: fix quickinstall guides


0.8.3 - 09/02/2009
* idoutils: add PostgreSQL support
* new Icinga documentation in docbook and html format
* fetch current Nagios patches
* fix support links after make
* idoutils: add note if install desired but not enabled
* idoutils: fix installing of rc.ido2db in make install-idoutils
* idoutils: add db/pgsql.sql, adapted table scheme for postgresql
* idoutils: add time conversion functions for postgresql
* idoutils: add try update, if affected rows=0, then insert queries for postgresql
* idoutils: modify insert queries, normalized to sql-standard
* idoutils: add insert-or-update functions in dbqueries.c, prepared for more rdbms
* idoutils: modify insert-or-update queries, build data array for functions
* idoutils: fix string escaping for postgresql
* idoutils: fix last insert id for postgresql - needs defined sequence id for table 
* idoutils: modify command_line in commands table to varchar(1024)
* idoutils: add more debug output
* idoutils: Support 8192 chars of perfdata


0.8.2 - 08/12/2009
* create a new basic ido2db init script
* idoutils: fix child signal handling in ido2db
* idoutils: fix escaping of customvars before insert
* idoutils: fix in buggy rotate command execution
* idoutils: fix fmt specifier in ndo2db_daemonize() error
* idoutils: added long_output support to IDOUtils
* idoutils: Fix for not retrying read on 'EAGAIN' and 'EINTR' soft errors (Opsera Ltd)
* idoutils: Allow externalcommands table to be trimmed with a specific time limit (Opsera Ltd)
* icinga-api added: The search function now uses the icinga-api submodule
* various minor changes


0.8.1 - 06/17/2009
------------------
* Archived Logfiles renamed from Icinga-date-syntax.log => icinga-date-syntax.log (capital 'i')
* cherry picked latest Nagios Patches (see Nagios Changelog below)
* new ido2db command switch: '-f' don't daemonize the ido2db
* ido2db will now prints out available database drivers
* fix ido2db segfault when try to access non existing tables
* DocBook v5 conversion
* Fix menu frameset cols width


0.8 - 05/19/2009
----------------
* Almost biggest deal to rename the components
* including IDOUtils (former NDOUtils) into the core code,
  updating configure & make to get in touch with it
* changed database handling in IDOUtils from native
  database support to libdbi (libdbi.sourceforge.net) as a
  abstraction layer, enable compile try with
  "configure --enable-idoutils"
* Included a new stylesheet/icon theme based on Vautour Style
  Vautour Style have been created by Yoann LAMY.
  The menu of Vautour Style use the javascript framework MooTools (http://mootools.net/).
  The icons of Vautour Style use "Silk icon set" (http://www.famfamfam.com/lab/icons/silk/) created by Mark James.
  "Silk icon set" is licensed under Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/).



#####################
Nagios 3.x Change Log
#####################

This is an archived Changelog, all changes on the Icinga Core will be marked and 
referenced through issues marking on dev.icinga.org regarding their origin.

Look at www.nagios.org for an actual changelog of Nagios Core.


3.2.1 ????
-----------------
ENHANCEMENTS
* Link to allow scheduling downtime for all services on a host (Hendrik Baecker)
* Speedup to CGIs when lots of comments or downtimes in status.dat file (Jonathan Kamens)
* Test for rw/nagios.cmd (Hendrik Baecker)

FIXES
* Fix for incorrect scheduling when time has gone back an hour (partial fix for 24x7)
* Fix for compile on Fedora Core 3 (bug #0000082)
* Fix for compile on Solaris
* Fix for logging test, which was not timezone aware (bug #0000077 - Allan Clark)
* Trivial cleanups for autoconf (Allan Clark)
* Fix case consistency in CGI output
* Set to search external libs, rather than include all the time (Allan Clark)
* Fixed test compile on linux servers
* Fixed incorrect return code in test failures
* Create Makefile in t/
* Added test for testing status.cgi with a large number of comments and downtime
* Updated tests to check that comment ids are sorted
* Fixed deferred sorting of comments and downtimes. Added tests to prove sorting
* Fix for template configurations which use negated wildcards (Tim Wilde)

WARNINGS

3.2.0 - 08/12/2009
------------------
* Fix for read-only permissions bug in CGIs that caused problems viewing comments (bug #0000029)
* Fix for incorrect CGI reports (availability, trends, etc.) when reporting period spans Daylight Savings Time (bug #0000046)
* Fix for detection of truecolor support in GD library (Lars Hecking)
* Reverted to use --datadir configure script option instead of the more recently introduced --datarootdir option
* Status and retention files are now flushed/synced to disk to prevent incomplete information being displayed in CGIs
* Fix for incorrect next service check time calculation when Nagios is reloaded with different timeperiod ranges
* Updated Fedora quickstart guide to indicate PHP requirements
* Known issue: Service checks that are defined with timeperiods that contain "exclude" directives are incorrect re-scheduled.  Don't use these for now - we'll get this fixed for 3.4



3.1.2 - 06/23/2009
------------------
* Fix for CPU hogging in service and host check scheduling logic



3.1.1 - 06/22/2009
------------------
* New "important check command" flag for use in service templates, to aid configuration in distributed environments
* Fix for nagios validation error when no services defined
* Fix for stylesheet link
* Fix for extinfo.cgi error message when cgi.cfg doesn't exist
* Fix for notifications.cgi where Update button on right didn't retain host information when no host= was in query parameters
* Fix for potential bug where a contactgroup with no members could cause parsing errors
* Fix for W3 validation for history.cgi
* Fix for W3 validation for extinfo.cgi
* Fix for nagiostats to return non-zero with failures in MRTG mode
* Added t/ directory for tests. Use make test to run. Requires perl on development server
* Fix for duplicate event_id attributes in status and retention data
* Fix for duplicate unlink() during check processing
* Added missing check period column to host config display (CGI)
* Fix for embedded Perl initialization under FreeBSD
* Fix for incorrect re-initialization of mutext after program restart
* Fix for incorrect weighting in host flap detection logic
* Added libtap to distribution. Use ./configure --enable-libtap to compile
* nagios.log permissions are now kept after log rotation
* Fix for "Max concurrent service checks (X) has been reached" messages - will now push services 5 + random(10) seconds ahead for retry
* Fix for removing old HTML files for web frontend that are now replaced with PHP equivalents (index/main/side.html)
* Fix for incorrect service history link text in CGIs
* Fix for useless code loop in netutils.c
* Fix for potential divide by zero in event scheduling code
* Fix for trailing backslash in plugin output causing memory corruption in CGIs
* Fix for bug that could affect host/service scheduling during clock time skew or changes to timeperod definitions between restarts
* Leading whitespace from continuation lines in configuration files is now stripped out
* Fix for bug where pipe (used by IPC) file descriptors get inherited by child processed (e.g. event handlers) (bug #0000026)
* Fix for failure to daemonize - Nagios now bails (bug #0000011)
* Fix for notifications about flapping starting not processed properly by retention data
* Patch to add transparency to statusmap icons for truecolor images
* Patch to add read-only permissions to extinfo CGI
* Security fix for statuswml.cgi where arbitrary shell injection was possible



3.1.0 - 01/25/2009
------------------
* Added automatic update check functionality - runs once a day to check for new Nagios releases
* Splash screen on web UI now indicates whether a new update is available (requires that update checks are enabled)
* Updates to nagiostats utility for faster execution if using external stats file
* Added a bit more verbosity to config verification
* Fixed bug in logging event handlers
* Fix to prevent debug output from being shown when Nagios is compiled with embedded Perl interpreter
* Fix for CPU hogging issues on OpenBSD
* Fix to RPM spec file for sample configuration files
* Fix for bug in time calculation routines that could cause notification, reporting, and check scheduling anomalies
* Fix for scheduling forced service checks from web interface
* Minor mods for frameset base for HTML compliance (more fixes coming soon)
* Fix for bug in handling of hard host and service problem states during restarts that could incorrectly set current check attempt and adversely affect notifications, etc.
* Fix for bug in timeperiod calculation of year/month rollovers and display of fixed calendar dates in web interface



3.0.6 - 12/01/2008
------------------
* Fix for CGI submission of external commands (writing newlines and submitting service comments)
* Fix for Apache group membership in RPM spec file
* Fix for improper notification propagation command processing
* Better out-of-disk-space error handling when writing retention and status files
* Disabled adaptive check and eventhandler commands for security reasons
* Fix for reading output from system commands (event handlers, etc) that have timed out
* Added wildcard host matching in CGIs
* Fixes for playing audio alerts in CGIs
* Fix for incorrect host status links in status CGI when viewing hostgroup summary
* Added support for x509 cert authentication in the CGIs



3.0.5 - 11/04/2008
------------------
* Security fix for Cross Site Request Forgery (CSRF) bug reported by Tim Starling. 
* Sample audio files for CGIs removed from distribution
* Fix for mutliline config file continuation bug
* Minor fix to RPM spec file
* Fix for AIX compiler warnings
* Minor sample config file fix
* Added documentation on CGI security issues



3.0.4 - 10/15/2008
------------------
* Fix for properly terminating plugins when parent processes get killed (e.g. using 'killall nagios' with check_timeout plugins running)
* Fix for event broker callback when service notifications are disabled
* Fix for scheduling scheduling servicegroup downtime with 'hosts too' option in CGIs
* Fix for segfault under Solaris with NULL plugin output
* Fixes for bugs in sample event handlers - stop/start active service checks and enable notifications
* Cosmetic fix for logging of notifications
* Fix for high CPU utilization under OS X
* Fix for host/service name encoding in CGIs (trends and availability reports, etc.)



3.0.3 - 06/25/2008
------------------
* Typo fix in object config routines
* Segfault fix in history CGI
* Fix for bug in retention of contact notification options
* Fix for bug in calculation of negative (month) days in timeperiod definitions
* Fix for debug logging of notifications
* Fix for encoding host and servicegroup names in trends and availability CGIs
* Fix for checking for abnormal termination of host checks
* Fix for spurious orphaned host check errors with non-scheduled hosts
* Fix for url encoding null string in CGIs (caused status CGI segfault)
* Fix for encoding URLs in macros
* Fix for bug in handling of contact groups in escalation definitions
* Changes to service check event broker logic (DNX patches)
* Minor doc updates



3.0.2 - 05/19/2008
------------------
* Minor bug fixes in CGIs to ensure extra host/servicegroup url strings are terminated properly
* Minor bug fix in navigation frame link for unhandled service problems
* Better error logging during fork() errors
* Embedded Perl is now disabled by default
* Fixed bug in parsing host dependencies
* Added note to Makefile about 'make install-webconf' option
* Fixed bug in config CGI where active host check attributes were not displayed properly
* Fixed bug in status CGI where sounds were not played for passive service problems
* Fixed sample script for distributed monitoring
* Updated p1.pl to allow for 4KB lines in Perl plugin output under epn
* Fixed bug in command for disabling contact notifications
* Fix for bugs in host and service orphan check logic
* Fix for 'make install' functionality for contrib directory
* Fix for host problem links in CGI status summary view
* Fix for properly escaping macros containing URLs
* Patches for possible XSS vulnerability in CGIs (CVE-2007-5803) - Florian Weimer & SUSE Linux team



3.0.1 - 04/01/2008
-------------------
* Fixed bug in trends CGI with user not being authorized for hosts/services
* Fixed bug in status CGI with page layout messing up when sounds enabled



3.0 - 03/13/2008
-------------------
* Faster program startup times (especially in large installs) with new object lookup code
* Fix for special contact inheritance rules in host and service escalations
* Fix for threading-related bugs that resulted in checks failing under NetBSD
* Configure script fix
* Fix for bug in processing $CONTACTADDRESSx$ macros
* Documentation fixes



3.0rc3 - 02/26/2008
-------------------
* Fix for passive service check stats bugs in nagiostats
* Nagios no longer warns or errors when encountering host/contact/service groups with empty memberships
* Debugging info fix in notification logic
* Fix for multiline support in config files (again)
* Fix for stripping illegal chars in output, perfdata macros
* Patch to allow non-ASCII characters in notifications, etc.
* Fix for bug in on-demand service macros with blank/null host names
* Fix for cleaning up zombie child processes if large installation tweaks disabled and fork twice option disabled
* Fix for incorrect total checks counts in nagiostats
* Fix for segfault if embedded Perl support compiled in, but disabled by config file option
* Smarter host check logic to reduce (uncached) on-demand host checks during "stable" service problems
* Fix for recursive subgroup membership for host/service/contact groups
* Fix for renaming/moving files on network file systems
* New flap detection startup logic speedups when large installations tweaks enabled
* Speed improvements during startup routines when using precached config
* Speed improvements in reading retention data during startup
* Safer loading mechanism for NEB modules to prevent segfaults in Nagios
* Fix for segfault in CGIs when converting object names with extended ASCII characters to URLs



3.0rc2 - 01/29/2008
-------------------
* Changed embedded audio MIME types in CGIs to "application/wav"
* Fixed bug in sample helloworld NEB module
* Modified p1.pl to allow for multiline-line output of Perl plugins under embedded Perl interpreter (epn)
* Fix for incorrect environment variables names for custom host and contact macros
* Fix for external command file thread polling code
* Fix for cfg_dir directive not working on Solaris
* Fixed segfault in extinfo CGI when passed an invalid service description/name
* Fixed bug in summary CGI with reports on specific hosts
* Fix for writing check result files under Cygwin
* Fix for not building sample helloworld.o event broker module if event broker is disabled by configure script
* Fix to sample event handler scripts
* Fix for handling plugin output with escaped newlines and backslashes
* Fix for bug in service and host event scheduling logic
* Fix for reversed object sort order when using fast startup options
* Fix for bug with notification commands not being run if notifications were not logged



3.0rc1 - 12/17/2007
-------------------
* Fixed bug where status log was left after a restart with faulty config
* Fix for compilation bug on systems that don't support setenv() (e.g. Solaris)
* Support for line continuation/breaks in config files - end lines with one backslash (\) to continue on next line
* Fixed bug with not deleting old check result files that contained results for invalid host/service
* Fixed bug with init script option to check Nagios config 
* Auto-filled comment/author fields for acknowledging problems through WAP interface
* Fixed bug with processing of CONTACTGROUPNAMES, NOTES, NOTESURL, and ACTIONURL macros
* Doc fix regarding soft state dependencies
* Fix for segfault in event broker module code



3.0b7 - 11/23/2007
------------------
* Memory leak fix in macro code
* Added use_timezone option to allow Nagios instances to run in non-native timezones
* Fix for encoding HTML characters in CGIs
* Fix for unimplemented $LASTHOSTSTATE$, $LASTHOSTSTATEID$, $LASTSERVICESTATE$, and $LASTSERVICESTATEID$ macros
* Fixes for memory leaks with passive check, performance data routines
* Makefile fixes
* Code cleanup, fixes for compiler warnings
* Fix to prevent FLAPPINGSTART notifications from incorrectly being resent after program restarts
* Added free_child_process_memory and child_processes_fork_twice options for performance tweaks
* Fix for bug in processing of on-demand service macros



3.0b6 - 10/31/2007
------------------
* Logging API revamp, cleanup
* Misc internal performance improvements
* Bug fix with attempting to access an uninitalized mutex if external commands are disabled
* Updates to .cvsignore files
* Fix for embedded Perl interpreter to recache scripts when they're modified
* Fix for cancelling inheritance with 'null' in various object directives
* Additional functionality of additive inheritance feature
* Fixed bug where missing host/servicegroups in object definitions didn't always generate errors
* Increased max plugin output length cap from 4kb to 8kb
* Caching of Perl scripts now enabled by default if embedded Perl interpreter is compiled in
* Fix for segfault when contact definitions had no notification timeperiods defined
* Retention of host/service check scheduling options
* Fix for race condition when freshening host and service check results
* Added null -b option to install-sh for Solaris so install scripts don't break
* Added .gitignore files for git users
* Added new external commands to change notification period for host, services, and contact on-the-fly
* Added new external commands to change modified object attributes (affecting data retention logic)
* Added $ISVALIDTIME:$ and $NEXTVALIDTIME:$ on-demand macros
* Added enable_environment_macros option to determine whether or not macros are set as environment vars
* Major overhaul (read: complete rewrite) of macro code, so macros are now only computed when found
* Summary macros are now available as regular (non-environment) macros if requested when large installation tweaks are enabled
* Bug fix for scheduling hostgroup host downtime through web interface
* Better error logging when failing to rename/move files
* Added $LASTHOSTSTATE$, $LASTHOSTSTATEID$, $LASTSERVICESTATE$, and $LASTSERVICESTATEID$ macros
* Addition of object pointers to event broker module data structures (may require event broker module rebuilds)
* Spec file changes to better support RPM builds on 64-bit systems
* Possible fix for Unicode html encoding errors in CGIs



3.0b5 - 10/08/2007
------------------
* Minor bug fix in CSS files
* Bug fix in sample config files
* Fix for recovery notifications not being sent out when first_notification_delay option used in host/service definitions
* Fix for ochp commands not running properly
* Special additive inheritance rule: escalation contact(group)(s) that begin with '+' will  now inherit from associated host/service definition if not inheriting from another escalation template
* Status file is no longer deleted during restarts due to a SIGHUP or external command
* Improvement in service flap detection logic
* Added additional_freshness_latency config file directive
* Improvements in freshness check logic
* Temporarily removed $SERVICEGROUPMEMBERS$ macro, as it was causing crashes for some users (this need further investigation)
* Added $EVENTSTARTTIME$ macro to indicate time Nagios started processing events (checks, etc.)
* Added use_pending_states option to CGI config file to determine displayed state of hosts/services that have not been checked
* Workaround to prevent browsers from incorrectly using cached statusmap image on page refresh
* Fix for incorrect latency calculations for passive host/service checks
* Added passive check latency stats to nagiostats
* Added support for relative paths in config_file and config_dir directives
* Fix for compile error under Solaris



3.0b4 - 09/27/2007
------------------
* New macros: $HOSTGROUPMEMBERS$, $HOSTGROUPNOTES$, $HOSTGROUPNOTESURL$, $HOSTGROUPACTIONURL$, $SERVICEGROUPMEMBERS$, $SERVICEGROUPNOTES$, $SERVICEGROUPNOTESURL$, $SERVICEGROUPACTIONURL$, $CONTACTGROUPALIAS$, $CONTACTGROUPMEMBERS$, $NOTIFICATIONRECIPIENTS$, $NOTIFICATIONAUTHOR$, $NOTIFICATIONAUTHORNAME$, $NOTIFICATIONAUTHORALIAS$, $NOTIFICATIONCOMMENT$
* Removed host/service downtime author/comment macros introduced in 3.0b2 in favor of more generic $NOTIFICATION...$ macros
* Fix for segfault when cancelling active scheduled host downtime
* Macro code cleanup 
* Added on-demand contact and contactgroup macro support
* More complete (but still partial) support for macros in CGIs ($xNOTES$, $xNOTESURL$, and $xACTIONURL$ macros)
* Fixed bug in config CGI with displaying incorrect notification interval for escalations
* Added new 'check' option to init script to verify configuration
* Added custom host and service notifications, with option to force the notifications and broadcast them to all contacts
* Fix for on-demand/cached host check statistics
* Fixed bug where null host check command would cause high CPU utilization
* Alias, if not specified, now defaults to object name in host, hostgroup, servicegroup, contact, and contactgroup definitions
* Fixed bug with excluding hosts, services, and contacts with bang (!) in object definitions
* Fixed bug in nagiostats with NULL mrtg data arguments printing bogus string
* Added custom delimiter option in nagiostats output (useful for CSV output)



3.0b3 - 08/30/2007
------------------
* Minor bug fix for debug logging of macros
* Version number is now printed in CGI pages
* HTML documentation cleanup (HTML Tidy, link checking, etc.) 
* Fixed bug where notifications would not be sent out host/service contact group members



3.0b2 - 08/29/2007
------------------
* Fix for some sample config files getting installed with .sample extension
* Improvements to the host check logic performance (more use of cached and parallel checks)
* Minor bug fix with notification timeout error messages
* Fix bug with logging of passive host and service check results
* Fixed bug with warning about no contactgroups being defined
* Internal data structure cleanups
* New macros: $SERVICEISVOLATILE$, $TOTALHOSTSERVICES$, $TOTALHOSTSERVICESOK$, $TOTALHOSTSERVICESWARNING$, $TOTALHOSTSERVICESUNKNOWN$, $TOTALHOSTSERVICESCRITICAL$, $HOSTDOWNTIMEAUTHOR$, $HOSTDOWNTIMEAUTHORNAME$, $HOSTDOWNTIMEAUTHORALIAS$, $HOSTDOWNTIMECOMMENT$, $SERVICEDOWNTIMEAUTHOR$, $SERVICEDOWNTIMEAUTHORNAME$, $SERVICEDOWNTIMEAUTHORALIAS$, $SERVICEDOWNTIMECOMMENT$
* Added 'lock_author_names' option to CGI config file to prevent alteration of author names
  when submitting comments, scheduled downtime, etc.
* Fix for concatentation of multiline plugin perfdata
* Added status CGI host/service property filters for hard and soft states



3.0b1 - 07/31/2007
------------------
* Fixed bug with processing epn directives in Perl plugins
* Fixed bug with check_result_path config option being ignored
* Added $MAXHOSTATTEMPTS$ and $MAXSERVICEATTEMPTS$ macros
* Fixed bug with incorrect output returned from embedded Perl plugins
* Fixed bug where status data file was not read by CGIs using mmap()
* Fix for CGI segfault
* Program status now updated at least every 5 seconds for addons that watch NDOUtils DB
* Added escape_html_tags option to CGI config file to escape HTML tags in plugin output
* Added optional integration with Splunk into the CGIs
* Added new action and notes URL target frame options to CGI config file
* Added new 'exclude' option to timeperiod definitions for easy on-call rotation definitions



3.0a5 - 06/19/2007
------------------
* Fixed problem with multiline long plugin output and Perl plugin output
* Fixed compilation problem with embedded Perl
* More debug/trace log functionality
* Added new 'passive_host_checks_are_soft' config option
* Fixed bug with host notifications occurring during soft host states
* Fixed bug in processing multiple check results contained in a single file
* Expanded timeperiod definitions to allow for day/date exceptions
* Changes to sample config files and installation location
* Changed debug file format to include current pid
* Added 'initial_state' option to host and service definitions to allow for non-UP/OK initial states
* Minor changes to freshness threshold calculation
* Documentation updates



3.0a4 - 05/08/2007
------------------
* Fix for segfault fix when low priority event queue's only item is removed
* Added test for writeability of temp directory during configuration test
* Fix for unescaping backslashes in plugin output in the CGIs
* Removed check_result_buffer_slots option from main configuration file
* New IPC method for passing host/service check results back to main daemon
* Added check_result_path option to set path used to store check results
* Added max_check_result_file_age option to control processing of check results in older files
* Added new --with-temp-dir option to configure script
* Removed legacy 2.x host check logic and use_old_host_check_logic option
* Removed DEBUGx options from configure script
* Added new debug/trace log functionaltiy (only partially complete)
* Fixed compilation error under OSX
* Fix for SIGTERMs being seen as SIGEXITs, non-logging of SIGTERMs/shutdowns



3.0a3 - 04/10/2007
------------------
* Configure script fix for no mail program found/installed on system
* Fix for compilation warnings about implicit declaration of round() - may (strangely enough) also
  fix segfaults that were occuring on some systems
* Added detection of Apache conf.d directory and 'make install-webconf' functionality
* Configure script option bug fixes for cygwin and embedded perl
* Added buffer stats and check statistics to performance information in extinfo CGI
* Hostgroup and servicegroup definitions now have notes, notes_url, and action_url directives
* Patch for incorrect time down percentage in availability CGI
* Command definitions and host/service plugin perfdata with HTML should now be escaped in CGIs
* Updated init script to fix a race condition during restarts
* Documentation updates



3.0a2 - 03/27/2007
------------------
* Added warning about aggregate_status_updates directive being deprecated.
* Added new "p" option to host/service_perfdata_file_mode directives for pipes.
* Fix for incorrect performance data file write/append mode options
* Regular expression matching in object config files now also triggered by '+' and '\.'
* Added support for extended regular expression matching in object config files
* Fix for incorrect processing of y_2d coordinates for host objects in statusmap layout
* Fix for current status of hosts with no check command defined
* SIGSEGV signals should now be logged again (broken in 3.0a1)
* Added warning for invalid temp_path directory
* Documentation bug fixes and updates



3.0a1 - 03/06/2007
------------------
Here are all the changes since Nagios 2.x:

* Adaptive monitoring:
     - Check timeperiod can now be modified on-the-fly

* Notification changes:
     - Added first_notification_delay to host and object definitions to delay first notification
     - Notifications are now sent out when flap detection is disabled on a host/service-specific
       or program-wide basis ($NOTIFICATIONTYPE$ macro = "FLAPPINGDISABLED")
     - Notifications can now be sent out when scheduled downtime starts, ends, and is cancelled.  The
       $NOTIFICATIONTYPE$ macro will be set to "DOWNTIMESTART", "DOWNTIMEEND", or "DOWNTIMECANCELLED",
       respectively.  In order to receive downtime notifications, specify 's' or 'downtime' in contact, host,
       and/or service notification options.

* Object changes: 
     - Added ability to use multiple template names (separated by commas) in object definitions
     - Added ability to null out optional character directives in object definitions (using 'null' without quotes)
     - Added hostg/service/contactgroup_members directives to host/service/contactgroup definitions,
       respectively, for allowing including host, service, or contact members from "sub" groups.
     - Added support for custom variables in host, service, and contact definitions
     - Added host_notifications_enabled, service_notifications_enabled, can_submit_commands to contact definitions
     - Added optional display_name directive to host and service definitions
     - Removed serviceextinfo definitions and merged variables with service definitions
     - Removed hostextinfo definitions and merged variables with host definitions
     - Services inherit contactgroups, notification interval, and notification period from associated host if not specified
     - Service escalations inherit contactgroups, notification interval, and escalation period from associated service if not specified
     - Host escalations inherit contactgroups, notification interval, and escalation period from associated host if not specified
     - Host, service, host escalation, and service escalation definitions now support a 'contacts' directive, along with 'contact_groups'
     - Service dependencies with blank dependent host/hostgroup names will create "same host" dependencies


* Performance optimizations:
     - Added ability to precache object config files
     - Added ability to exclude object relationship and circular path
       checks from verification process

* Check output:
     - Multiline output support for host and service checks

* Macro changes:
     - Added $LONGHOSTOUTPUT$ and $LONGSERVICEOUTPUT$ macros
     - Added $TEMPPATH$ macro
     - Removed $COMMENTDATAFILE$ and $DOWNTIMEDATAFILE$ macros
     - Added $HOSTDISPLAYNAME$ and $SERVICEDISPLAYNAME$ macros
     - Custom host/service/contact macros accessible via $_HOST<varname>$, $_SERVICE<varname>, or $_CONTACT<varname>$.
       On-demand host/service macros for custom vars are working.  Custom vars are also set as environment vars.
     - On-demand service macros can contain and empty host name field.  In this case, the name of the current host will be used.
     - $HOSTNOTES$ and $SERVICENOTES$ macros may now contain macros themselves

* Flapping changes:
     - Added flap_detection_options directive to host and service definitions to control which
       states (i.e. OK, WARNING, UNKNOWN, and/or CRITICAL) are used in flap detection logic
     - Percent state change and state history are now retained and recorded even when host/service
       flap detection is disabled.
     - Hosts and services are immediately check for flapping when flap detection is enabled program-wide.
     - Hosts/services that are flapping when flap detection is disabled program-wide are now logged

* External command changes:
     - Added PROCESS_FILE external command to allow processing of external commands found in
       an external (regular) file.  Very useful for passive checks with long output or scripting.
     - Custom commands can now be submitted to Nagios.  Custom command names are prefixed with an underscore
       and are not processed internally by the Nagios daemon.  They may, however, be processed by NEB modules.
     - External commands are now checked by default.  Nagios 2.x and earlier did not check for external commands
       by default.

* Status data changes:
     - Contact status information is now saved (although it is not processed by the old CGIs)

* Retention data changes:
     - Contact status information is now retained across program restarts
     - Comment and downtime IDs are now stored across program restarts, should be unique unless reset
     - Added retained_host/service_attribute_mask variables to control what host/service attribs are retained globally
     - Added retained_process_host/service_attribute_mask variables to control what process attribs are retained
     - Added retained_contact_host/service_attribute_mask variables to control what contact attribs are retained globally

* Downtime changes:
     - Scheduled downtime entries are now stored in the status and retention files

* Comment changes:
     - Comments are now stored in the status and retention files
     - Non-persistent acknowledgement comments are now deleted when the acknowledgement is removed (instead of when Nagios restarts)

* Host check logic changes:
     - Most host checks are now run asynchronously, in parallel!
     - Scheduled host checks now help improve performance, instead of hinder it (if caching is enabled)
     - Added cached_host_check_horizon option for enabling use of cached host check results
     - Added enable_predictive_host_dependency_checks for enabling predictive checks of dependent hosts
     - Added retry_interval to host definitions
     - Added check_for_orphaned_hosts option and support for orphaned host checks
     - Passive host check states can now be translated from their original DOWN/UNREACHABLE state if the
       new translate_passive_host_results option is enabled

* Service check logic changes:
     - 'parallelize' option in service definitions deprecated/no longer used
     - Added cached_service_check_horizon option for enabling use of cached service check results
     - Added enable_predictive_service_dependency_checks for enabling predictive checks of dependent services

* Dependency changes:
     - Host and service dependencies can now have a timeperiod during which they're valid (dependency_period directive)

* Event broker changes:
     - Updated NEB API version
     - Modified adaptive program status callback
     - Added adaptive contact status callback
     - Added host/service precheck callbacks to allow modules to cancel/override internal host/service checks

* Embedded Perl changes:
     - Added 'enable_embedded_perl' option to main config file to control whether epn is enabled/disabled
     - Added support for perl plugins to specify whether or not they should be run under the epn...  The
       second to tenth line of a perl plugin may start with '# nagios: +epn' or '# nagios: -epn' to explicity indicate that it
       should be run under the epn.
     - Added 'use_embedded_perl_implicitly' option to main config file to determine whether or not perl
       plugins will use the epn if they don't explicitly allow/disalow it

* CGI changes:
     - Hostgroup and servicegroup summaries now show important/unimportant problem breakdowns like the TAC CGI
     - Minor layout changes to host and service detail views in extinfo CGI

* Misc changes:
     - More information given when testing scheduling (-s command line option)
     - Removed fixed length restrictions for host names and service descriptions
     - Plugin output length restriction bumped up to 4K
     - Added temp_path directive to main config file for specifying temp directory
     - Multiline output support for system commands via my_system()
     - Added global event_id and notification_id vars that are at least unique during a single run of Nagios
     - Default is now to check for orphaned services, rather than not
     - Renamed service_reaper_frequency to check_result_reaper_frequency
     - Fractional notification and check intervals are now supported (e.g. "3.5" minutes)
     - Backslash chars are now used to escape command arguments that contain \ or ! characters
     - Added 'external_command_buffer_slots' and 'check_result_buffer_slots' variables to specify size of internal buffers
     - Added check statistics to status file, available via nagiostats for graphing in MRTG
     - Added $HOSTGROUPNAMES$, $SERVICEGROUPNAMES$, $HOSTACKAUTHORNAME$, $HOSTACKAUTHORALIAS$, $SERVICEACKAUTHORNAME$,
       and $SERVICEACKAUTHORALIAS$ macros


 

