Commit 32e4b967f39962a31730890c37c1326c5311e5ad

Authored by Adhidarma Hadiwinoto
1 parent 91608260be
Exists in master

More verbose on log

Showing 1 changed file with 9 additions and 2 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 const messagesArchive = require('./messages-archive'); 11 const messagesArchive = require('./messages-archive');
12 12
13 const app = express(); 13 const app = express();
14 const port = config && config.listener && config.listener.http && config.listener.http.port ? config.listener.http.port : 32979; 14 const port = config && config.listener && config.listener.http && config.listener.http.port ? config.listener.http.port : 32979;
15 15
16 /** 16 /**
17 * Handler utama. 17 * Handler utama.
18 * 18 *
19 * @param {object} req - Express request object 19 * @param {object} req - Express request object
20 * @param {object} req.query - Express query string object 20 * @param {object} req.query - Express query string object
21 * @param {string} [req.query.partner] - Partner (pengirim atau penerima) 21 * @param {string} [req.query.partner] - Partner (pengirim atau penerima)
22 * @param {string} [req.query.from] - Pengirim, OBSOLETED: gunakan parameter partner 22 * @param {string} [req.query.from] - Pengirim, OBSOLETED: gunakan parameter partner
23 * @param {string} [req.query.from_raw] - Pengirim tanpa suffix (raw), OBSOLETED: gunakan parameter partner_raw 23 * @param {string} [req.query.from_raw] - Pengirim tanpa suffix (raw), OBSOLETED: gunakan parameter partner_raw
24 * @param {string} [req.query.to] - Tujuan, jika is_outgoing, OBSOLETED: gunakan parameter partner 24 * @param {string} [req.query.to] - Tujuan, jika is_outgoing, OBSOLETED: gunakan parameter partner
25 * @param {string} req.query.msg - Isi pesan 25 * @param {string} req.query.msg - Isi pesan
26 * @param {string} req.query.origin - Nama origin 26 * @param {string} req.query.origin - Nama origin
27 * @param {string} [req.query.origin_label] - Nama origin untuk ditulis di histori pesan 27 * @param {string} [req.query.origin_label] - Nama origin untuk ditulis di histori pesan
28 * @param {string} [req.query.do_not_forward_to_core] - Apakah teruskan pesan ke CORE 28 * @param {string} [req.query.do_not_forward_to_core] - Apakah teruskan pesan ke CORE
29 * @param {string} [req.query.is_outgoing] - Apakah pesan keluar 29 * @param {string} [req.query.is_outgoing] - Apakah pesan keluar
30 * @param {object} res - Express response object 30 * @param {object} res - Express response object
31 */ 31 */
32 function mainHandler(req, res) { 32 function mainHandler(req, res) {
33 if (!req.body) req.body = {}; 33 if (!req.body) req.body = {};
34 34
35 if ( 35 if (
36 ( !req.body.partner && !req.query.partner ) 36 ( !req.body.partner && !req.query.partner )
37 && 37 &&
38 ( 38 (
39 ( (!req.query.is_outgoing && !req.body.is_outgoing) && (!req.query.from && !req.body.from) ) 39 ( (!req.query.is_outgoing && !req.body.is_outgoing) && (!req.query.from && !req.body.from) )
40 || 40 ||
41 ( (req.query.is_outgoing || req.body.is_outgoing) && (!req.query.to && !req.body.to) ) 41 ( (req.query.is_outgoing || req.body.is_outgoing) && (!req.query.to && !req.body.to) )
42 ) 42 )
43 ) { 43 ) {
44 logger.warn('Undefined parameter partner or from or to. #D254B7B454DB', { 44 logger.warn('Undefined parameter partner or from or to. #D254B7B454DB', {
45 partner: req.body.partner || req.query.partner, 45 partner: req.body.partner || req.query.partner,
46 is_outgoing: req.body.is_outgoing || req.query.is_outgoing, 46 is_outgoing: req.body.is_outgoing || req.query.is_outgoing,
47 from: req.body.from || req.query.from, 47 from: req.body.from || req.query.from,
48 to: req.body.to || req.query.to, 48 to: req.body.to || req.query.to,
49 }); 49 });
50 res.end('ERROR. Undefined parameter: partner or from or to'); 50 res.end('ERROR. Undefined parameter: partner or from or to');
51 return; 51 return;
52 } 52 }
53 53
54 if (!req.query.msg && !req.body.msg) { 54 if (!req.query.msg && !req.body.msg) {
55 logger.warn('Undefined parameter msg. #92996A497D12') 55 logger.warn('Undefined parameter msg. #92996A497D12')
56 res.end('ERROR. Undefined parameter: msg'); 56 res.end('ERROR. Undefined parameter: msg');
57 return; 57 return;
58 } 58 }
59 59
60 logger.info(`Saving ${req.body.is_outgoing || req.query.is_outgoing ? 'outgoing' : 'incoming' } message history`); 60 logger.verbose(
61 `Saving ${req.body.is_outgoing || req.query.is_outgoing ? 'outgoing' : 'incoming' } message history`,
62 {
63 transport: req.body.origin_transport || req.query.origin_transport,
64 partner: req.body.partner || req.query.partner || req.body.from || req.query.from || req.body.to || req.query.to,
65 msg: req.body.msg || req.query.msg,
66 }
67 );
61 68
62 messagesArchive.insert( 69 messagesArchive.insert(
63 { 70 {
64 origin_label: req.body.origin_label || req.query.origin_label || req.body.origin || req.query.origin, 71 origin_label: req.body.origin_label || req.query.origin_label || req.body.origin || req.query.origin,
65 origin_transport: req.body.origin_transport || req.query.origin_transport, 72 origin_transport: req.body.origin_transport || req.query.origin_transport,
66 partner: req.body.partner_raw || req.query.partner_raw || req.body.from_raw || req.query.from_raw || req.body.from || req.query.from || req.body.to || req.query.to || req.body.partner || req.query.partner, 73 partner: req.body.partner_raw || req.query.partner_raw || req.body.from_raw || req.query.from_raw || req.body.from || req.query.from || req.body.to || req.query.to || req.body.partner || req.query.partner,
67 msg: req.body.msg || req.query.msg, 74 msg: req.body.msg || req.query.msg,
68 }, 75 },
69 ( req.body.is_outgoing || req.query.is_outgoing ) ? messagesArchive.DIRECTION_OUTGOING : messagesArchive.DIRECTION_INCOMING 76 ( req.body.is_outgoing || req.query.is_outgoing ) ? messagesArchive.DIRECTION_OUTGOING : messagesArchive.DIRECTION_INCOMING
70 ); 77 );
71 78
72 if ( 79 if (
73 req.body.do_not_forward_to_core || req.query.do_not_forward_to_core 80 req.body.do_not_forward_to_core || req.query.do_not_forward_to_core
74 || req.body.is_outgoing || req.query.is_outgoing 81 || req.body.is_outgoing || req.query.is_outgoing
75 ) { 82 ) {
76 logger.verbose( 'Ignoring message', { 83 logger.verbose( 'Ignoring message', {
77 from: req.body.from || req.query.from, 84 from: req.body.from || req.query.from,
78 msg: req.body.msg || req.query.msg, 85 msg: req.body.msg || req.query.msg,
79 do_not_forward_to_core: req.body.do_not_forward_to_core || req.query.do_not_forward_to_core 86 do_not_forward_to_core: req.body.do_not_forward_to_core || req.query.do_not_forward_to_core
80 }); 87 });
81 88
82 res.end('OK'); 89 res.end('OK');
83 return; 90 return;
84 } 91 }
85 92
86 if (!req.query.report_port && !req.body.report_port) { 93 if (!req.query.report_port && !req.body.report_port) {
87 res.end('ERROR. Undefined parameter: report_port'); 94 res.end('ERROR. Undefined parameter: report_port');
88 return; 95 return;
89 } 96 }
90 97
91 const params = { 98 const params = {
92 origin: req.body.origin || req.query.origin || 'MESSAGING', 99 origin: req.body.origin || req.query.origin || 'MESSAGING',
93 report_ip: req.body.report_ip || req.query.report_ip || req.ip, 100 report_ip: req.body.report_ip || req.query.report_ip || req.ip,
94 report_port: req.body.report_port || req.query.report_port, 101 report_port: req.body.report_port || req.query.report_port,
95 from: req.body.partner || req.query.partner || req.body.from || req.query.from, 102 from: req.body.partner || req.query.partner || req.body.from || req.query.from,
96 msg: req.body.msg || req.query.msg 103 msg: req.body.msg || req.query.msg
97 } 104 }
98 105
99 commandHandler(req.body.msg || req.query.msg, params, function(err, coreResponseObject, responseParams) { 106 commandHandler(req.body.msg || req.query.msg, params, function(err, coreResponseObject, responseParams) {
100 if (err) { 107 if (err) {
101 res.end('ERROR. ' + err); 108 res.end('ERROR. ' + err);
102 } 109 }
103 else if (coreResponseObject) { 110 else if (coreResponseObject) {
104 res.json(coreResponseObject); 111 res.json(coreResponseObject);
105 } 112 }
106 else { 113 else {
107 res.end(responseParams.body); 114 res.end(responseParams.body);
108 } 115 }
109 }) 116 })
110 } 117 }
111 118
112 config.ip_whitelist && config.ip_whitelist.length && app.use(ipfilter(config.ip_whitelist, {mode: 'allow', log: false})); 119 config.ip_whitelist && config.ip_whitelist.length && app.use(ipfilter(config.ip_whitelist, {mode: 'allow', log: false}));
113 120
114 app.get('/', mainHandler); 121 app.get('/', mainHandler);
115 app.post('/', bodyParser.urlencoded({extended: true}), mainHandler); 122 app.post('/', bodyParser.urlencoded({extended: true}), mainHandler);
116 123
117 app.listen(port, function() { 124 app.listen(port, function() {
118 logger.info('HTTP-LISTENER: started', {port: port, app_env: app.get('env')}); 125 logger.info('HTTP-LISTENER: started', {port: port, app_env: app.get('env')});
119 }); 126 });