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