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