From c21f080c447ce576d5bb40a18cd3f4ebdfadd165 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <adhisimon@gmail.com> Date: Sat, 6 Nov 2021 13:22:13 +0700 Subject: [PATCH] Add xid using uniqid --- package-lock.json | 39 ++++++++++++++++++++----------- package.json | 3 ++- transport.js | 70 +++++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 86 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index ecb8e9a..2aa9db4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "dependencies": { "komodo-sdk": "^1.43.8", "request": "^2.81.0", - "tektrans-logger": "^1.2.3" + "tektrans-logger": "^1.2.3", + "uniqid": "^5.4.0" } }, "node_modules/@cloudcmd/copy-file": { @@ -933,6 +934,14 @@ "uuid": "^3.4.0" } }, + "node_modules/komodo-sdk/node_modules/uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dependencies": { + "macaddress": "^0.2.8" + } + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -1742,12 +1751,9 @@ } }, "node_modules/uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dependencies": { - "macaddress": "^0.2.8" - } + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -2686,6 +2692,16 @@ "tektrans-logger": "^1.2.2", "uniqid": "^4.1.1", "uuid": "^3.4.0" + }, + "dependencies": { + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "^0.2.8" + } + } } }, "kuler": { @@ -3298,12 +3314,9 @@ } }, "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "requires": { - "macaddress": "^0.2.8" - } + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" }, "unpipe": { "version": "1.0.0", diff --git a/package.json b/package.json index fbb92d5..0d439bd 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "dependencies": { "komodo-sdk": "^1.43.8", "request": "^2.81.0", - "tektrans-logger": "^1.2.3" + "tektrans-logger": "^1.2.3", + "uniqid": "^5.4.0" } } diff --git a/transport.js b/transport.js index 2992bc8..26bad4a 100644 --- a/transport.js +++ b/transport.js @@ -8,6 +8,7 @@ const request = require('request'); const config = require('komodo-sdk/config') const logger = require('tektrans-logger'); +const uniqid = rquire('uniqid'); let _callback; @@ -31,13 +32,22 @@ function createHttpServer() { } function onRequestFromPartner(req, res) { + const xid = uniqid(); + const method_name = 'onRequestFromPartner'; let remote_address = req.connection.remoteAddress.replace(/^::ffff:/, ''); let qs = url.parse(req.url, true).query; - logger.verbose('Got a request from partner', {module_name: module_name, method_name: method_name, remote_address: remote_address, url: req.url, qs: qs}); + logger.verbose('Got a request from partner', { + xid, + module_name, + method_name, + remote_address, + url: req.url, + qs: qs + }); let partner = qs.terminal_name + '@' + remote_address; let password = qs.password; @@ -48,6 +58,15 @@ function onRequestFromPartner(req, res) { let request_id = qs.request_id; if (!qs.terminal_name || !password || !reverse_url || ! product_name || !destination || !request_id) { + logger.verbose('Invalid request from partner', { + xid, + hasTerminalName: !!qs.terminal_name, + hasPassword: !!password, + hasProductName: !!product_name, + hasDestination: !!hasDestination, + hasRequestId: !!request_id, + + }) res.end('INVALID REQUEST'); return; } @@ -65,7 +84,11 @@ function onRequestFromPartner(req, res) { function(err, _result) { let result = cleanResponseToPartner(_result); - logger.verbose('Forwarding CORE response to partner as direct response', _result); + logger.verbose('C2DEEE9D Forwarding CORE response to partner as direct response', { + xid, + result: _result + }); + res.end(JSON.stringify(result)); } ) @@ -106,22 +129,28 @@ function init(cb) { createHttpServer(); } -async function sleepAndResend(partner, msg, params, retry) { +async function sleepAndResend(xid, partner, msg, params, retry) { if (retry > maxSendRetry) { logger.verbose('Retry exceeded', { - params, + xid, retry: retry || 0, + params, }); return; } + logger.verbose('Sleep before resend', { xid, sleepBeforeRetryMs }); + await sleep(sleepBeforeRetryMs); send(partner, msg, params, retry + 1); } function send(partner, msg, params, retry) { + const xid = uniqid(); + if (retry) { logger.verbose('F39C9082: Resending', { + xid, partner, msg, params, @@ -129,22 +158,26 @@ function send(partner, msg, params, retry) { }) } else { logger.verbose('Got response from CORE', { - partner: partner, msg: msg, params: params, retry: retry || 0, + xid, + partner, + msg, + params, + retried: retry || 0, }); } if (!params || !params.reverse_url) { - logger.verbose('Undefined reverse_url, not forwarding message to partner'); + logger.verbose('Undefined reverse_url, not forwarding message to partner', { xid }); return; } if (params.reverse_url.indexOf('http') < 0) { - logger.verbose('Invalid reverse_url, not forwarding message to partner'); + logger.verbose('Invalid reverse_url, not forwarding message to partner', { xid }); return; } if (params.rc === '68') { - logger.verbose('Ignoring RC 68 reverse report'); + logger.verbose('Ignoring RC 68 reverse report', { xid }); return; } @@ -153,11 +186,20 @@ function send(partner, msg, params, retry) { qs: cleanResponseToPartner(params) } - logger.verbose('Sending reverse report to partner', {request: reqOptions}); + logger.verbose('Sending reverse report to partner', { + xid, + request: reqOptions + }); + request(reqOptions, function(err, res, body) { if (err) { - logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err}); - sleepAndResend(partner, msg, params, retry || 0); + logger.warn('Error sending reverse report to partner', { + xid, + request: reqOptions, + err: err, + }); + + sleepAndResend(xid, partner, msg, params, retry || 0); return; } @@ -172,7 +214,11 @@ function send(partner, msg, params, retry) { } */ - logger.verbose('Reverse report has been sent to partner', { request: reqOptions, httpStatus: res && res.statusCode }); + logger.verbose('Reverse report has been sent to partner', { + xid, + request: reqOptions, + httpStatus: res && res.statusCode + }); }) } -- 1.9.0