#LOGLEVEL.RC # # New File Created 9/13/04 -GE # Last updated 9/26/04 -GE # # Synopsis: # Expecting input values set for: # # SBLOG="[Shorthand Logflags]-[Log message]" # # or # # SBLOGFLAGS="[Verbose Logflags]" # SBLOG="[Log message]" # # Defaults to sending the plain log message to the log if the logflags # are missing. So either the old style or new style will work. # # Shorthand logflags will take precedence over the # Verbose logflags if both are present. # ## Author's notes: to be removed from here and moved to docs/loglevel.txt ## Before final release to beta testing. ## ## Todo: add support for file entry/exit flags [EX] ## ## For now split the SBLOG messages into old style/new style. ## Old style will be depriciated later. ## see docs/loglevels.txt for instructions ## ## New files used by this set of procmail recipes: ## functions/initloglevel.rc, functions/loghandler.rc ## functions/loglevel.rc functions/logfile.rc ## ## New Internal variables used by this set of procmail recipes ## SBLOGFLAGS, SBLOGSTYLE, SBLOGNUMBER, SBLOGTYPE, SBLOGTYPETEXT, SBLOG, SBMESSAGEID ## ## Existing Internal Variables used by this set of procmail recipes ## SBDIR, SBHEADERS, ECHO, DATE, HOST, TEST, FORMAIL, LOGFILE ## ## User settable variables used by this set of procmail recipes ## SBHEADERS, SBLOGFILE, SBLOGLEVEL, SBDIR, ECHO, TEST, FORMAIL, LOGFILE ## ## ## "SBLOGSTYLE=(ALWAYS|BRIEF|COMPLETE|LOG)" match vs SBHEADERS set by user. ## "Shorthand A B C L " ## "Verbose ALWAYS BRIEF COMPLETE LOG " ## ## "SBLOGNUMBER=[0-9]" match vs SBLOGLEVEL set by user. ## ## "SBLOGTYPE=(RULE|STOP|PASS|NOTE|CLASS|SCORE|LOG)" how to output the message. As an X-SBrule:, X-SBNote:, ... etc ## "Shorthand R S P N C O L " ## "Verbose RULE STOP PASS NOTE CLASS SCORE LOG " ## ## Note: the LOG is optional and default if not specified. :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="Entering file: loglevel.rc SBLOGFLAGS=\"${SBLOGFLAGS}\" SBLOG=\"${SBLOG}\" " } # Force verbose SBLOGFLAGS into shorthand form :0 * ! SBLOG ?? ^^^^ * ! SBLOGFLAGS ?? ^^^^ * SBLOGFLAGS ?? ^[ ]*(ALWAYS|BRIEF|COMPLETE|LOG)[ ]*[0-9]([ ]*(RULE|STOP|PASS|NOTE|CLASS|SCORE|LOG)[ ]*)?$ * ! SBLOG ?? ^[ABCL][0-9][RSPNCOL]?-.+$ { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="function 1 " } :0 * SBLOGFLAGS ?? ^[ ]*\/(ALWAYS|BRIEF|COMPLETE|LOG) { :0 * MATCH ?? ALWAYS { SBLOGTEMP="A" } :0 * MATCH ?? BRIEF { SBLOGTEMP="B" } :0 * MATCH ?? COMPLETE { SBLOGTEMP="C" } :0 * MATCH ?? LOG { SBLOGTEMP="L" } } :0 * SBLOGFLAGS ?? ^.*\/[0-9] { SBLOGTEMP="${SBLOGTEMP}${MATCH}" } :0 * SBLOGFLAGS ?? ^[ ]*(ALWAYS|BRIEF|COMPLETE|LOG)[ ]*[0-9][ ]*\/(RULE|STOP|PASS|NOTE|CLASS|SCORE) { :0 * MATCH ?? RULE { SBLOGTEMP="${SBLOGTEMP}R" } :0 * MATCH ?? STOP { SBLOGTEMP="${SBLOGTEMP}S" } :0 * MATCH ?? PASS { SBLOGTEMP="${SBLOGTEMP}P" } :0 * MATCH ?? NOTE { SBLOGTEMP="${SBLOGTEMP}N" } :0 * MATCH ?? CLASS { SBLOGTEMP="${SBLOGTEMP}C" } :0 * MATCH ?? SCORE { SBLOGTEMP="${SBLOGTEMP}O" } :0 * MATCH ?? LOG { SBLOGTEMP="$(SBLOGTEMP)L" } } :0 E { SBLOGTEMP="${SBLOGTEMP}L" } # re-write SBLOG to shorthand form. SBLOG="${SBLOGTEMP}-${SBLOG}" } SBLOGFLAGS="" # get the shorthand SBLOGFLAGS from SBLOG then # parse SBLOGSTYLE, SBLOGNUMBER, SBLOGTYPE from SBLOGFLAGS # and the log message from SBLOG back into SBLOG without the flags :0 * ! SBLOG ?? ^^^^ * SBLOGFLAGS ?? ^^^^ * SBLOG ?? ^[ABCL][0-9][RSPNCOL]?-.+$ { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="function 2 " } :0 * SBLOG ?? ^\/[ABCL][0-9][RSPNCOL]?- { SBLOGFLAGS=${MATCH} :0 * SBLOGFLAGS ?? ^L[0-9]-$ * SBLOGFLAGS ?? ^\/L[0-9] { SBLOGFLAGS="${MATCH}L-" } } :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="Debug: SBLOGFLAGS=$SBLOGFLAGS " } # get SBLOGSTYLE from SBLOGFLAGS :0 * SBLOGFLAGS ?? ^\/[ABCL] { SBLOGSTYLE=${MATCH} } # get SBLOGNUMBER from SBLOGFLAGS :0 * SBLOGFLAGS ?? ^[ABCL]\/[0-9] { SBLOGNUMBER=${MATCH} } # get SBLOGTYPE from SBLOGFLAGS :0 * SBLOGFLAGS ?? ^[ABCL][0-9]\/[RSPNCOL] { SBLOGTYPE=${MATCH} } # get SBLOG text from SBLOG :0 * SBLOG ?? ^[ABCL][0-9][RSPNCOL]?-\/.* { SBLOG=${MATCH} } } # Sanity checks :0 * SBLOGSTYLE ?? ^[ABCL]$ * SBLOGNUMBER ?? ^[0-9]$ * SBLOGTYPE ?? ^[RSPNCOL]$ * SBLOGFLAGS ?? ^[ABCL][0-9][RSPNCOL]?-$ * SBLOGLEVEL ?? ^[0-9]$ * ! SBLOG ?? ^[ABCL][0-9][RSPNCOL]?- * ! SBLOG ?? ^^^^ { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="function 3 " } :0 * SBLOGTYPE ?? ^R$ { SBLOGTYPETEXT="SBRule: " } :0 * SBLOGTYPE ?? ^S$ { SBLOGTYPETEXT="SBStop: " } :0 * SBLOGTYPE ?? ^P$ { SBLOGTYPETEXT="SBPass: " } :0 * SBLOGTYPE ?? ^N$ { SBLOGTYPETEXT="SBNote: " } :0 * SBLOGTYPE ?? ^C$ { SBLOGTYPETEXT="SBClass: " } :0 * SBLOGTYPE ?? ^O$ { SBLOGTYPETEXT="SBScore: " } :0 * SBLOGTYPE ?? ^L$ { SBLOGTYPETEXT="" } :0 * SBLOGTYPE ?? ^[RSPNCOL]$ { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="---- SBLOGLEVEL=$SBLOGLEVEL SBHEADERS=$SBHEADERS SBLOGTYPE=$SBLOGTYPE SBLOGSTYLE=$SBLOGSTYLE Email header added " } :0 f * SBLOGSTYLE ?? ^C$ * SBHEADERS ?? COMPLETE | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" :0 f * SBLOGSTYLE ?? ^B$ * SBHEADERS ?? BRIEF | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" :0 f * SBLOGSTYLE ?? ^A$ * SBHEADERS ?? BRIEF|COMPLETE | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" } :0 * 1^0 * SBLOGSTYLE ?? ^[ABCL]$ * SBLOGTYPE ?? ^[RSPNCOL]$ * SBLOGLEVEL ?? ^[1-9]$ * SBLOGNUMBER ?? ^[1-9]$ * $ ${SBLOGLEVEL}^0 * $ -${SBLOGNUMBER}^0 { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG=" SBLOGLEVEL=$SBLOGLEVEL SBHEADERS=$SBHEADERS SBLOGTYPE=$SBLOGTYPE SBLOGSTYLE=$SBLOGSTYLE SBLOGLEVEL=$SBLOGLEVEL SBLOGNUMBER=$SBLOGNUMBER Log entry filed: " } SBLOG="${SBLOGTYPETEXT}${SBLOG}" INCLUDERC=${SBDIR}/functions/loghandler.rc } } # Legacy support. May be depriciated. -GE :0 E * SBLOGLEVEL ?? ^[1-9]$ { :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG=" SBLOGNUMBER=\"$SBLOGNUMBER\" SBLOGLEVEL=\"$SBLOGLEVEL\" Freestyle log entry filed: " SBLOG="Freestyle: ${SBLOG}" } INCLUDERC=${SBDIR}/functions/loghandler.rc } # reset these variables. SBLOGSTYLE="" SBLOGTYPE="" SBLOGTYPETEXT="" SBLOGTEMP="" SBLOGFLAGS="" SBLOGNUMBER="" SBLOG="" :0 * SBLOGLEVELTEST ?? yes * SBLOGLEVEL ?? ^9$ { LOG="Leaving file: loglevel.rc " }