1--------------------------------------------------------------------
22.23-xx changes from 2.21-xx
3--------------------------------------------------------------------
4
5Fixes:
6 o Fix sporadic eol problem with some IIS/W3C logs
7
8 o Fix compiler directive syntax error (broke some 64 bit systems)
9
10Changes/Additions:
11 o Modest speed improvements in hash table code
12
13--------------------------------------------------------------------
142.21-xx changes from 2.20-xx
15--------------------------------------------------------------------
16
17Fixes:
18 o Added missing memory deallocation call in DNS lookup code.
19
20 o Minor fixes to configure script
21
22Changes/Additions:
23 o Added "YearTotals" config option for main index page totals
24
25 o Rename local stricmp() function to ouricmp() to prevent name
26   confilict on systems that happen to provide it already.
27
28--------------------------------------------------------------------
292.20-xx changes from 2.01-xx
30--------------------------------------------------------------------
31
32Fixes:
33 o Fixed problem with timing totals.
34
35 o Fixed referrer linking to avoid possible xss injection.
36
37 o Fixed month change detection error that caused incorrect report
38   dates when logs had a 'gap' longer than a year.
39
40 o Fixed buffer overrun possibility in parsing code and user agent
41   mangle logic.
42
43 o Added symbolic link checks for file I/O to prevent possible
44   privilege escalation exploits.  Disallows reading from or writing
45   to any file that is a symlink.  Thanks to Julien Danjou.
46
47 o Added code to preserve the history and incremental data files in
48   the event of a crash before writing to them completely.  Thanks
49   to Robert Millan for the idea and initial code.
50
51Changes/Additions:
52 o Added native geolocation services, which fully supports both IPv4
53   and IPv6 lookups.  Adds the configuration keywords 'GeoDB' and
54   'GeoDBDatabase' along with the '-j' and '-J' command line options.
55
56 o Added 'wcmgr', "The Webalizer (DNS) Cache file Manager" to the
57   distribution to provide cache file maintenance.  See the supplied
58   man page for a description and usage information.
59
60 o Changed history code and main index page to allow for more than
61   12 months of reports to be displayed.  Added the config keywords
62   'IndexMonths' (-K command line option), 'GraphMonths' (-k command
63   line option) and 'YearHeaders' to control how index is displayed.
64
65 o Changed Berkeley DB code to use current 4.x APIs.
66
67 o Added support for bzip2 compressed log files (.bz2) as a compile
68   time option (--enable-bz2).  If enabled, bzipped files will be
69   decompressed automatically during processing.
70
71 o Added support for W3C formatted logs.  Based on code submitted
72   by Klaus Reimer.
73
74 o Added GeoIP support as compile time option (--enable-geoip). Adds
75   'GeoIP' and 'GeoIPDatabase' config keywords, '-w' and '-W'
76   command line options. (http://www.maxmind.com/)
77
78 o Added IPv6 support.  Based on initial code by Jose Carlos Meneiros
79   and modified to support Solaris and other problematic platforms.
80
81 o Added 'CacheIPs' config option to allow saving unresolved addresses
82   in the DNS cache.
83
84 o Added 'CacheTTL' config option which allows the DNS cache time to
85   live (TTL) value to be specified at run-time.
86
87 o Added 'SearchCaseI' config option to specify if search strings
88   should be treated as case insensitive or not.  The default value,
89   'yes', causes search strings to be treated as case insensitive.
90
91 o Added 'HTAccess' config option.  Allows writing a default .htaccess
92   file to the output directory.
93
94 o Added ability to display flags in the top country table.  Adds the
95   config keywords 'CountryFlags' and 'FlagDir', and -z command line
96   option.
97
98 o Added 'StripCGI' config option to configure how CGI variables on
99   the end of URLs are treated (can now be stripped or left in place).
100
101 o Added 'DefaultIndex' config option to enable/disable the use of
102   "index." as a default index name to be stripped from the end of URLs.
103
104 o Added 'TrimSquidURL' config option to allow squid log URLs to be
105   reduced in granularity by a user definable amount.  Thanks to code
106   submitted by Stuart Gall.
107
108 o Added 'OmitPage' config option (and the '-O' command line switch)
109   to prevent specified URLs from being counted as pages even if they
110   otherwise would be.  Thanks to code submitted by Adam Morton.
111
112 o Added 'IgnoreState' config option (and the -b command line switch)
113   to allow ignoring any existing incremental data file (similar to
114   the IgnoreHist/-i option).
115
116 o Changed logic to always generate summary report (index.html),
117   even if no records were processed.
118
119 o Added color support to allow changing graph colors.  Based on the
120   Webalizer-usecolor code submitted by Benoit Rouits.  Adds 11 new
121   config options, see the README file for complete descriptions.
122
123 o Added language 'lang=' specification in generated HTML files.
124
125 o Added 'LinkReferrer' config option to allow/disallow links in the
126   top referrers table.
127
128 o Added 'PagePrefix' config option to allow URL prefix matches to
129   be counted as pages, regardless of file extension or type.  Thanks
130   to code submitted by Remco Van de Meent.
131
132 o Enabled large file support (LFS) to support logs greater than 2Gb
133   in size on systems that support LFS.  Also increased the size of
134   most internal counters to handle larger sites.
135
136 o Minor changes to generated HTML output
137
138 o Updated language files country codes for current IANA TLDs
139
140 o Changed the meaning of the -v command line switch.  It now
141   causes verbose information to be displayed at run-time
142   (Informational and Debug messages).
143
144 o Changed Group* config options to allow a quoted string for
145   the match string.  This allows spaces to be embedded in the
146   string.
147
148 o Changed log record parsing logic to allow spaces in URLs.
149
150 o Made configuration keywords, boolean configuration values
151   (yes/no), and log file types case insensitive.  Also fixed
152   defaults for invalid values to reflect documented defaults.
153
154 o Changed configure script to use --sysconfdir to specify the
155   location of the default webalizer.conf configuration file.
156   Also added support for DESTDIR during install to aid binary
157   package builds.
158
159--------------------------------------------------------------------
1602.01-xx changes from 1.30-04
161--------------------------------------------------------------------
162
163Fixes:
164 o Fix posible obscure buffer overflow bug in DNS resolver code
165
166 o Added additional extended character fixes
167
168 o Let code accept partial content response codes along with 200's
169
170 o Added code to catch blank hostnames (yes, they have been found!)
171   Will convert them into 'Unknown'
172
173 o Security fix for cross-site scripting vulnerability found by
174   Flavio Veloso (www.magnux.com).
175
176 o Fixed a TOTAL_RC off by one error, which would prevent the last
177   response code from being saved when using incremental mode.
178
179 o Fixed possible segfault condition in MangleAgent code on
180   some malformed user agent names.
181
182 o Fixed DNS to prevent hangs on blank and malformed hostnames.
183
184 o Fixed problem calculating visits.  Changed timestamps to use
185   seconds since epoch (1/1/1970) which results in more accurate
186   analysis.  Also changed normal out of sequence code to handle
187   up to 1 hour of 'slop' in the timestamps.  This changed the
188   semantics of the VisitTimeout and -m configuration options, as
189   the values are now specified in number of seconds.
190
191 o Fixed hostname lowercase problem (wasn't) when using DNS lookups.
192
193 o Fixed problem with incremental datafile which could cause a read
194   error under certain circumstances (removes control characters).
195   Also changed code to now abort on a read error.
196
197 o Fixed problem with hash table node creation where objects that
198   were exactly the maximum length would wind up leaving a garbage
199   byte at the end of the memory space allocated.  This was causing
200   some very infrequent and widely different problems.
201
202 o Fixed problem where country graph could be produced incorrectly
203   if using a non-english language and the country name overlapped
204   the pie chart.
205
206 o Found and fixed a problem with a possible 32-bit wrap around
207   problem using incremental mode on large sites.  The problem
208   would cause the KBytes data on large groups to become inaccuate.
209
210Changes/Additions:
211 o Modified configure to allow specification of the default config
212   directory.  If not given, will use /etc (/etc/webalizer.conf).
213
214 o Added DailyGraph and DailyStats configuration options to enable
215   or disable the Daily usage graph and stats table from output.
216
217 o Improved visit calculation logic to reduce 'false' counts generated
218   by external image referrals.
219
220 o Added reverse DNS lookup capability.  This adds the command
221   line switchs -D and -N, and configuration keywords "DNSCache"
222   and "DNSChildren".  See the DNS.README for additional info.
223   Based in part on code submitted by Henning P. Schmiedehausen
224   (hps@tanstaafl.de).
225
226 o Added ability to dump Sites, URLs, Referrers, User Agents,
227   Usernames and Search Strings to tab delimited files, suitable
228   for import into most database and spreadsheet programs.  The
229   location of this file may be specified using the "DumpPath"
230   configuration keyword, allowing the data to be kept someplace
231   outside the web servers document tree.  The configuration
232   keywords "DumpSites", "DumpURLs", "DumpReferrers", "DumpAgents",
233   "DumpUsers" and "DumpSearchStr"  have been added to control the
234   file dumps.  Column headers can be included in the file with
235   the "DumpHeader" keyword.  Dump filename extensions may be
236   specified using the "DumpExtension" keyword (default is .tab).
237
238 o Added username analysis, based on usernames found in the log,
239   and only available if username information is present in the
240   log (ie: http authentication or wu-ftpd xferlog).  The keywords
241   'GroupUser', 'HideUser', 'IgnoreUser', 'IncludeUser', 'AllUsers',
242   and 'TopUsers' have been added to the configuration file code.
243   This change also modified the format of the incremental data file.
244
245 o Added the ability to display ALL sites, URLs, Referrers,
246   User Agents and Search Strings on a separate HTML page from
247   the normal statistics page.  This adds the configuration
248   keywords 'AllSites', 'AllURLs', 'AllReferrers', 'AllAgents'
249   and 'AllSearchStr', which can have either a "yes" or "no"
250   value (default is "no").  Will add a "View All..." link to
251   the bottom of the appropriate "Top" table if enabled.
252
253 o Added support for squid proxy logs, thanks to code submitted
254   by Steinar H. Gunderson (sgunderson@bigfoot.com).  To use
255   squid logs, specify a LogType of 'squid' in the configuration
256   file.  This also changed the behaviour of the '-F' command
257   line switch, which now requires a second argument of either
258   'clf', 'ftp' or 'squid'.
259
260 o Completely modified the way the various TOP tables are handled
261   and sorted, which now allows extremely large top tables without
262   any performance degredation.  Previously, tables greater than
263   a few hundred elements produced a noticable perfomance penalty
264   during processing.
265
266 o Added the ability to group domains automatically and to hide
267   individual host names from the report, using the 'GroupDomains'
268   and 'HideAllSites' configuration keywords (-g and -X command
269   line options).  Domain Grouping is configurable as to the level
270   of grouping (second level domain, third, etc...).  HideAllSites
271   forces only grouped site records to be displayed if any.  Based
272   on ideas/code by Michael Klemme (mklemme@gmx.de).  This changes
273   the behaviour of the '-g' switch, which previously was used to
274   force the use of GMT time for reports.
275
276 o Added user configurable search engine specification, used for
277   search string analysis.  This adds the 'SearchEngine' keyword
278   in configuration files.  Based on idea/code by Alexey Kizilov.
279
280 o Changed code to use the latest version of GD which supports PNG
281   images instead of GIF images.  Also included changes in configure
282   script to ensure the presence of the libpng and libz libraries.
283
284 o Added ability to override log file to STDIN by use of '-' on
285   the command line.
286
287 o Added gzipped logfile support.  The program will automatically
288   detect logfiles with a '.gz' extension and uncompress on the
289   fly.  Uses gz file support of zlib, since it's required for
290   our gd/png stuff anyway.  Please note that using gzipped logs
291   will incur a small performance penality.
292
293 o Minor changes to search string code to increase accuracy.  This
294   also removes a previous condition that would occasionally cause
295   search strings to incorrectly be counted twice or to be counted
296   as different search strings when only differing by a space.
297
298 o Minor changes to URL parse code to allow additional characters.
299   Also changed unescape code to properly handle extended chars.
300
301 o Major changes to hash table node format for reduced memory usage.
302   Instead of fixed size strings, the new format will dynamically
303   allocate string memory and use pointers to existing table data
304   under certain circumstances.  The memory savings is significant
305   and will be greatly noticed with large sites.  Because of these
306   changes, the formatting of the incremental data file had to be
307   changed, therefore it is incompatible with previous versions.
308
309 o Major code reorganization and cleanup.  This was to facilitate
310   future developent and make things more managable.
311
312 o Usual documentation updates for new features/functions.
313
314--------------------------------------------------------------------
3151.30-xx changes from 1.22-06
316--------------------------------------------------------------------
317
318Fixes:
319 o Fixed minor bug that would allow incorrect site totals for the
320   first day of the month under certain conditions.
321
322Changes/Additions:
323 o Added Top Entry and Exit Page tables.  Added configuration file
324   keywords TopEntry (-e command line) and TopExit (-E command line)
325   to specify the number of entries to display for each table.  The
326   default for both is 10.  See README for additional information.
327
328 o Added 'Group' labels.  Allows display of a specified label for
329   grouped entries (in 'Top' tables).  Based on patch submitted
330   by Oliver Graf (ograf@rhein-zeitung.de).  See sample.conf for
331   examples.
332
333 o Added 'Visits' totals.  The length of time that constitutes a
334   'visit' can be set using the VisitTimeout configuration keyword
335   (-m command line option).  The value must be given in HHMMSS
336   format, you can omit leading zeros. Default is 30 minutes (3000).
337
338 o Added 'Pages' totals, based on user specified extensions.  Changes
339   made to generated graphs as well.  Configuration keyword PageType
340   (and command line -P switch) allows specification of extensions
341   to use (defaults to 'htm*' and 'cgi').  Also called "pageviews".
342
343 o Added Search String analysis.  Keyword 'TopSearch' defines how
344   many of the top search strings to display.  Default is 20. Can
345   be disabled by using zero (0).
346
347 o Added native support for ftp logs (xferlog ala wu-ftpd).  Added
348   'LogType' configuration file keyword (-F command line option)
349   to specify log type.  Values can be either 'web' or 'ftp', with
350   the default of 'web'.
351
352 o Changed graphs to handle pages and visits totals. Also  added
353   color coded legends, which can be disabled using the GraphLegend
354   configuration keyword (-L command line option).  Default is to
355   display them.
356
357 o Added background lines to graphs.  Default is 2 lines, and can
358   be set to any number using the GraphLines configuration keyword
359   (-l command line option).  Can use anywhere from none (0) to
360   twenty lines.  They will be drawn in all but the country graph.
361
362 o Added CountryGraph configuration file keyword (-Y command line
363   option) to enable/disable display of country usage pie chart.
364
365 o Added FoldSeqErr keyword (-f command line option).  Normally,
366   the program will ignore log records that are out of sequence
367   (chronological order).  This option lets them be folded into
368   the analysis anyway, as if the were the same date/time as the
369   last good record.  Apache users can safely ignore :)
370
371 o Added additonal 'Top' tables for SITES and URLs, sorted by
372   KBytes instead of hits.  Two new configuration file keywords,
373   TopKSites and TopKURLs, can be used to specify the number of
374   entries for each (zero to disable).  Default for both is 10.
375
376 o Added additional calculations for max/avg files, pages, visits
377   and KBytes in monthly statistics.
378
379 o Updated generated HTML code to fully comply with the HTML 4.0
380   Transitional spec.  DOCTYPE header reflects this change as well.
381
382 o Changed code to use 4 digit years in filenames.  Purely for the
383   Y2K phobes who couldn't deal with only two digits (even though
384   it was _purely_ for humans, the program couldn't care less).
385   Unfortunately, this means that you will have to rename previous
386   month files to the new format.  Not a big deal if you plan on
387   re-running all your logs to take advantage of the new features.
388
389 o Major changes to both history file and incremental file formats
390   to handle additional totals (pages/visits data).  As a result,
391   this version is INCOMPATABLE with previous versions.  See the
392   file README.FIRST for important information on upgrading.
393
394 o Language files and documentation updated for new functions.
395
396--------------------------------------------------------------------
3971.22-xx changes from 1.20-11
398--------------------------------------------------------------------
399
400Fixes:
401 o Fixed bug in country total generation.  Caused country table
402   to show bogus entries if logs contain hostnames that were not
403   fully qualified (ie: don't have the domain name/TLD portion).
404
405 o Changed/fixed incremental data I/O routines to better detect and
406   handle error conditions.  This involved some minor incremental
407   data file format changes as well.  Fixes problem large sites were
408   having where random tables were getting munged.
409
410 o Fixed record parse code to better detect and strip query portion
411   from URLs and Referrer strings.
412
413 o Fixed segfault condition when more than MAX_CTRY entries were
414   specified for the "Top Countries" table.
415
416Changes/Additions:
417 o Added code to detect negative byte transfer sizes in logs (another
418   netscape server kludge :)  Could cause KByte xfer sizes to become
419   corrupt.
420
421 o Several small changes (mostly ifdef/endif's) to make code compile
422   clean 'out-of-the-box' across more platforms (ala SunOS).  Also
423   added a GNU autoconf 'configure' script which helps a bit as well.
424
425 o Added Include* keywords.  Allows forcing the inclusion of specified
426   log records.  Takes precedence over counterpart Ignore* keywords.
427
428 o Added HTMLPre, HTMLBody, HTMLEnd and HTMLExtension keywords, and
429   changed behaviour of HTMLHead keyword.  Previous versions need
430   only change the 'HTMLHead' keword in existing files to 'HTMLBody'
431   to upgrade.  Thanks to Colin Viebrock <cmv@privateworld.com> for
432   the idea and code examples.
433
434 o Changed mangle agent code to support Opera and other browsers.
435   Also updated response codes to IETF HTTP/1.1 Rev 6 draft.
436   Thanks to Yves Lafon <ylafon@w3.org> for this these.
437
438 o Added HistoryName and IncrementalName keywords, which allow the
439   specification of the history and incremental data filenames.
440
441 o Added UseHTTPS keyword, which allows using 'https://' instead
442   of 'http://' for links to URLS in the 'Top URLs' table.  Also
443   added check for URLs that already have the protocol specified
444   (such as on virtual web and proxy servers), and to use unmodified
445   if found (will only force to lowercase for matching).
446
447 o Added code to ignore out-of-sequence log records.
448
449 o Added code to force hostnames to lowercase (was causing country skew).
450
451 o Disabled display of blank (zero hit) days at start of daily stat table.
452
453 o Added records per second calculation to timing totals.
454
455 o ALT= tags now use translated strings instead of forcing english.
456
457 o Updated documentation for new functions/features.
458
459--------------------------------------------------------------------
4601.20-xx changes from 1.12-10
461--------------------------------------------------------------------
462
463Fixes:
464 o Modified record parse routine to not touch stuff between quotes
465   (").  Was causing problems parsing some malformed request fields.
466
467 o Fixed memory leak in MangleAgent code, and relocated to elimitate
468   un-necessary processing (causing segfault on some machines).
469
470Changes/Additions:
471 o Changed transfer totals on host/url structures to support large
472   groupings (such as *.gif) on heavly hit servers.  Hopefully, this
473   should cure the 32bit overflow problem large sites were having.
474
475 o Changed daily transfer totals to support transfers greater than
476   roughly 4.2 gigabytes a day.
477
478 o Added some missing HTML tags and altered the way totals are
479   calculated on the 'Top' tables (to correct for grouped records).
480
481 o Added incremental run capability (-p command line option or
482   "Incremental" configuration file keyword).
483
484--------------------------------------------------------------------
4851.1x-xx changes from 1.00-05
486--------------------------------------------------------------------
487
488Fixes:
489 o Re-wrote the Group* logic, fixing a bug that allowed hiding of
490   objects when they shouldn't be.
491
492 o Fixed broken IgnoreReferrer code.
493
494 o Modified config parse code to handle extended characters.
495
496 o Misc. minor bug fixes/changes.  Added a missing fclose.
497
498 o Cleaned up generated HTML.
499
500 o Fixed duplicate warnings on large referrer fields.
501
502 o Fixed country table bug adding grouped records to totals.
503
504Changes/Additions:
505 o Added GroupSite, GroupReferrer and GroupAgent keywords to round
506   out the Group* configuration options.
507
508 o Added GroupShading and GroupHighlight keywords to allow selective
509   highlight and shading on grouped rows in table.
510
511 o Removed the '-L' command line option.  Groupings can now only
512   be specified from a configuration file.  Language files changed
513   to reflect change.
514
515 o Added '-V' command line option (identical to '-v') for version.
516
517 o Added additional language support.  Language files will be marked
518   /* New for 1.1 */ where changes have been made.
519
520 o Various rewrites to streamline the code, accomidate the new
521   group options and make things easier down the road when I implement
522   incremental (partial log) processing.
523
524 o Usual README and CHANGES documentation updates.
525
526--------------------------------------------------------------------
5271.00-xx changes from 0.99-06
528--------------------------------------------------------------------
529
530Fixes:
531 o Modify record parser so that spaces in usernames (auth field)
532   don't cause record to be skipped (w/'Bad Record' message).
533
534 o Included various error conditions that were being ignored in
535   the timing statistics ('bad records' value) totals.
536
537Changes/Additions:
538 o Added GMTTime (-g) option to force display of timestamps in
539   GMT (UTC) time instead of local timezone.
540
541 o Added GroupURL (-L) option for grouping of URLs as if they
542   were a single object.  See README for details.
543
544 o Language support in the form of a language specific header
545   file containing all strings used by The Webalizer.  English
546   file is used by default unless changed.  Support for other
547   languages will be distributed as I receive them.
548
549--------------------------------------------------------------------
5500.99-xx changes from 0.98-16
551--------------------------------------------------------------------
552
5530.99 is mostly a bug-fix release, with a few added extra goodies.
554
555Fixes:
556 o Fixed monthly total transfer size (silent) overflow problem.
557
558 o Fixed the numerous fprintf format errors.  Only seemed to wreak havok
559   on non-intel machines though.
560
561 o Fixed core dump condition on certain machines when using stdin for
562   input.
563
564 o Fixed floating point code that caused divide by zero errors on some
565   platforms (most noticably on SCO OpenServer).
566
567 o Netscape server kludges:  Added code to deal with Netscape log header
568   record gracefully.  Also added workaround for timestamp error where
569   Netscape sometimes makes a day have 0-24 hours instead of 0-23.  The
570   Webalizer will now treat anything greater than 23 as 0.
571
572 o Resized some fixed field sizes to gain memory usage improvements.
573
574Changes/Additions:
575 o Ignore* config keywords added.  This allows you to completely ignore
576   certain log records based on site name, URL, user agent or referrer.
577   * Use will cause inaccurate statistics results.  See documentation.
578
579 o ReallyQuiet config keyword (-Q command line option) added.  Causes
580   The Webalizer to supress _all_ messages.  Useful for cron jobs.
581
582 o Removed the "Sites" total at the bottom of the summary by month.
583   The total for sites is a useless number and produces a misleadingly
584   high value which detracts from the accuracy of the other totals.
585
586 o Updated README and CHANGES
587