Changes in ModLogAn 0.8.0 againt 0.7.x

$Id: Changes-0.8.0.txt,v 1.5 2002/11/04 17:46:57 ostborn Exp $

This file tries to keep track of the user-visible changes of modlogan 0.8.0
against modlogan 0.7.18. We all know that 0.8.0 is faster, more stable and
the like. 

But:
- what features are new ?
- which have changed ?
- which were dropped ?

Critical Changed behaviour
~~~~~~~~~~~~~~~~~~~~~~~~~~

!!! old config-file won't work if don't apply this change !!!

* the outputdir setting in the global-section has been replaced by
  1. statedir = ... in the global section
  2. outputdir = ... in the sections of the output-plugins
  
  This change is required for 2 reasons:
  1. the state-file (mla.state.xml and friends) don't have to be
     user-accessable. A simple principle of security is to provide only 
     the neccesary features.
  2. You can use multiple output-plugins at ones which generate output into
     different output directories which will will use only one statefile.
     Take a look at the examples at http://www.modlogan.org/

New command line options:
~~~~~~~~~~~~~~~~~~~~~~~~

* An option -u was added. When combined with -r (don't check if root), it
  permits to start modlogan as root, then to drop privileges to specified user.
  Example: modlogan -r -u nobody -c modlogan.conf


New options useable in modlogan.conf or modlogan.def.conf:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- processor
  - web
    * log_ungrouped_searchengines (0|1)
      This option activates logging of matched searchengines not yet grouped.
      The main goal is to help maintenance of group.searchengines.conf file.
      Log file is state_dir/ungrouped_searchengines.txt	by default.
      Example:
      log_ungrouped_searchengines = 1

    * log_ungrouped_searchengines_file (absolute or relative filename)
      This option permits to change file where ungrouped searchengines are
      logged. If the file doesn't start with '/' then it will be relative to
      state_dir.
      Example:
      log_ungrouped_searchengines_file = /tmp/ungrouped.txt
      log_ungrouped_searchengines_file = ungrouped.txt

    * hidebrokenlinksref (regexp)
      This option will hide records with a referrer matching regexp from
      'missing pages/broken links reports'.
      By the way, you can hide records with empty referrer (generally missing
      pages but not broken links).
      Example:
      hidebrokenlinksref = "^-$"
      hidebrokenlinksref = "^.?$"

    * decode_searchstrings (0|1)
      When set, search strings are url-decoded (ie. "%3d" -> "=", "+" -> " ").
      It's set by default. 


- output
  - modlogan
    * showmonthinmenu (0|1)
      When used, full month name will be printed at top of nav. menu in month
      reports.
    * showmonthlygraphgrid (0|1)
      When used, horizontal lines will be printed in the background of monthly
      history graph (index page). This help to compare bargraphs. Color of the
      grid defaults to border color. You can change it using grid option.
    * grid (#RRGGBB)
      This option defines the color of grids used in graphs.
    * showmonthmaxima (0|1)
      It permits to highlight max. values in monthly history table (index
      page). A new class 'tinym' was added to modlogan.css-dist, modify it if
      needed (by default we just use bold font).


New features:
~~~~~~~~~~~~

- generic
  - global config variables
    * global-variables can be used the assign static and dynamic
      config-variables to other config-file options
      
      If statedir and the outputdir should be the same use:
      
      [globals]
      ...
      statedir = directory
      
      var(odir, $statedir)
      
      [output_modlogan]
      ...
      outputdir = $odir
      
      "var(<varname>, <value>)" defines a global-variable and assignes
      <value> to it.
        <value> may be a plain string (static) and a config-option from the
      same config-section (dynamic). In this case the directive name has to
      be prefixed by a "$" as seen in the example. 
    * this feature is used for a implicit global-variable "splitby" which is
      set to the resulting "splitby" value
      
      [processor_web]
      
      splitby = srvhost, "^([a-z.])$",$1
      
      will split the logs by the name of the virtual server, will add the
      result of match ($1) the outputdirectory and will set the global
      variable $splitby for later use:
      
      [output_template]
      ...
      variable = HOSTNAME, $splitby
      hostname = $splitby
      
- output
  - modlogan
    * In summary report, an empty colored cell is now printed before row labels.
      These colors are the same we use everywhere to mark hits, pages, ...
      You can change them, just modify the following classes from
      modlogan.css-dist: td.hits, td.pages, td.files, td.visits, td.traffic,
      td.hosts.
    * In response codes report, a '%' column was added.
    * In entry/pages reports, label 'Hits' was changed to 'Visits'.
    * In visit paths report, a multiplier is printed just before paths to
      shorten table.
      Before where we had:
          /page
          /page
          /page
      Now we have:
          3x /page
      You'll understand the need of it when paths are like 75x / (seen).

  - template
    * In entry/pages reports, label 'Hits' was changed to 'Visits'.

       	
Changed behaviour
~~~~~~~~~~~~~~~~~~~~~~~~~

- processor 
  - web
    * the searchengine handling has been rewritten to use a inverse approach
      in detecting searchengines in referers
      - up to 0.7.18 we used a white list of know searchengines and their
        searchkeys. This was too hard to handle
      - starting with 0.8.0 we use a black-list of false positives and very
        generic withlist.
      You use the latest default config-file you won't see a difference.
      - see doc/ignore.searchegine.conf and friends 
- input
  - clf
    * the useragent handling has been rewritten ist handle more user-agents
      - see doc/match.useragents.conf
