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