LooperNG 1.3 Release Notes

This release includes many new goodies:

New Preprocessor for Configuration Files

Karl Kaufman made multiple changes to the the configuration file parser and added a preprocessor feature. With this comes the ability to define macros, use variable substitution and include other configuration files within configuration files.

Macro Substitution
------------------
Macro substitution in a LooperNG configuration file is triggered by "[" & "]" bookends within a config record,
with the intervening text expected to match one of the three currently-defined internal macros or a defined
environment variable.  Where a macro substitution string is available, the bookend/macro sequence is replaced by the
substitution string; if a substitution value cannot be located for the macro, then the configuration import fails
(via 'die').

Available macros:
  FILENAME     - name of the configuration file in which the macro resides
  MODULE_NAME  - name of the LooperNG module ("module =" value).
  MODULE_INSTANCE - module instance name, from "input {instance}" or "output
                 {instance}" declaration within which the macro resides.
  <ENV_VAR>    - Any defined environment variable (e.g. LOOPER_HOME).

Example macros/substitutions:

  [LOOPER_HOME]/conf/logfile_in.conf would translate to
     /opt/local/looperng/conf/logfile_in.conf

  [LOOPER_HOME]/log/[MODULE_INSTANCE].log could translate to
     /opt/local/looperng/log/logfile_in1.log

Config Includes
---------------
Through the 'include' directive, a LooperNG configuration file may be written to rely upon additional component
configuration files.  Any number of include files may be specified, so long as the resulting structure remains a
valid LooperNG configuration file.

Include syntax:

  include 'filename'

Example include (taking macro substitution into account):

  include '[LOOPER_HOME]/conf/snmptrap_out.conf


Macro Definitions
-----------------

Syntax:

 define MACRO value
 define MACRO 'value'
 define MACRO 'value with whitespace'
 undef MACRO

Comments:

* A macro cannot be referenced for substitution prior to being defined; that
is, anywhere above its 'define' statement.

* A "defined" macro exists for the remainder of the configuration setup --
until undefined.

* Quotes are optional for macro values, but necessary for values with whitespaces.

* Macro Priority:
  (1) Defined macros
  (2) Internal macros (FILENAME, MODULE_NAME, MODULE_INSTANCE)
  (3) Environment variables

That is, if you define a macro with a name identical to one of the
internal macros or an environment variable, the defined macro will override
the others.  However, if you undefine a macro overriding an environment
variable, the environment variable value will be used in any future
substitutions.

Ability to Include Files within Rules Files

Now you can include rules files within rules files with the '#include' command.

Inside the rules file:

#include "/opt/local/looper/rules/test1.rules"

or

#include "$ENV{LOOPER_HOME}/rules/test.rules"

Other Goodness


PHP Warnings

lib/pear/DB/common.php:741: Notice[8]: Only variable references should be returned by reference

lib/pear/DB/common.php:741: Notice[8]: Only variable references should be returned by reference

lib/Template.php:106: Notice[8]: Only variables should be assigned by reference

lib/Template.php:107: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'htmldump'?):106: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'htmldump'?):107: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):106: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):107: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):106: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):107: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):106: Notice[8]: Only variables should be assigned by reference

lib/Template.php(In template 'body'?)(In template 'htmldump'?):107: Notice[8]: Only variables should be assigned by reference