Commit 5bfc820cd22b737d3968c573f6c0379b2752aa07

Authored by Adhidarma Hadiwinoto
1 parent 51f96c2acf
Exists in master and in 1 other branch ad2mt

debug

Showing 1 changed file with 5 additions and 2 deletions Inline Diff

1 "use strict"; 1 "use strict";
2 2
3 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 3 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
4 4
5 const module_name = require('path').basename(__filename);
6
5 const http = require('http'); 7 const http = require('http');
6 const url = require('url'); 8 const url = require('url');
7 const request = require('request'); 9 const request = require('request');
8 10
9 const config = require('komodo-sdk/config') 11 const config = require('komodo-sdk/config')
10 const logger = require('komodo-sdk/logger'); 12 const logger = require('komodo-sdk/logger');
11 13
12 let _callback; 14 let _callback;
13 15
14 function createHttpServer() { 16 function createHttpServer() {
15 let listenPort = config.center_port; 17 let listenPort = config.center_port;
16 18
17 http.createServer(onRequest).listen(listenPort, function() { 19 http.createServer(onRequest).listen(listenPort, function() {
18 logger.info('Center HTTP server listen on port ' + listenPort); 20 logger.info('Center HTTP server listen on port ' + listenPort);
19 });; 21 });;
20 } 22 }
21 23
22 function onRequest(req, res) { 24 function onRequest(req, res) {
25 const method_name = 'onRequest';
23 26
24 let remote_address = req.connection.remoteAddress.replace(/^::ffff:/, ''); 27 let remote_address = req.connection.remoteAddress.replace(/^::ffff:/, '');
25 28
26 logger.verbose('Got a request from ' + remote_address);
27
28 let qs = url.parse(req.url, true).query; 29 let qs = url.parse(req.url, true).query;
29 30
31 logger.verbose('Got a request from CORE' {module_name: module_name, method_name: method_name remote_address: remote_address, url: req.url, qs: qs});
32
30 let partner = qs.terminal_name + '@' + remote_address; 33 let partner = qs.terminal_name + '@' + remote_address;
31 let password = qs.password; 34 let password = qs.password;
32 let reverse_url = qs.reverse_url; 35 let reverse_url = qs.reverse_url;
33 36
34 let product_name = qs.product_name; 37 let product_name = qs.product_name;
35 let destination = qs.destination; 38 let destination = qs.destination;
36 let request_id = qs.request_id; 39 let request_id = qs.request_id;
37 40
38 if (!qs.terminal_name || !password || !reverse_url || ! product_name || !destination || !request_id) { 41 if (!qs.terminal_name || !password || !reverse_url || ! product_name || !destination || !request_id) {
39 res.end('INVALID REQUEST'); 42 res.end('INVALID REQUEST');
40 return; 43 return;
41 } 44 }
42 45
43 let msg = [ product_name, destination, password, request_id ].join('.'); 46 let msg = [ product_name, destination, password, request_id ].join('.');
44 47
45 _callback.onIncomingMessage( 48 _callback.onIncomingMessage(
46 { 49 {
47 me: config.username, 50 me: config.username,
48 partner: partner, 51 partner: partner,
49 msg: msg.trim(), 52 msg: msg.trim(),
50 reverse_url: reverse_url 53 reverse_url: reverse_url
51 }, 54 },
52 55
53 function(err, _result) { 56 function(err, _result) {
54 let result = cleanResponseToPartner(_result); 57 let result = cleanResponseToPartner(_result);
55 58
56 logger.verbose('Forwarding CORE response to partner', _result); 59 logger.verbose('Forwarding CORE response to partner', _result);
57 res.end(JSON.stringify(result)); 60 res.end(JSON.stringify(result));
58 } 61 }
59 ) 62 )
60 } 63 }
61 64
62 function cleanResponseToPartner(_data) { 65 function cleanResponseToPartner(_data) {
63 let data = JSON.parse(JSON.stringify(_data)); 66 let data = JSON.parse(JSON.stringify(_data));
64 67
65 delete data.origin; 68 delete data.origin;
66 delete data.origin_report_ip; 69 delete data.origin_report_ip;
67 delete data.origin_report_port; 70 delete data.origin_report_port;
68 delete data.reverse_url; 71 delete data.reverse_url;
69 delete data.misc; 72 delete data.misc;
70 delete data.inquiry_only; 73 delete data.inquiry_only;
71 74
72 return data; 75 return data;
73 } 76 }
74 77
75 function init(cb) { 78 function init(cb) {
76 if (!cb) { 79 if (!cb) {
77 logger.warn('Callback is not defined'); 80 logger.warn('Callback is not defined');
78 console.trace(); 81 console.trace();
79 process.exit(1); 82 process.exit(1);
80 return; 83 return;
81 } 84 }
82 85
83 _callback = cb; 86 _callback = cb;
84 87
85 createHttpServer(); 88 createHttpServer();
86 } 89 }
87 90
88 function send(partner, msg, params) { 91 function send(partner, msg, params) {
89 logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params}); 92 logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params});
90 93
91 if (!params || !params.reverse_url) { 94 if (!params || !params.reverse_url) {
92 logger.verbose('Undefined reverse_url, not forwarding message to partner'); 95 logger.verbose('Undefined reverse_url, not forwarding message to partner');
93 return; 96 return;
94 } 97 }
95 98
96 99
97 let reqOptions = { 100 let reqOptions = {
98 url: params.reverse_url, 101 url: params.reverse_url,
99 qs: cleanResponseToPartner(params) 102 qs: cleanResponseToPartner(params)
100 } 103 }
101 104
102 logger.verbose('Sending reverse report to partner', {request: reqOptions}); 105 logger.verbose('Sending reverse report to partner', {request: reqOptions});
103 request(reqOptions, function(err, res, body) { 106 request(reqOptions, function(err, res, body) {
104 if (err) { 107 if (err) {
105 logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err}); 108 logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err});
106 return; 109 return;
107 } 110 }
108 111
109 if (res.statusCode != 200) { 112 if (res.statusCode != 200) {
110 logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode}); 113 logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode});
111 return; 114 return;
112 } 115 }
113 116
114 logger.verbose('Reverse report has been sent to partner', {request: reqOptions}); 117 logger.verbose('Reverse report has been sent to partner', {request: reqOptions});
115 }) 118 })
116 } 119 }
117 120
118 exports.init = init; 121 exports.init = init;