Commit caac0a190bfe25e4dad5786262e2606d0f58941b

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

perbaikan remoteAddress

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