http-listener.js
1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"use strict";
const express = require('express');
const bodyParser = require('body-parser');
const ipfilter = require('express-ipfilter').IpFilter
const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const commandHandler = require('./command-handler');
const app = express();
const port = config && config.listener && config.listener.http && config.listener.http.port ? config.listener.http.port : 32979;
function mainHandler(req, res) {
if (!req.body) req.body = {};
if (!req.query.report_port && !req.body.report_port) {
res.end('ERROR. Undefined parameter: report_port');
return;
}
if (!req.query.from && !req.body.from) {
res.end('ERROR. Undefined parameter: from');
return;
}
if (!req.query.msg && !req.body.msg) {
res.end('ERROR. Undefined parameter: msg');
return;
}
const params = {
origin: req.body.origin || req.query.origin || 'MESSAGING',
report_ip: req.body.report_ip || req.query.report_ip || req.ip,
report_port: req.body.report_port || req.query.report_port,
from: req.body.from || req.query.from,
msg: req.body.msg || req.query.msg
}
commandHandler(req.body.msg || req.query.msg, params, function(err, coreResponseObject, responseParams) {
if (err) {
res.end('ERROR. ' + err);
}
else if (coreResponseObject) {
res.json(coreResponseObject);
}
else {
res.end(responseParams.body);
}
})
}
config.ip_whitelist && config.ip_whitelist.length && app.use(ipfilter(config.ip_whitelist, {mode: 'allow', log: false}));
app.get('/', mainHandler);
app.post('/', bodyParser.urlencoded({extended: true}), mainHandler);
app.listen(port, function() {
logger.info('HTTP listener started', {port: port, app_env: app.get('env')});
});