1# LOGLEVEL.RC 2# 3# New File Created 9/13/04 -GE 4# Last updated 2/17/2011 5# 6# Synopsis: 7# Expecting input values set for: 8# 9# SBLOG="[Shorthand Logflags]-[Log message]" 10# 11# or 12# 13# SBLOGFLAGS="[Verbose Logflags]" 14# SBLOG="[Log message]" 15# 16# Defaults to sending the plain log message to the log if the logflags 17# are missing. So either the old style or new style will work. 18# 19# Shorthand logflags will take precedence over the 20# Verbose logflags if both are present. 21# 22## Author's notes: to be removed from here and moved to docs/loglevel.txt 23## Before final release to beta testing. 24## 25## Todo: add support for file entry/exit flags [EX] 26## 27## For now split the SBLOG messages into old style/new style. 28## Old style will be depriciated later. 29## see docs/loglevels.txt for instructions 30## 31## New files used by this set of procmail recipes: 32## functions/initloglevel.rc, functions/loghandler.rc 33## functions/loglevel.rc functions/logfile.rc 34## 35## New Internal variables used by this set of procmail recipes 36## SBLOGFLAGS, SBLOGSTYLE, SBLOGNUMBER, SBLOGTYPE, SBLOGTYPETEXT, SBLOG, SBMESSAGEID 37## 38## Existing Internal Variables used by this set of procmail recipes 39## SBDIR, SBHEADERS, ECHO, DATE, HOST, TEST, FORMAIL, LOGFILE 40## 41## User settable variables used by this set of procmail recipes 42## SBHEADERS, SBLOGFILE, SBLOGLEVEL, SBDIR, ECHO, TEST, FORMAIL, LOGFILE 43## 44## 45## "SBLOGSTYLE=(ALWAYS|BRIEF|COMPLETE|LOG)" match vs SBHEADERS set by user. 46## "Shorthand A B C L " 47## "Verbose ALWAYS BRIEF COMPLETE LOG " 48## 49## "SBLOGNUMBER=[0-9]" match vs SBLOGLEVEL set by user. 50## 51## "SBLOGTYPE=(RULE|STOP|PASS|NOTE|CLASS|SCORE|PATTERN|LOG)" how to output the message. As an X-SBRule:, X-SBNote:, ... etc 52## "Shorthand R S P N C O T L " 53## "Verbose RULE STOP PASS NOTE CLASS SCORE PATTERN LOG " 54## 55## Note: the LOG is optional and default if not specified. 56 57:0 58* SBLOGLEVELTEST ?? yes 59* SBLOGLEVEL ?? ^9$ 60{ 61 LOG="Entering file: loglevel.rc 62 SBLOGFLAGS=\"${SBLOGFLAGS}\" 63 SBLOG=\"${SBLOG}\" 64" 65} 66 67# Force verbose SBLOGFLAGS into shorthand form 68:0 69* ! SBLOG ?? ^^^^ 70* ! SBLOGFLAGS ?? ^^^^ 71* SBLOGFLAGS ?? ^[ ]*(ALWAYS|BRIEF|DEFAULT|COMPLETE|LOG)[ ]*[0-9]([ ]*(RULE|STOP|PASS|NOTE|CLASS|SCORE|PATTERN|LOG)[ ]*)?$ 72* ! SBLOG ?? ^[ABDCL][0-9][RSPNCOTL]?-.+$ 73{ 74 :0 75 * SBLOGLEVELTEST ?? yes 76 * SBLOGLEVEL ?? ^9$ 77 { 78 LOG="function 1 79" 80 } 81 82 :0 83 * SBLOGFLAGS ?? ^[ ]*\/(ALWAYS|BRIEF|DEFAULT|COMPLETE|LOG) 84 { 85 :0 86 * MATCH ?? ^ALWAYS$ 87 { SBLOGTEMP="A" } 88 89 :0 90 * MATCH ?? ^BRIEF$ 91 { SBLOGTEMP="B" } 92 93 :0 94 * MATCH ?? ^DEFAULT$ 95 { SBLOGTEMP="D" } 96 97 :0 98 * MATCH ?? ^COMPLETE$ 99 { SBLOGTEMP="C" } 100 101 :0 102 * MATCH ?? ^LOG$ 103 { SBLOGTEMP="L" } 104 } 105 106 :0 107 * SBLOGFLAGS ?? ^.*\/[0-9] 108 { 109 SBLOGTEMP="${SBLOGTEMP}${MATCH}" 110 } 111 112 :0 113 * SBLOGFLAGS ?? ^[ ]*(ALWAYS|BRIEF|DEFAULT|COMPLETE|LOG)[ ]*[0-9][ ]*\/(RULE|STOP|PASS|NOTE|CLASS|SCORE) 114 { 115 :0 116 * MATCH ?? ^RULE$ 117 { SBLOGTEMP="${SBLOGTEMP}R" } 118 119 :0 120 * MATCH ?? ^STOP$ 121 { SBLOGTEMP="${SBLOGTEMP}S" } 122 123 :0 124 * MATCH ?? ^PASS$ 125 { SBLOGTEMP="${SBLOGTEMP}P" } 126 127 :0 128 * MATCH ?? ^NOTE$ 129 { SBLOGTEMP="${SBLOGTEMP}N" } 130 131 :0 132 * MATCH ?? ^CLASS$ 133 { SBLOGTEMP="${SBLOGTEMP}C" } 134 135 :0 136 * MATCH ?? ^SCORE$ 137 { SBLOGTEMP="${SBLOGTEMP}O" } 138 139 :0 140 * MATCH ?? ^PATTERN$ 141 { SBLOGTEMP="${SBLOGTEMP}T" } 142 143 :0 144 * MATCH ?? ^LOG$ 145 { SBLOGTEMP="$(SBLOGTEMP)L" } 146 } 147 148 :0 E 149 { SBLOGTEMP="${SBLOGTEMP}L" } 150 151# re-write SBLOG to shorthand form. 152 SBLOG="${SBLOGTEMP}-${SBLOG}" 153} 154 155SBLOGFLAGS="" 156 157# Get the shorthand SBLOGFLAGS from SBLOG then 158# parse SBLOGSTYLE, SBLOGNUMBER, SBLOGTYPE from SBLOGFLAGS 159# and the log message from SBLOG back into SBLOG without the flags 160# 161:0 162* ! SBLOG ?? ^^^^ 163* SBLOGFLAGS ?? ^^^^ 164* SBLOG ?? ^[ABDCL][0-9][RSPNCOTL]?-.+$ 165{ 166 :0 167 * SBLOGLEVELTEST ?? yes 168 * SBLOGLEVEL ?? ^9$ 169 { 170 LOG="function 2 171" 172 } 173 174 :0 175 * SBLOG ?? ^\/[ABDCL][0-9][RSPNCOTL]?- 176 { 177 SBLOGFLAGS=${MATCH} 178 :0 179 * SBLOGFLAGS ?? ^L[0-9]-$ 180 * SBLOGFLAGS ?? ^\/L[0-9] 181 { 182 SBLOGFLAGS="${MATCH}L-" 183 } 184 } 185 186 :0 187 * SBLOGLEVELTEST ?? yes 188 * SBLOGLEVEL ?? ^9$ 189 { 190 LOG="Debug: SBLOGFLAGS=$SBLOGFLAGS 191" 192 } 193 194# get SBLOGSTYLE from SBLOGFLAGS 195 :0 196 * SBLOGFLAGS ?? ^\/[ABDCL] 197 { SBLOGSTYLE=${MATCH} } 198 199# get SBLOGNUMBER from SBLOGFLAGS 200 :0 201 * SBLOGFLAGS ?? ^[ABDCL]\/[0-9] 202 { SBLOGNUMBER=${MATCH} } 203 204# get SBLOGTYPE from SBLOGFLAGS 205 :0 206 * SBLOGFLAGS ?? ^[ABDCL][0-9]\/[RSPNCOTL] 207 { SBLOGTYPE=${MATCH} } 208 209# get SBLOG text from SBLOG 210 :0 211 * SBLOG ?? ^[ABDCL][0-9][RSPNCOTL]?-\/.* 212 { 213 SBLOG=${MATCH} 214 } 215} 216 217# Sanity checks 218:0 219* SBLOGSTYLE ?? ^[ABDCL]$ 220* SBLOGNUMBER ?? ^[0-9]$ 221* SBLOGTYPE ?? ^[RSPNCOTL]$ 222* SBLOGFLAGS ?? ^[ABDCL][0-9][RSPNCOTL]?-$ 223* SBLOGLEVEL ?? ^[0-9]$ 224* ! SBLOG ?? ^[ABDCL][0-9][RSPNCOTL]?- 225* ! SBLOG ?? ^^^^ 226{ 227 :0 228 * SBLOGLEVELTEST ?? yes 229 * SBLOGLEVEL ?? ^9$ 230 { 231 LOG="function 3 232" 233 } 234 :0 235 * SBLOGTYPE ?? ^R$ 236 { SBLOGTYPETEXT="SBRule: " } 237 238 :0 239 * SBLOGTYPE ?? ^S$ 240 { SBLOGTYPETEXT="SBStop: " } 241 242 :0 243 * SBLOGTYPE ?? ^P$ 244 { SBLOGTYPETEXT="SBPass: " } 245 246 :0 247 * SBLOGTYPE ?? ^N$ 248 { SBLOGTYPETEXT="SBNote: " } 249 250 :0 251 * SBLOGTYPE ?? ^C$ 252 { SBLOGTYPETEXT="SBClass: " } 253 254 :0 255 * SBLOGTYPE ?? ^O$ 256 { SBLOGTYPETEXT="SBScore: " } 257 258 :0 259 * SBLOGTYPE ?? ^T$ 260 { SBLOGTYPETEXT="SBPattern: " } 261 262 :0 263 * SBLOGTYPE ?? ^L$ 264 { SBLOGTYPETEXT="" } 265 266 :0 267 * SBLOGTYPE ?? ^[RSPNCOTL]$ 268 { 269 :0 270 * SBLOGLEVELTEST ?? yes 271 * SBLOGLEVEL ?? ^9$ 272 { 273 LOG="---- 274SBLOGLEVEL=$SBLOGLEVEL 275SBHEADERS=$SBHEADERS 276SBLOGTYPE=$SBLOGTYPE 277SBLOGSTYLE=$SBLOGSTYLE 278Email header added 279" 280 } 281 :0 f 282 * SBLOGSTYLE ?? ^C$ 283 * SBHEADERS ?? ^COMPLETE$ 284 | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" 285 286 :0 f 287 * SBLOGSTYLE ?? ^D$ 288 * SBHEADERS ?? ^DEFAULT$ 289 | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" 290 291 :0 f 292 * SBLOGSTYLE ?? ^B$ 293 * SBHEADERS ?? ^BRIEF$ 294 | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" 295 296 :0 f 297 * SBLOGSTYLE ?? ^A$ 298 * SBHEADERS ?? ^(BRIEF|COMPLETE)$ 299 | ${FORMAIL} -A"X-${SBLOGTYPETEXT}${SBLOG}" 300 } 301 302 :0 303 * 1^0 304 * SBLOGSTYLE ?? ^[ABDCL]$ 305 * SBLOGTYPE ?? ^[RSPNCOTL]$ 306 * SBLOGLEVEL ?? ^[1-9]$ 307 * SBLOGNUMBER ?? ^[1-9]$ 308 * $ ${SBLOGLEVEL}^0 309 * $ -${SBLOGNUMBER}^0 310 { 311 :0 312 * SBLOGLEVELTEST ?? ^yes$ 313 * SBLOGLEVEL ?? ^9$ 314 { 315 LOG=" 316SBLOGLEVEL=$SBLOGLEVEL 317SBHEADERS=$SBHEADERS 318SBLOGTYPE=$SBLOGTYPE 319SBLOGSTYLE=$SBLOGSTYLE 320SBLOGLEVEL=$SBLOGLEVEL 321SBLOGNUMBER=$SBLOGNUMBER 322Log entry filed: 323" 324 } 325 SBLOG="${SBLOGTYPETEXT}${SBLOG}" 326 INCLUDERC=${SBDIR}/functions/loghandler.rc 327 } 328} 329 330# Legacy support. May be deprecated. -GE 331:0 E 332* SBLOGLEVEL ?? ^[1-9]$ 333{ 334 :0 335 * SBLOGLEVELTEST ?? yes 336 * SBLOGLEVEL ?? ^9$ 337 { 338 LOG=" 339SBLOGNUMBER=\"$SBLOGNUMBER\" 340SBLOGLEVEL=\"$SBLOGLEVEL\" 341Freestyle log entry filed: 342" 343 SBLOG="Freestyle: ${SBLOG}" 344 } 345 INCLUDERC=${SBDIR}/functions/loghandler.rc 346} 347# reset these variables. 348SBLOGSTYLE="" 349SBLOGTYPE="" 350SBLOGTYPETEXT="" 351SBLOGTEMP="" 352SBLOGFLAGS="" 353SBLOGNUMBER="" 354SBLOG="" 355 356:0 357* SBLOGLEVELTEST ?? yes 358* SBLOGLEVEL ?? ^9$ 359{ 360 LOG="Leaving file: loglevel.rc 361" 362} 363