Commit 49640211da161e2b7d524eb01a4c8cd749006502

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

refactor onRequestFromCore menjadi onRequestFromPartner

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