Haraka 3.0.3 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.yaml +5 -9
- package/.prettierrc.yml +1 -0
- package/CONTRIBUTORS.md +11 -0
- package/Changes.md +1365 -1214
- package/Plugins.md +117 -105
- package/README.md +4 -13
- package/bin/haraka +197 -298
- package/config/auth_flat_file.ini +1 -0
- package/config/dhparams.pem +8 -0
- package/config/mail_from.is_resolvable.ini +4 -2
- package/config/me +1 -0
- package/config/outbound.ini +0 -2
- package/config/plugins +36 -35
- package/config/smtp.ini +0 -1
- package/config/smtp.json +17 -0
- package/config/tls_cert.pem +23 -0
- package/config/tls_key.pem +28 -0
- package/connection.js +46 -73
- package/contrib/bsd-rc.d/haraka +3 -1
- package/contrib/plugin2npm.sh +6 -36
- package/docs/CoreConfig.md +2 -2
- package/docs/Logging.md +7 -21
- package/docs/Outbound.md +104 -201
- package/docs/Plugins.md +2 -2
- package/docs/Transaction.md +59 -82
- package/docs/plugins/queue/smtp_proxy.md +5 -10
- package/docs/plugins/tls.md +29 -9
- package/endpoint.js +16 -13
- package/haraka.js +10 -14
- package/host_pool.js +5 -5
- package/line_socket.js +3 -4
- package/logger.js +44 -28
- package/outbound/client_pool.js +27 -23
- package/outbound/config.js +4 -6
- package/outbound/fsync_writestream.js +1 -1
- package/outbound/hmail.js +178 -218
- package/outbound/index.js +86 -99
- package/outbound/qfile.js +1 -1
- package/outbound/queue.js +51 -44
- package/outbound/timer_queue.js +3 -2
- package/outbound/tls.js +19 -7
- package/package.json +59 -48
- package/plugins/.eslintrc.yaml +0 -6
- package/plugins/auth/auth_base.js +4 -2
- package/plugins/auth/auth_proxy.js +14 -12
- package/plugins/auth/auth_vpopmaild.js +1 -1
- package/plugins/block_me.js +1 -1
- package/plugins/data.signatures.js +2 -4
- package/plugins/early_talker.js +2 -1
- package/plugins/mail_from.is_resolvable.js +65 -135
- package/plugins/queue/deliver.js +4 -5
- package/plugins/queue/lmtp.js +11 -14
- package/plugins/queue/qmail-queue.js +2 -2
- package/plugins/queue/quarantine.js +2 -2
- package/plugins/queue/rabbitmq.js +16 -17
- package/plugins/queue/smtp_forward.js +3 -3
- package/plugins/queue/smtp_proxy.js +10 -1
- package/plugins/queue/test.js +2 -2
- package/plugins/rcpt_to.host_list_base.js +5 -5
- package/plugins/rcpt_to.in_host_list.js +2 -2
- package/plugins/relay.js +6 -7
- package/plugins/reseed_rng.js +1 -1
- package/plugins/status.js +37 -33
- package/plugins/tls.js +2 -2
- package/plugins/xclient.js +3 -2
- package/plugins.js +50 -54
- package/run_tests +3 -30
- package/server.js +190 -190
- package/smtp_client.js +30 -23
- package/{tests → test}/config/plugins +0 -2
- package/{tests → test}/config/smtp.ini +1 -1
- package/test/config/tls/example.com/_.example.com.key +28 -0
- package/test/config/tls/example.com/example.com.crt +25 -0
- package/test/connection.js +302 -0
- package/test/endpoint.js +94 -0
- package/{tests → test}/fixtures/line_socket.js +1 -1
- package/{tests → test}/fixtures/util_hmailitem.js +19 -25
- package/{tests → test}/host_pool.js +42 -57
- package/test/logger.js +258 -0
- package/test/outbound/hmail.js +141 -0
- package/test/outbound/index.js +220 -0
- package/test/outbound/qfile.js +126 -0
- package/test/outbound_bounce_net_errors.js +142 -0
- package/{tests → test}/outbound_bounce_rfc3464.js +110 -122
- package/test/plugins/auth/auth_base.js +484 -0
- package/test/plugins/auth/auth_vpopmaild.js +83 -0
- package/test/plugins/early_talker.js +104 -0
- package/test/plugins/mail_from.is_resolvable.js +35 -0
- package/test/plugins/queue/smtp_forward.js +206 -0
- package/test/plugins/rcpt_to.host_list_base.js +122 -0
- package/test/plugins/rcpt_to.in_host_list.js +193 -0
- package/test/plugins/relay.js +303 -0
- package/test/plugins/status.js +130 -0
- package/test/plugins/tls.js +70 -0
- package/test/plugins.js +228 -0
- package/test/rfc1869.js +73 -0
- package/test/server.js +491 -0
- package/test/smtp_client.js +299 -0
- package/test/tls_socket.js +273 -0
- package/test/transaction.js +270 -0
- package/tls_socket.js +202 -252
- package/transaction.js +8 -23
- package/CONTRIBUTING.md +0 -1
- package/bin/dkimverify +0 -40
- package/config/access.domains +0 -13
- package/config/attachment.ctype.regex +0 -2
- package/config/attachment.filename.regex +0 -1
- package/config/avg.ini +0 -5
- package/config/bounce.ini +0 -15
- package/config/data.headers.ini +0 -61
- package/config/dkim/dkim_key_gen.sh +0 -78
- package/config/dkim_sign.ini +0 -4
- package/config/dkim_verify.ini +0 -7
- package/config/dnsbl.ini +0 -23
- package/config/greylist.ini +0 -43
- package/config/helo.checks.ini +0 -52
- package/config/messagesniffer.ini +0 -18
- package/config/spamassassin.ini +0 -56
- package/dkim.js +0 -614
- package/docs/plugins/avg.md +0 -35
- package/docs/plugins/bounce.md +0 -69
- package/docs/plugins/clamd.md +0 -147
- package/docs/plugins/esets.md +0 -8
- package/docs/plugins/greylist.md +0 -90
- package/docs/plugins/helo.checks.md +0 -135
- package/docs/plugins/messagesniffer.md +0 -163
- package/docs/plugins/spamassassin.md +0 -180
- package/outbound/mx_lookup.js +0 -70
- package/plugins/auth/auth_ldap.js +0 -3
- package/plugins/avg.js +0 -162
- package/plugins/backscatterer.js +0 -25
- package/plugins/bounce.js +0 -381
- package/plugins/clamd.js +0 -382
- package/plugins/data.uribl.js +0 -4
- package/plugins/dkim_sign.js +0 -395
- package/plugins/dkim_verify.js +0 -62
- package/plugins/dns_list_base.js +0 -221
- package/plugins/dnsbl.js +0 -146
- package/plugins/dnswl.js +0 -58
- package/plugins/esets.js +0 -71
- package/plugins/graph.js +0 -5
- package/plugins/greylist.js +0 -645
- package/plugins/helo.checks.js +0 -533
- package/plugins/messagesniffer.js +0 -381
- package/plugins/rcpt_to.ldap.js +0 -3
- package/plugins/rcpt_to.max_count.js +0 -24
- package/plugins/spamassassin.js +0 -384
- package/tests/config/dkim/example.com/dns +0 -29
- package/tests/config/dkim/example.com/private +0 -6
- package/tests/config/dkim/example.com/public +0 -4
- package/tests/config/dkim/example.com/selector +0 -1
- package/tests/config/dkim.private.key +0 -6
- package/tests/config/dkim_sign.ini +0 -4
- package/tests/config/helo.checks.ini +0 -52
- package/tests/connection.js +0 -327
- package/tests/endpoint.js +0 -128
- package/tests/fixtures/vm_harness.js +0 -59
- package/tests/logger.js +0 -327
- package/tests/outbound/hmail.js +0 -112
- package/tests/outbound/index.js +0 -324
- package/tests/outbound/qfile.js +0 -67
- package/tests/outbound_bounce_net_errors.js +0 -173
- package/tests/plugins/auth/auth_base.js +0 -463
- package/tests/plugins/auth/auth_vpopmaild.js +0 -91
- package/tests/plugins/bounce.js +0 -307
- package/tests/plugins/clamd.js +0 -224
- package/tests/plugins/deprecated/relay_acl.js +0 -140
- package/tests/plugins/deprecated/relay_all.js +0 -59
- package/tests/plugins/dkim_sign.js +0 -315
- package/tests/plugins/dkim_signer.js +0 -108
- package/tests/plugins/dns_list_base.js +0 -259
- package/tests/plugins/dnsbl.js +0 -101
- package/tests/plugins/early_talker.js +0 -115
- package/tests/plugins/greylist.js +0 -58
- package/tests/plugins/helo.checks.js +0 -525
- package/tests/plugins/mail_from.is_resolvable.js +0 -116
- package/tests/plugins/queue/smtp_forward.js +0 -221
- package/tests/plugins/rcpt_to.host_list_base.js +0 -132
- package/tests/plugins/rcpt_to.in_host_list.js +0 -218
- package/tests/plugins/relay.js +0 -339
- package/tests/plugins/spamassassin.js +0 -171
- package/tests/plugins/status.js +0 -138
- package/tests/plugins/tls.js +0 -84
- package/tests/plugins.js +0 -247
- package/tests/rfc1869.js +0 -61
- package/tests/server.js +0 -510
- package/tests/smtp_client/auth.js +0 -105
- package/tests/smtp_client/basic.js +0 -101
- package/tests/smtp_client.js +0 -80
- package/tests/tls_socket.js +0 -333
- package/tests/transaction.js +0 -284
- /package/docs/{plugins → deprecated}/dkim_sign.md +0 -0
- /package/docs/{plugins → deprecated}/dkim_verify.md +0 -0
- /package/docs/{plugins → deprecated}/dnsbl.md +0 -0
- /package/docs/{plugins → deprecated}/dnswl.md +0 -0
- /package/{tests → test}/.eslintrc.yaml +0 -0
- /package/{tests → test}/config/auth_flat_file.ini +0 -0
- /package/{tests → test}/config/dhparams.pem +0 -0
- /package/{tests → test}/config/host_list +0 -0
- /package/{tests → test}/config/outbound_tls_cert.pem +0 -0
- /package/{tests → test}/config/outbound_tls_key.pem +0 -0
- /package/{tests → test}/config/smtp_forward.ini +0 -0
- /package/{tests → test}/config/tls/ec.pem +0 -0
- /package/{tests → test}/config/tls/haraka.local.pem +0 -0
- /package/{tests → test}/config/tls/mismatched.pem +0 -0
- /package/{tests → test}/config/tls.ini +0 -0
- /package/{tests → test}/config/tls_cert.pem +0 -0
- /package/{tests → test}/config/tls_key.pem +0 -0
- /package/{tests → test}/fixtures/todo_qfile.txt +0 -0
- /package/{tests → test}/installation/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/config/tls.ini +0 -0
- /package/{tests → test}/installation/node_modules/load_first/index.js +0 -0
- /package/{tests → test}/installation/node_modules/load_first/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/test-plugin.js +0 -0
- /package/{tests → test}/installation/plugins/base_plugin.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/index.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/package.json +0 -0
- /package/{tests → test}/installation/plugins/inherits.js +0 -0
- /package/{tests → test}/installation/plugins/load_first.js +0 -0
- /package/{tests → test}/installation/plugins/plugin.js +0 -0
- /package/{tests → test}/installation/plugins/tls.js +0 -0
- /package/{tests → test}/loud/config/dhparams.pem +0 -0
- /package/{tests → test}/loud/config/tls/goobered.pem +0 -0
- /package/{tests → test}/loud/config/tls.ini +0 -0
- /package/{tests → test}/mail_specimen/base64-root-part.txt +0 -0
- /package/{tests → test}/mail_specimen/varied-fold-lengths-preserve-data.txt +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_fixed +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_haraka +0 -0
- /package/{tests → test}/queue/1508269674999_1508269674999_0_34002_socVUF_1_haraka +0 -0
- /package/{tests → test}/queue/1508455115683_1508455115683_0_90253_9Q4o4V_1_haraka +0 -0
- /package/{tests → test}/queue/multibyte +0 -0
- /package/{tests → test}/queue/plain +0 -0
- /package/{tests → test}/queue/zero-length +0 -0
- /package/{tests → test}/test-queue/delete-me +0 -0
package/plugins.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// load all defined plugins
|
|
3
3
|
|
|
4
4
|
// node built-ins
|
|
5
|
-
const fs = require('fs');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const vm = require('vm');
|
|
5
|
+
const fs = require('node:fs');
|
|
6
|
+
const path = require('node:path');
|
|
7
|
+
const vm = require('node:vm');
|
|
8
8
|
|
|
9
9
|
// npm modules
|
|
10
10
|
exports.config = require('haraka-config');
|
|
@@ -74,8 +74,8 @@ class Plugin {
|
|
|
74
74
|
|
|
75
75
|
// development mode
|
|
76
76
|
paths = paths.concat(plugin_search_paths(__dirname, name));
|
|
77
|
-
|
|
78
|
-
if (this.plugin_path)
|
|
77
|
+
for (const pp of paths) {
|
|
78
|
+
if (this.plugin_path) continue;
|
|
79
79
|
try {
|
|
80
80
|
fs.statSync(pp);
|
|
81
81
|
this.plugin_path = pp;
|
|
@@ -84,7 +84,7 @@ class Plugin {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
catch (ignore) {}
|
|
87
|
-
}
|
|
87
|
+
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
_get_config () {
|
|
@@ -128,8 +128,7 @@ class Plugin {
|
|
|
128
128
|
this.hooks[hook_name] = this.hooks[hook_name] || [];
|
|
129
129
|
this.hooks[hook_name].push(method_name);
|
|
130
130
|
|
|
131
|
-
|
|
132
|
-
`${method_name} priority ${priority}`);
|
|
131
|
+
plugins.logdebug(`registered hook ${hook_name} to ${this.name}.${method_name} priority ${priority}`);
|
|
133
132
|
}
|
|
134
133
|
|
|
135
134
|
register () {} // noop
|
|
@@ -140,12 +139,6 @@ class Plugin {
|
|
|
140
139
|
if (!this[method]) {
|
|
141
140
|
this[method] = parent_plugin[method];
|
|
142
141
|
}
|
|
143
|
-
// else if (method == 'shutdown') {
|
|
144
|
-
// Method is in this module, so it exists in the plugin
|
|
145
|
-
// if (!this.hasOwnProperty('shutdown')) {
|
|
146
|
-
// this[method] = parent_plugin[method];
|
|
147
|
-
// }
|
|
148
|
-
// }
|
|
149
142
|
}
|
|
150
143
|
if (parent_plugin.register) {
|
|
151
144
|
parent_plugin.register.call(this);
|
|
@@ -195,7 +188,7 @@ class Plugin {
|
|
|
195
188
|
}
|
|
196
189
|
catch (err) {
|
|
197
190
|
if (exports.config.get('smtp.ini').main.ignore_bad_plugins) {
|
|
198
|
-
|
|
191
|
+
plugins.logcrit(`Loading ${this.name} failed: ${err}`);
|
|
199
192
|
return;
|
|
200
193
|
}
|
|
201
194
|
throw `Loading plugin ${this.name} failed: ${err}`;
|
|
@@ -231,16 +224,13 @@ class Plugin {
|
|
|
231
224
|
vm.runInNewContext(code, sandbox, pp);
|
|
232
225
|
}
|
|
233
226
|
catch (err) {
|
|
234
|
-
|
|
227
|
+
plugins.logcrit(`compiling '${this.name}' failed`);
|
|
235
228
|
if (exports.config.get('smtp.ini').main.ignore_bad_plugins) {
|
|
236
|
-
|
|
237
|
-
`${err.message} - will skip this plugin and continue`);
|
|
229
|
+
plugins.logcrit(`Loading '${this.name}' failed: ${err.message} - skipping`);
|
|
238
230
|
return;
|
|
239
231
|
}
|
|
240
232
|
throw err; // default is to re-throw and stop Haraka
|
|
241
233
|
}
|
|
242
|
-
|
|
243
|
-
return this;
|
|
244
234
|
}
|
|
245
235
|
}
|
|
246
236
|
|
|
@@ -254,7 +244,7 @@ exports.shutdown_plugins = () => {
|
|
|
254
244
|
|
|
255
245
|
process.on('message', msg => {
|
|
256
246
|
if (msg.event && msg.event == 'plugins.shutdown') {
|
|
257
|
-
|
|
247
|
+
plugins.loginfo("Shutting down");
|
|
258
248
|
exports.shutdown_plugins();
|
|
259
249
|
}
|
|
260
250
|
});
|
|
@@ -270,39 +260,28 @@ function plugin_search_paths (prefix, name) {
|
|
|
270
260
|
function get_timeout (name) {
|
|
271
261
|
let timeout = parseFloat((exports.config.get(`${name}.timeout`)));
|
|
272
262
|
if (isNaN(timeout)) {
|
|
273
|
-
|
|
263
|
+
plugins.logdebug(`no timeout in ${name}.timeout`);
|
|
274
264
|
timeout = parseFloat(exports.config.get('plugin_timeout'));
|
|
275
265
|
}
|
|
276
266
|
if (isNaN(timeout)) {
|
|
277
|
-
|
|
267
|
+
plugins.logdebug('no timeout in plugin_timeout');
|
|
278
268
|
timeout = 30;
|
|
279
269
|
}
|
|
280
270
|
|
|
281
|
-
|
|
271
|
+
plugins.logdebug(`plugin ${name} timeout is: ${timeout}s`);
|
|
282
272
|
return timeout;
|
|
283
273
|
}
|
|
284
274
|
|
|
285
|
-
|
|
286
|
-
for (const key in logger) {
|
|
287
|
-
if (!/^log\w/.test(key)) continue;
|
|
288
|
-
// console.log(`adding Plugin.${key} method`);
|
|
289
|
-
Plugin.prototype[key] = (function (lev) {
|
|
290
|
-
return function () {
|
|
291
|
-
const args = [this];
|
|
292
|
-
for (let i=0, l=arguments.length; i<l; i++) {
|
|
293
|
-
args.push(arguments[i]);
|
|
294
|
-
}
|
|
295
|
-
logger[lev].apply(logger, args);
|
|
296
|
-
};
|
|
297
|
-
})(key);
|
|
298
|
-
}
|
|
275
|
+
logger.add_log_methods(Plugin)
|
|
299
276
|
|
|
300
277
|
const plugins = exports;
|
|
301
278
|
|
|
279
|
+
logger.add_log_methods(plugins, 'plugins')
|
|
280
|
+
|
|
302
281
|
plugins.Plugin = Plugin;
|
|
303
282
|
|
|
304
283
|
plugins.load_plugins = override => {
|
|
305
|
-
|
|
284
|
+
plugins.logdebug('Loading');
|
|
306
285
|
let plugin_list;
|
|
307
286
|
if (override) {
|
|
308
287
|
if (!Array.isArray(override)) override = [ override ];
|
|
@@ -312,22 +291,21 @@ plugins.load_plugins = override => {
|
|
|
312
291
|
plugin_list = exports.config.get('plugins', 'list');
|
|
313
292
|
}
|
|
314
293
|
|
|
315
|
-
|
|
294
|
+
for (let plugin of plugin_list) {
|
|
316
295
|
if (plugin.startsWith('haraka-plugin-')) plugin = plugin.substr(14)
|
|
317
296
|
if (plugins.deprecated[plugin]) {
|
|
318
|
-
|
|
297
|
+
plugins.lognotice(`${plugin} has been replaced by '${plugins.deprecated[plugin]}'. Please update config/plugins`)
|
|
319
298
|
plugins.load_plugin(plugins.deprecated[plugin]);
|
|
320
299
|
}
|
|
321
300
|
else {
|
|
322
301
|
plugins.load_plugin(plugin);
|
|
323
302
|
}
|
|
324
|
-
}
|
|
303
|
+
}
|
|
325
304
|
|
|
326
305
|
plugins.plugin_list = Object.keys(plugins.registered_plugins);
|
|
327
306
|
|
|
328
307
|
// Sort registered_hooks by priority
|
|
329
|
-
const
|
|
330
|
-
for (const hook of hooks) {
|
|
308
|
+
for (const hook of Object.keys(plugins.registered_hooks)) {
|
|
331
309
|
plugins.registered_hooks[hook].sort((a, b) => {
|
|
332
310
|
if (a.priority < b.priority) return -1;
|
|
333
311
|
if (a.priority > b.priority) return 1;
|
|
@@ -343,6 +321,8 @@ plugins.load_plugins = override => {
|
|
|
343
321
|
}
|
|
344
322
|
|
|
345
323
|
plugins.deprecated = {
|
|
324
|
+
'auth/auth_ldap' : 'auth-ldap',
|
|
325
|
+
'backscatterer' : 'dns-list',
|
|
346
326
|
'connect.asn' : 'asn',
|
|
347
327
|
'connect.fcrdns' : 'fcrdns',
|
|
348
328
|
'connect.geoip' : 'geoip',
|
|
@@ -352,6 +332,11 @@ plugins.deprecated = {
|
|
|
352
332
|
'data.noreceived' : 'headers',
|
|
353
333
|
'data.rfc5322_header_checks': 'headers',
|
|
354
334
|
'data.headers' : 'headers',
|
|
335
|
+
'dkim_sign' : 'dkim',
|
|
336
|
+
'dkim_verify' : 'dkim',
|
|
337
|
+
'data.uribl' : 'uribl',
|
|
338
|
+
'dnsbl' : 'dns-list',
|
|
339
|
+
'dnswl' : 'dns-list',
|
|
355
340
|
'log.syslog' : 'syslog',
|
|
356
341
|
'mail_from.access' : 'access',
|
|
357
342
|
'mail_from.blocklist' : 'access',
|
|
@@ -360,6 +345,8 @@ plugins.deprecated = {
|
|
|
360
345
|
'rate_limit' : 'limit',
|
|
361
346
|
'rcpt_to.access' : 'access',
|
|
362
347
|
'rcpt_to.blocklist' : 'access',
|
|
348
|
+
'rcpt_to.ldap' : 'rcpt-ldap',
|
|
349
|
+
'rcpt_to.max_count' : 'limit',
|
|
363
350
|
'rcpt_to.qmail_deliverable' : 'qmail-deliverable',
|
|
364
351
|
'rdns.regexp' : 'access',
|
|
365
352
|
'relay_acl' : 'relay',
|
|
@@ -368,7 +355,7 @@ plugins.deprecated = {
|
|
|
368
355
|
}
|
|
369
356
|
|
|
370
357
|
plugins.load_plugin = name => {
|
|
371
|
-
|
|
358
|
+
plugins.loginfo(`loading ${name}`);
|
|
372
359
|
|
|
373
360
|
const plugin = plugins._load_and_compile_plugin(name);
|
|
374
361
|
if (plugin) {
|
|
@@ -376,7 +363,6 @@ plugins.load_plugin = name => {
|
|
|
376
363
|
}
|
|
377
364
|
|
|
378
365
|
plugins.registered_plugins[name] = plugin;
|
|
379
|
-
return plugin;
|
|
380
366
|
}
|
|
381
367
|
|
|
382
368
|
// Set in server.js; initialized to empty object
|
|
@@ -388,7 +374,7 @@ plugins._load_and_compile_plugin = name => {
|
|
|
388
374
|
if (!plugin.plugin_path) {
|
|
389
375
|
const err = `Loading plugin ${plugin.name} failed: No plugin with this name found`;
|
|
390
376
|
if (exports.config.get('smtp.ini').main.ignore_bad_plugins) {
|
|
391
|
-
|
|
377
|
+
plugins.logcrit(err);
|
|
392
378
|
return;
|
|
393
379
|
}
|
|
394
380
|
throw err;
|
|
@@ -407,8 +393,6 @@ plugins._register_plugin = plugin => {
|
|
|
407
393
|
plugin.register_hook(result[1], method);
|
|
408
394
|
}
|
|
409
395
|
}
|
|
410
|
-
|
|
411
|
-
return plugin;
|
|
412
396
|
}
|
|
413
397
|
|
|
414
398
|
plugins.run_hooks = (hook, object, params) => {
|
|
@@ -496,10 +480,8 @@ plugins.run_next_hook = (hook, object, params) => {
|
|
|
496
480
|
|
|
497
481
|
const respond_method = `${hook}_respond`;
|
|
498
482
|
if (item && is_deny_retval(retval) && hook.substr(0,5) !== 'init_') {
|
|
499
|
-
object.deny_respond =
|
|
500
|
-
|
|
501
|
-
plugins.run_hooks('deny', object,
|
|
502
|
-
[retval, msg, item[0].name, item[1], params, hook]);
|
|
483
|
+
object.deny_respond = get_denyfn(object, hook, params, retval, msg, respond_method);
|
|
484
|
+
plugins.run_hooks('deny', object, [retval, msg, item[0].name, item[1], params, hook]);
|
|
503
485
|
}
|
|
504
486
|
else {
|
|
505
487
|
object.hooks_to_run = [];
|
|
@@ -579,11 +561,25 @@ function log_run_item (item, hook, retval, object, params, msg) {
|
|
|
579
561
|
'function' : item[1],
|
|
580
562
|
'params' : ((params) ? ((typeof params === 'string') ? params : params[0]) : ''),
|
|
581
563
|
'retval' : constants.translate(retval),
|
|
582
|
-
'msg' : (
|
|
564
|
+
'msg' : sanitize(msg),
|
|
583
565
|
});
|
|
584
566
|
}
|
|
585
567
|
}
|
|
586
568
|
|
|
569
|
+
function sanitize (msg) {
|
|
570
|
+
if (!msg) return ''
|
|
571
|
+
if (typeof msg === 'string') return msg
|
|
572
|
+
if (typeof msg === 'object') {
|
|
573
|
+
if (msg.constructor.name === 'DSN') return msg.reply
|
|
574
|
+
const sanitized = { ...msg }; // copy the message
|
|
575
|
+
for (const priv of ['password','auth_pass']) {
|
|
576
|
+
delete sanitized[priv]
|
|
577
|
+
}
|
|
578
|
+
return JSON.stringify(sanitized)
|
|
579
|
+
}
|
|
580
|
+
logger.logerror(`what is ${msg} (typeof ${typeof msg})?`)
|
|
581
|
+
}
|
|
582
|
+
|
|
587
583
|
function is_deny_retval (val) {
|
|
588
584
|
switch (val) {
|
|
589
585
|
case constants.deny:
|
package/run_tests
CHANGED
|
@@ -1,32 +1,5 @@
|
|
|
1
|
-
#!/
|
|
1
|
+
#!/bin/sh
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TESTS=${1:-"test test/outbound test/plugins/auth test/plugins/queue test/plugins"}
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
try {
|
|
7
|
-
reporter = require('nodeunit-x').reporters.default;
|
|
8
|
-
}
|
|
9
|
-
catch (e) {
|
|
10
|
-
console.log(`Error: ${e.message}
|
|
11
|
-
|
|
12
|
-
Cannot find nodeunit module. Please run the following:
|
|
13
|
-
|
|
14
|
-
npm install\n`);
|
|
15
|
-
|
|
16
|
-
process.exit();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
process.chdir(__dirname);
|
|
20
|
-
|
|
21
|
-
let tests = [
|
|
22
|
-
'tests', 'tests/outbound', 'tests/plugins',
|
|
23
|
-
'tests/plugins/auth', 'tests/plugins/queue'
|
|
24
|
-
];
|
|
25
|
-
|
|
26
|
-
if (process.argv[2]) {
|
|
27
|
-
console.log("Running tests: ", process.argv.slice(2));
|
|
28
|
-
tests = process.argv.slice(2);
|
|
29
|
-
}
|
|
30
|
-
reporter.run(tests, undefined, function (err) {
|
|
31
|
-
process.exit(((err) ? 1 : 0));
|
|
32
|
-
});
|
|
5
|
+
npx mocha --exit $TESTS
|