Prepared for release 0.0.12
[gnucomo.git] / ChangeLog
1 Dec 12, 2007 - Release 0.0.12
2 ====================================
3
4 gcm_input
5 ---------
6
7 - New options added for logrunner:
8    -l <file>: Read input from logfile <file>.
9    -s <file>: Use <file> as the status file instead of the default.
10    -v Verbose output
11
12 - Logrunner outputs debug information only when the -v option
13   is added on the command line.
14
15 - Buffer overflow problem in logrunner with input lines of more than 4096
16   characters fixed.
17
18 gcm_daemon
19 -----------
20
21 - Added a new script gcm_maintenance.php to cleanup the database
22   and check referential integrity. Purging old log entries is
23   removed from the gcm_daemon script.
24
25 web interface
26 -------------
27
28 - Added fields to edit the range of a DYNAMIC property.
29
30 - The index.html page in now obsolete and redirects to index.php
31
32 - Added an option to perform one action on multiple notifications at once.
33
34 - When blocking a subnet, maintain the references to the log table from
35   all IP addresses in that subnet.
36
37 Nov 22, 2007 - Release 0.0.11
38 ====================================
39
40 Database
41 ---------
42
43 - Added the class definition for a filesystem parameter.
44 - New issue type: 'property out of range'.
45
46 gcm_input
47 ---------
48
49 - Logrunner can select a specific host from a logfile, in case
50   syslogd acts as a log server for multiple systems.
51   This adds a new parameter (logile/fromhost) to the configuration
52   file.
53
54 - Logrunner uses the official hostname (FQDN) instead of the
55   hostname returned by gethostname().
56
57 - Handling of parameters is greatly improved.
58   When creating a new parameter from an XML report which is fed into
59   gcm_input, the class definition is used as a template to fill in
60   the default values for the properties.
61   The class is also used as a template when a new property is added
62   to an existing parameter.
63
64 - DYNAMIC properties are now handled properly. Instead of making a
65   'changed property' notification, the value is checked against the
66   defined range for the property. An 'out of range' notification
67   is created when this condition is detected.
68
69 - Added a new filter which can directly read the output
70   of the UNIX df command. A brief description is added in
71   the user manual.
72
73 - Bugfix: Segmentation fault when reading an rpm package list
74   with empty lines.
75
76 - New program: spamdetect.
77   Expirimental utility to log manually reported spam and have
78   Gnucomo detect the spammer's IP address.
79
80 - Added a number of usefull scripts, mainly for use in Gnucomo clients.
81
82 web interface
83 -------------
84
85 - The buttonbar at the top of each page is now a fixed 'div' element
86   instead of a framed page.
87   Contributed by Edwin Nadorp.
88
89 PHP classes
90 -----------
91
92 - Added a PHP5 module for the configuration class.
93
94 Test
95 ----
96
97 - The test script, gcmtest can run individual tests as opposed to running
98   all tests in sequence.
99
100 Oct 19, 2007 - Release 0.0.10
101 ====================================
102
103 - Improved method for finding PostgreSQL libraries in configure script.
104
105 Database
106 ---------
107
108 - Fixed field declaration for PostgreSQL 7.4
109 - New tables: log_abuse, object_abuse and service_pattern
110 - Added general service patterns in the service 'ANY'
111 - Added new issue types.
112 - Log_adv and derived tables removed.
113
114 logrunner
115 ---------
116
117 - Status files in /var/lib
118 - Rewrote most functions and datastructures into C++
119 - Use the Gnucomo (XML) configuration file
120
121 gcm_input
122 ---------
123
124 - Accept '/' and '.' characters within the service name in a system log.
125   When extracting the service name, the '/' character is not considered
126   part of that name, though.
127 - Textual changes in parameter notifications
128 - Experimental start of database OO abstraction layer.
129 - The '-' character is part of the service name.
130 - Skip the Email header when reading XML input.
131
132 gcm_daemon
133 -----------
134
135 - Bugfixes in the analysis of sendmail logs.
136 - Send email about open notifications to an object's users.
137 - Added log analysis for spam and abuse in sendmail log entries.
138 - Added pattern check on log entries with the service_pattern table.
139 - Create notifications from log entries with pattern matching.
140 - Record the date when adding the number of abuses for an IP address
141   in the abuse list.
142
143
144 web interface
145 --------------
146
147 - Added a form to edit user data.
148 - Added a view for the log analysis with a link from the log page.
149 - New page: Parameter classes administration.
150 - New page: Abuse list
151 - Added an interface to edit check patterns to the services page.
152 - Manually edit parameters.
153 - View logs from abusing IP addresses.
154 - Added an interface for editing issues.
155 - In the abuse list, IP addresses can be whitelisted.
156 - Improved interface for editing check patterns.
157
158 Test
159 ----
160
161 - Added test data for Problem Report 15, 16 and 17
162
163 Documentation
164 ---------------
165
166 - Added a list of related projects and introduced the concept of
167   dynamic parameters in the manifest.
168
169 Dec 24, 2003 - Release 0.0.9
170 ====================================
171
172 Database
173 ---------
174
175 - Changed the type of log_adv_daemon_email.delay and log_adv_daemon_email.xdelay
176   from time to interval. These delays can be more than 24 hours.
177
178 libgnucomo
179 ----------
180
181 - Catch an exception if we can not setup a database transaction.
182
183
184 gcm_input
185 ---------
186
187 - SQL_Escape(): Backslashes are correctly escaped with another backslash
188 - XML_Entities(): transform non-ASCII characters into hexadecimal entities.
189 - Do not add another parameter_notification record is the notification
190   already exists for that parameter.
191 - Catch exceptions from the database library.
192 - Major redesign. All input is handled through XML. Raw input data is first
193   transformed into an XML document for further processing.
194   A collection of polymorphic classes handle the transformation of various
195   input formats into XML.
196 - Classifying input data is done with a finite improbability calculation.
197
198 gcm_daemon
199 -----------
200
201 - Create separate notifications for different objects in service_check().
202   Fixes problem report 23.
203 - Change the notation for delays from "days+hh:mm:ss" to "days hh:mm:ss. This
204   fixes problem report 14.
205 - In linux_daemon_sendmail(), check the existence of '=' before using it as a
206   field separator. Fixes problem report 15.
207
208
209 web interface
210 --------------
211
212 - Optionally show or hide removed parameters from the parameter
213   comparison page.
214
215 Documentation
216 ---------------
217
218 - Added a User Manual, based upon the draft TUTORIAL
219
220
221 Sep 04, 2003 - Release 0.0.8
222 ====================================
223
224 Database
225 ---------
226
227 - Fixed a few typos in the database creation script.
228 - BUGFIX: Secondary indices on log_notification were unique.
229 - Additional information in the 'usr' table: 'display_name' and 'email'.
230 - Added new issues and services.
231
232 gcm_input
233 ---------
234
235 - Fixed a namespace problem in message.cpp
236 - Fixed a gcc 2 vs. gcc 3 problem in gcm_input.cpp
237 - Reject log entries that are found to be invalid.
238 - A date without the time for the '-d <date> option will
239   assume midnight on that date.
240
241 gcm_dameon
242 ----------
243
244 - In PHP, the method configuration::read() will also read
245   a user-specific configuration from the home directory if a 
246   PHP script is not run through the web server.
247 - Accept command argument '-c config' to use an alternate
248   gnucomo configuration.
249 - New PHP methods:
250    db::Result() - Returns the result from the last query.
251    db::Field()  - Returns the value of a single field.
252    db::new_notification() - Create a new notification in the database.
253 - Check the log table against the servies running on an object and
254   create notifications if a service is not supposed to be available
255   or is not known at all.
256
257 libgnucomo
258 ----------
259
260 - Changed the gnucomo_database class to the new PostgreSQL
261   library, libpqxx
262 - Overloaded gnucomo_database::Field() to include the Result
263   from a query as an argument.
264
265 web interface
266 --------------
267
268 - New page to enter and modify services.
269 - The objects page provides an interface to edit the list of
270   services and users for an object.
271
272 Test
273 ----
274
275 - Reduced the amount of output from test scripts.
276 - Added output data that is expected from test scripts.
277 - New test: tests the database upgrade with gcm_daemon
278 - Overall test script: gcm_test. Runs all tests in sequence.
279
280
281 Aug 15, 2003 - Release 0.0.7
282 ====================================
283
284 Database
285 ---------
286
287 - Added index to the history table to improve performance.
288
289 gcm_input
290 ----------
291
292 - Added a new section 'logging' with three configuration parameters:
293    method       - Output method to use for logging.
294    destination  - Name of the log output destination.
295    level        - Log level: Verbose output if greater than 0.
296 - Added '-i' option for incremental parameter updates.
297 - Debug output to the log stream instead of cerr.
298 - Fixed namespace problems in XPath searches of the DOM.
299 - Moved string utility functions to a separate file.
300 - Different kinds of log files are parsed by a collection of objects
301   of different classes, derived from the base class line_cooker
302   Depending on the message content or the message_type element in
303   XML, one of these objects is selected.
304 - Logrunner is integrated with gcm_input. Although its functionality
305   is still limited, a connection between logrunner and gcm_input
306   is beginning to form.
307
308 gcm_daemon
309 ----------
310
311 - BUGFIX: Print an error message if a parameter does not have
312   any history.
313 - BUGFIX: undefined variables and indices when processing sendmail logs.
314
315 web interface
316 --------------
317
318 - BUGFIX: Convert special characters for HTML (<, >, and &) into
319   their entities.
320 - BUGFIX: Removed parameters were somtimes shown on the wrong side
321   of the parameter difference page.
322 - Added performance measurement to the parameters page.
323 - Added editing of detailed object information.
324
325 Jul 15, 2003 - Release 0.0.6
326 ====================================
327
328 - Gcm_input reads IRIX system logs.
329 - Gcm_input exits without reading any input if the database connection fails.
330 - Gcm_input extracts the hostname out of the 'From:' or 'Message-Id:' line
331   of an email header.
332 - New member C++ function gnucomo_database::is_conected().
333 - New columns in the table 'log_adv_daemon_email': size, pri, relay,
334   status_details and dsn.
335 - Added several indices for the table 'log_adv_daemon_email'.
336 - In phpclasses/db.class.php: Added the database connection string as
337   an argument to the function copy_db_class.
338 - Gcm_daemon processes logs from sendmail.
339 - Fixed the PHP member function db::db_connect(). The Postgres connection
340   string is now passed as an argument to that function.
341 - Gcm_input reads cooked log entries from an XML input stream.
342 - New database tables: notification_check, notification_check_buffer,
343   notification_check_line and object_statistics.
344 - PHP function db::query() returns the result index.
345 - PHP function db::num_rows() accepts a result index as argument
346   (default = 0 -> use result from the previous query).
347 - New PHP function db::fetch_object().
348 - Gcm_daemon gathers statistics on parameters, notifications, etc. for all objects.
349 - The Objects web page uses the new object_statistics table.
350 - The Log web page shows the log one day at a time.
351 - Removed parameters are displayed in a shaded style.
352
353 Feb 21, 2003 - Release 0.0.5
354 ====================================
355
356 - The notifications web page keeps a record of each time a notification
357   is displayed. Either on a listing or in detail.
358 - Improved the table layout of the objects web page.
359 - In the users page of the web interface, you can add a new user and
360   make him/her a member of a group.
361 - Users can change their password through the users page of the web interface.
362 - Gcm_input also detects packages that are removed from the system.
363 - In gcm_input, determining the version number of a package in a RPM
364   list is improved. Only the last one or two parts of the string that
365   begin with a '-' and a number are considered the version.
366 - The C++ function gnucomo_database::new_notification() uses the SQL
367   function currval() to obtain the identification number
368   of the most recently created notification.
369 - The C++ class gnucomo_database prints the query on cerr, along
370   with the error message when the query results in an error.
371 - Removed the 'Change Password' image from the main menu.
372   Changing passwords is integrated in te users page.
373 - Added the 'form' class on table and td elements. This class is intended
374   for borderless tables that are used to layout HTML forms.
375 - A new style 'h2.error' for error reports in the stylesheet.
376   Put borders around the tables and cells in the web interface.
377   Added right-alignment for numbers and fixed width for timestamps.
378 - Gcm_daemon maintains the last notification identifier.
379 - Setup the groups and database permissions. The three groups
380   are: view, ops and admin.
381 - Added two new entries to the action table.
382 - All web interface pages use the page class. This provides for a
383   uniform session and database handling.
384 - Use our own error handler for PHP errors and warnings in the web interface.
385 - Added log, notification and parameter counters to the 'object' table.
386   Counting these things at the time a user interface needs them is
387   too slow. Other programs, like gcm_daemon en gcm_input should prepare
388   these counters for quick retrieval.
389 - Show the total number of Log entries, parameters and notifications
390   on the object page of the web interface.
391 - Added new tables to the database : log_adv_daemon and log_adv_daemon_email.
392 - Made gcm_daemon a 'proper' executable.
393 - Paths of included files in PHP scripts are more flexible.
394 - Gcm_daemon recognizes important start and stop events of various daemons
395 - Gcm_daemon checks for exiting daemons in the log entries.
396 - Directory structure of PHP scripts reorganized. PHP scripts that are included in
397   both gcm_daemon and the web interface are now in the directory src/phpclasses.
398
399
400 Feb 05, 2003 - Release 0.0.4
401 ====================================
402
403 - Added style parameters for diff-like table views and textarea elements.
404 - Display and handle notifications in the web interface.
405 - Display the difference of all package class parameters for two objects
406   in the web interface.
407 - New PHP class added: 'page'. This is a (sort-of abstract) base class
408   for all Gnucomo web interface pages. It hanldes the session, login,
409   opening the database and the head and tail of the web page.
410 - gcm_input creates notifications when a new package is discovered
411   in a 'rpm -qa' list or when the version of a package is changed.
412 - Bug fix: action.statuscode was in upper case.
413 - Added new tables to the database: parameter_class and parameter_notification.
414 - New C++ function: gnucomo_database::new_notification(). retruns the id number
415   of the newly created notification record.
416 - Added new records to the 'type_of_issue' table.
417 - Changed semantics of actionid 9 in the 'action' table.
418 - Bugfix in gcm_input: The hostname in a system log may contain
419   digits as well as letters.
420 - Added new fields to the 'type_of_issue' table.
421
422 Dec 06, 2002 - Release 0.0.3
423 ====================================
424
425 - Directory structure is reorganized and prepared for GNU configure.
426 - gcm_input sets the value of log.processed to FALSE when inserting a
427    new log entry into the database
428 - When a syslog entry arrives from last year, gcm_input subtracts one from the
429    year of arrival to create the year of the log entry.
430 - Gcm_input reads output from "rpm -qa" and enters packages in the parameter table.
431 - Changes to log and log_adv tables described in the manifest.
432 - Added description of gcm_daemon in the design.
433 - Added new program (in PHP): gcm_daemon.
434 - Added a check on the database version in gcm_damon.
435 - Database-login in gcm_damon can be done using TCP/IP or UNIX-sockets.
436 - Gcm_daemon processes iptables-records including ICMP support.
437 - Returning values with ICMP (bounced) are seperate and linked to the same logfile.
438 - Which each new version records that haven't been recognized are processed again
439   through gcm_daemon.
440 - Added program-specific database user and password in config file.
441 - Added new arguments to gnucomo_config::Database(): user and password.
442   If empty, default values are taken from the config file.
443 - Implemented a slightly functional web interface that shows some
444   output from the database.