Skip to content

Commit

Permalink
simply config parsing by declaring booleans (#6)
Browse files Browse the repository at this point in the history
* simply config parsing by declaring booleans
* replace config ints with booleans
* remove redundancy in paths
  • Loading branch information
msimerson authored Jul 30, 2017
1 parent 1b20336 commit 87059a0
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 93 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ script:
- npm test

after_success:
- npm install istanbul codecov
- npm run cover
- ./node_modules/.bin/codecov
# - npm install istanbul codecov
# - npm run cover
# - ./node_modules/.bin/codecov

sudo: false
16 changes: 12 additions & 4 deletions Changes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
1.0.1 - 2017-06-13
- Require higher haraka-constants so constants.OK is set properly
## 1.0.2 - 2017-07-30

1.0.0 - 2016-11-09
- declare booleans in config.get
- simplify a bunch of the follow-on code
- refactor away 5x redundancy
- remove Mooney-isms from nodeunit and use npm version

- import from haraka/Haraka
## 1.0.1 - 2017-06-13

- Require higher haraka-constants so constants.OK is set properly

## 1.0.0 - 2016-11-09

- import from haraka/Haraka
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[![Build Status][ci-img]][ci-url]
[![Code Coverage][cov-img]][cov-url]
[![Code Climate][clim-img]][clim-url]
[![Greenkeeper badge][gk-img]](https://greenkeeper.io/)
[![NPM][npm-img]][npm-url]
<!--[![Code Coverage][cov-img]][cov-url]-->

# haraka-plugin-syslog

Expand Down
10 changes: 5 additions & 5 deletions config/syslog.ini
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[general]
name=haraka
facility=MAIL
pid=1
odelay=1
cons=0
ndelay=0
nowait=0
pid=true
odelay=true
cons=false
ndelay=false
nowait=false
always_ok=false
132 changes: 62 additions & 70 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,149 +1,141 @@
'use strict';

var constants = require('haraka-constants');
const constants = require('haraka-constants');

exports.register = function () {
var plugin = this;

plugin.Syslog = require('modern-syslog');
const syslog = require('modern-syslog');
plugin.Syslog = syslog;

var options = 0;
var ini = plugin.config.get('syslog.ini');
plugin.load_syslog_ini();

ini.general = ini.general || {};
var name = ini.general.name || 'haraka';
var facility = ini.general.facility || 'MAIL';
var pid = ini.general.log_pid || 1;
var odelay = ini.general.log_odelay || 1;
var cons = ini.general.log_cons || 0;
var ndelay = ini.general.log_ndelay || 0;
var nowait = ini.general.log_nowait || 0;
var always_ok = ini.general.always_ok || false;
if (!plugin.cfg.general) plugin.cfg.general = {};

if (always_ok && (always_ok >= 1 || always_ok.toLowerCase() === 'true')) {
always_ok = true;
}
else {
always_ok = false;
}

plugin.always_ok = always_ok;

if (pid && (pid >= 1 || pid.toLowerCase() === 'true')) {
options |= plugin.Syslog.LOG_PID;
}

if (odelay && (odelay >= 1 || odelay.toLowerCase() === 'true')) {
options |= plugin.Syslog.LOG_ODELAY;
}
var name = plugin.cfg.general.name || 'haraka';
var facility = plugin.cfg.general.facility || 'MAIL';

if (cons && (cons >= 1 || cons.toLowerCase() === 'true')) {
options |= plugin.Syslog.LOG_CONS;
}

if (ndelay && (ndelay >= 1 || ndelay.toLowerCase() === 'true')) {
options |= plugin.Syslog.LOG_NDELAY;
}

if (nowait && (nowait >= 1 || nowait.toLowerCase() === 'true')) {
options |= plugin.Syslog.LOG_NOWAIT;
}
['pid','odelay','cons','ndelay','nowait'].forEach(opt => {
if (!plugin.cfg.general[opt]) return;
options |= syslog['LOG_' + opt.toUpperCase() ];
})

switch (facility.toUpperCase()) {
case 'MAIL':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_MAIL);
syslog.init(name, options, syslog.LOG_MAIL);
break;
case 'KERN':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_KERN);
syslog.init(name, options, syslog.LOG_KERN);
break;
case 'USER':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_USER);
syslog.init(name, options, syslog.LOG_USER);
break;
case 'DAEMON':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_DAEMON);
syslog.init(name, options, syslog.LOG_DAEMON);
break;
case 'AUTH':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_AUTH);
syslog.init(name, options, syslog.LOG_AUTH);
break;
case 'SYSLOG':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_SYSLOG);
syslog.init(name, options, syslog.LOG_SYSLOG);
break;
case 'LPR':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LPR);
syslog.init(name, options, syslog.LOG_LPR);
break;
case 'NEWS':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_NEWS);
syslog.init(name, options, syslog.LOG_NEWS);
break;
case 'UUCP':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_UUCP);
syslog.init(name, options, syslog.LOG_UUCP);
break;
case 'LOCAL0':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL0);
syslog.init(name, options, syslog.LOG_LOCAL0);
break;
case 'LOCAL1':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL1);
syslog.init(name, options, syslog.LOG_LOCAL1);
break;
case 'LOCAL2':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL2);
syslog.init(name, options, syslog.LOG_LOCAL2);
break;
case 'LOCAL3':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL3);
syslog.init(name, options, syslog.LOG_LOCAL3);
break;
case 'LOCAL4':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL4);
syslog.init(name, options, syslog.LOG_LOCAL4);
break;
case 'LOCAL5':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL5);
syslog.init(name, options, syslog.LOG_LOCAL5);
break;
case 'LOCAL6':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL6);
syslog.init(name, options, syslog.LOG_LOCAL6);
break;
case 'LOCAL7':
plugin.Syslog.init(name, options, plugin.Syslog.LOG_LOCAL7);
syslog.init(name, options, syslog.LOG_LOCAL7);
break;
default:
plugin.Syslog.init(name, options, plugin.Syslog.LOG_MAIL);
syslog.init(name, options, syslog.LOG_MAIL);
}

plugin.register_hook('log', 'syslog');
};

exports.load_syslog_ini = function () {
let plugin = this;

plugin.cfg = plugin.config.get('syslog.ini', {
booleans: [
'+general.pid',
'+general.odelay',
'-general.cons',
'-general.ndelay',
'-general.nowait',
'-general.always_ok',
],
},
function () {
plugin.load_syslog_ini();
})
}

exports.syslog = function (next, logger, log) {
var plugin = this;
let plugin = this;
let syslog = plugin.Syslog;

switch (log.level.toUpperCase()) {
case 'INFO':
plugin.Syslog.log(plugin.Syslog.LOG_INFO, log.data);
syslog.log(syslog.LOG_INFO, log.data);
break;
case 'NOTICE':
plugin.Syslog.log(plugin.Syslog.LOG_NOTICE, log.data);
syslog.log(syslog.LOG_NOTICE, log.data);
break;
case 'WARN':
plugin.Syslog.log(plugin.Syslog.LOG_WARNING, log.data);
syslog.log(syslog.LOG_WARNING, log.data);
break;
case 'ERROR':
plugin.Syslog.log(plugin.Syslog.LOG_ERR, log.data);
syslog.log(syslog.LOG_ERR, log.data);
break;
case 'CRIT':
plugin.Syslog.log(plugin.Syslog.LOG_CRIT, log.data);
syslog.log(syslog.LOG_CRIT, log.data);
break;
case 'ALERT':
plugin.Syslog.log(plugin.Syslog.LOG_ALERT, log.data);
syslog.log(syslog.LOG_ALERT, log.data);
break;
case 'EMERG':
plugin.Syslog.log(plugin.Syslog.LOG_EMERG, log.data);
syslog.log(syslog.LOG_EMERG, log.data);
break;
case 'DATA':
case 'PROTOCOL':
case 'DEBUG':
plugin.Syslog.log(plugin.Syslog.LOG_DEBUG, log.data);
syslog.log(syslog.LOG_DEBUG, log.data);
break;
default:
plugin.Syslog.log(plugin.Syslog.LOG_DEBUG, log.data);
syslog.log(syslog.LOG_DEBUG, log.data);
}

if (plugin.always_ok) {
return next(constants.OK);
if (plugin.cfg.always_ok) {
next(constants.OK);
return;
}
return next();
next();
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "haraka-plugin-syslog",
"version": "1.0.1",
"version": "1.0.2",
"description": "Haraka plugin that logs to syslog",
"main": "index.js",
"scripts": {
Expand Down
18 changes: 9 additions & 9 deletions test/syslog.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,22 +223,22 @@ exports.hook = {
exports.log = {
setUp : _set_up,
'syslog hook logs correct thing' : function (test) {
if (!this.plugin || !this.plugin.Syslog) { return test.done(); }
let plugin = this.plugin;
if (!plugin || !plugin.Syslog) return test.done();

// local setup
var next = stub();
this.backup.plugin.Syslog.log = this.plugin.Syslog.log;
this.plugin.Syslog.log = stub();
this.plugin.syslog(next, this.logger, this.log);
this.backup.plugin.Syslog.log = plugin.Syslog.log;
plugin.Syslog.log = stub();
plugin.syslog(next, this.logger, this.log);

test.expect(3);
test.ok(this.plugin.Syslog.log.called);
test.equals(this.plugin.Syslog.log.args[0],
this.plugin.Syslog.LOG_INFO);
test.equals(this.plugin.Syslog.log.args[1], this.log.data);
test.ok(plugin.Syslog.log.called);
test.equals(plugin.Syslog.log.args[0], plugin.Syslog.LOG_INFO);
test.equals(plugin.Syslog.log.args[1], this.log.data);
test.done();

// local teardown
this.plugin.Syslog.log = this.backup.plugin.Syslog.log;
plugin.Syslog.log = this.backup.plugin.Syslog.log;
}
};

0 comments on commit 87059a0

Please sign in to comment.