Commit f03c7581214e13a34a1ec475c4825de8a46162b7

Authored by Adhidarma Hadiwinoto
1 parent ab9902ea02
Exists in master and in 1 other branch dev

Fix core-callback sender postpaid

Showing 3 changed files with 12 additions and 9 deletions Inline Diff

lib/core-callback/index.js
1 const MODULE_NAME = 'CORE-CALLBACK'; 1 const MODULE_NAME = 'CORE-CALLBACK';
2 2
3 const DEFAULT_LISTENER_FROM_CORE = 25613; 3 const DEFAULT_LISTENER_FROM_CORE = 25613;
4 4
5 const express = require('express'); 5 const express = require('express');
6 const config = require('komodo-sdk/config'); 6 const config = require('komodo-sdk/config');
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 const middlewareCommon = require('../middlewares/common'); 8 const middlewareCommon = require('../middlewares/common');
9 const sender = require('./sender'); 9 const sender = require('./sender');
10 const dumperReq = require('./dumper/req'); 10 const dumperReq = require('./dumper/req');
11 const matrix = require('../matrix'); 11 const matrix = require('../matrix');
12 12
13 const app = express(); 13 const app = express();
14 14
15 app.use(express.json({ extended: true })); 15 app.use(express.json({ extended: true }));
16 app.use(express.urlencoded({ extended: true })); 16 app.use(express.urlencoded({ extended: true }));
17 17
18 app.use((req, res, next) => { 18 app.use((req, res, next) => {
19 res.locals.httpgetx_subsystem = MODULE_NAME; 19 res.locals.httpgetx_subsystem = MODULE_NAME;
20 next(); 20 next();
21 }); 21 });
22 22
23 app.use(middlewareCommon); 23 app.use(middlewareCommon);
24 app.use(dumperReq); 24 app.use(dumperReq);
25 25
26 app.use((req, res) => { 26 app.use((req, res) => {
27 matrix.core.received += 1; 27 matrix.core.received += 1;
28 res.end('OK'); 28 res.end('OK');
29 sender(req.query, res.locals.xid); 29
30 const data = req.method === 'GET' ? req.query : req.body;
31 sender(data, res.locals.xid);
30 }); 32 });
31 33
32 const port = (config.listener && config.listener.core && config.listener.core.port) 34 const port = (config.listener && config.listener.core && config.listener.core.port)
33 || DEFAULT_LISTENER_FROM_CORE; 35 || DEFAULT_LISTENER_FROM_CORE;
34 36
35 app.listen(port, () => { 37 app.listen(port, () => {
36 logger.info(`${MODULE_NAME} 0375DC4E: Listen from CORE callback on port ${port}`); 38 logger.info(`${MODULE_NAME} 0375DC4E: Listen from CORE callback on port ${port}`);
37 }).on('error', (e) => { 39 }).on('error', (e) => {
38 logger.error(`${MODULE_NAME} A90E42D5: Can not listen CORE callback on port ${port}. ${e.toString()}`); 40 logger.error(`${MODULE_NAME} A90E42D5: Can not listen CORE callback on port ${port}. ${e.toString()}`);
39 process.exit(1); 41 process.exit(1);
40 }); 42 });
41 43
lib/partner-listener/dumper/index.js
1 const MODULE_NAME = 'PARTNER-LISTENER.DUMPER'; 1 const MODULE_NAME = 'PARTNER-LISTENER.DUMPER';
2 2
3 const fsPromise = require('fs').promises; 3 const fsPromise = require('fs').promises;
4 const path = require('path'); 4 const path = require('path');
5 const moment = require('moment'); 5 const moment = require('moment');
6 const config = require('komodo-sdk/config'); 6 const config = require('komodo-sdk/config');
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 8
9 const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); 9 const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists');
10 10
11 const baseDumpDir = path.join('dump', 'partner-listener'); 11 const baseDumpDir = path.join('dump', 'partner-listener');
12 const lastDumpFileName = path.join(baseDumpDir, 'last'); 12 const lastDumpFileName = path.join(baseDumpDir, 'last');
13 13
14 module.exports = async (xid, req, responseBody) => { 14 module.exports = async (xid, req, responseBody) => {
15 if ( 15 if (
16 !config 16 !config
17 || !config.listener 17 || !config.listener
18 || !config.listener.partner 18 || !config.listener.partner
19 || !config.listener.partner.dump 19 || !config.listener.partner.dump
20 ) return; 20 ) return;
21 21
22 const data = `-------- 22 const data = `--------
23 XID: ${xid} 23 XID: ${xid}
24 TS: ${moment().format('YYYY-MM-DD HH:mm:ss')} 24 TS: ${moment().format('YYYY-MM-DD HH:mm:ss')}
25 25
26 REQ FROM: ${req.ip} 26 REQ FROM: ${req.ip}
27 REQ CONTENT-TYPE: ${req.get('content-type')} 27 REQ CONTENT-TYPE: ${req.get('content-type')}
28 REQ METHOD: ${req.method} 28 REQ METHOD: ${req.method}
29 REQ URL: ${req.url} 29 REQ URL: ${req.url}
30 30
31 REQ QUERY-STRING: 31 REQ QUERY-STRING:
32 ${JSON.stringify(req.query, null, 2)} 32 ${JSON.stringify(req.query, null, 2)}
33 33
34 REQ BODY: 34 REQ BODY:
35 ${typeof req.body === 'string' ? req.body : JSON.stringify(req.body, null, 2)} 35 ${typeof req.body === 'string' ? req.body : JSON.stringify(req.body, null, 2)}
36 36
37 RES BODY: 37 RES BODY:
38 ${typeof responseBody === 'string' ? responseBody : JSON.stringify(responseBody, null, 2)} 38 ${typeof responseBody === 'string' ? responseBody : JSON.stringify(responseBody, null, 2)}
39 `; 39 `;
40 40
41 const dumpFileName = path.join( 41 const dumpFileName = path.join(
42 baseDumpDir, 42 baseDumpDir,
43 moment().format('YYYY-MM-DD'), 43 moment().format('YYYY-MM-DD'),
44 [ 44 [
45 moment().format('YYMMDD_HHmmss_SSS'), 45 moment().format('YYMMDD_HHmmss_SSS'),
46 xid, 46 xid,
47 ].join('_'), 47 ].join('_'),
48 ); 48 );
49 49
50 try { 50 try {
51 await mkdirIfNotExists(xid, path.basename(dumpFileName)); 51 await mkdirIfNotExists(xid, path.dirname(dumpFileName), MODULE_NAME);
52 await fsPromise.writeFile(lastDumpFileName, data); 52 await fsPromise.writeFile(lastDumpFileName, data);
53 await fsPromise.writeFile(dumpFileName, data); 53 await fsPromise.writeFile(dumpFileName, data);
54 } catch (e) { 54 } catch (e) {
55 logger.warn(`${MODULE_NAME} FBC46420: Exception on dumping file`, { 55 logger.warn(`${MODULE_NAME} FBC46420: Exception on dumping file`, {
56 xid, 56 xid,
57 eCode: e.code, 57 eCode: e.code,
58 eMessage: e.eMessage, 58 eMessage: e.eMessage,
59 }); 59 });
60 } 60 }
61 }; 61 };
62 62
lib/utils/mkdir-if-not-exists.js
1 const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS'; 1 const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS';
2 2
3 const fsPromise = require('fs').promises; 3 const fsPromise = require('fs').promises;
4 const logger = require('komodo-sdk/logger'); 4 const logger = require('komodo-sdk/logger');
5 5
6 const mkdir = async (xid, dirname) => { 6 const mkdir = async (xid, dirname, callerName) => {
7 try { 7 try {
8 logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, {
9 xid, dirname, callerName,
10 });
11
8 await fsPromise.mkdir(dirname, { recursive: true }); 12 await fsPromise.mkdir(dirname, { recursive: true });
9 } catch (e) { 13 } catch (e) {
10 logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, { 14 logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, {
11 xid, 15 xid,
12 dirname, 16 dirname,
17 callerName,
13 eCode: e.code, 18 eCode: e.code,
14 eMessage: e.message, 19 eMessage: e.message,
15 }); 20 });
16 } 21 }
17 }; 22 };
18 23
19 module.exports = async (xid, dirname) => { 24 module.exports = async (xid, dirname, callerName) => {
20 try { 25 try {
21 await fsPromise.stat(dirname); 26 await fsPromise.stat(dirname);
22 } catch (e) { 27 } catch (e) {
23 logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, { 28 await mkdir(xid, dirname, callerName);
24 xid, dirname,
25 });
26