Commit 6621ca5cdb5472470c4073070c18c1a1145d6cb9

Authored by Adhidarma Hadiwinoto
1 parent 96092d4c0a
Exists in master

Last dump filename

Showing 2 changed files with 2 additions and 2 deletions Inline Diff

lib/callback/dumper.js
1 const MODULE_NAME = 'CALLBACK.DUMPER'; 1 const MODULE_NAME = 'CALLBACK.DUMPER';
2 2
3 const fs = require('fs'); 3 const fs = require('fs');
4 const fsPromise = require('fs').promises; 4 const fsPromise = require('fs').promises;
5 const path = require('path'); 5 const path = require('path');
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 moment = require('moment'); 8 const moment = require('moment');
9 9
10 const baseDumpDir = 'dump'; 10 const baseDumpDir = 'dump';
11 const callbackDumpDir = path.join(baseDumpDir, 'callback'); 11 const callbackDumpDir = path.join(baseDumpDir, 'callback');
12 12
13 if (!fs.existsSync(baseDumpDir)) { 13 if (!fs.existsSync(baseDumpDir)) {
14 logger.verbose(`${MODULE_NAME} D7E3D88E: Creating base dump dir`); 14 logger.verbose(`${MODULE_NAME} D7E3D88E: Creating base dump dir`);
15 fs.mkdirSync(baseDumpDir); 15 fs.mkdirSync(baseDumpDir);
16 } 16 }
17 17
18 if (!fs.existsSync(callbackDumpDir)) { 18 if (!fs.existsSync(callbackDumpDir)) {
19 logger.verbose(`${MODULE_NAME} 002EC4A8: Creating callback dump dir`); 19 logger.verbose(`${MODULE_NAME} 002EC4A8: Creating callback dump dir`);
20 fs.mkdirSync(callbackDumpDir); 20 fs.mkdirSync(callbackDumpDir);
21 } 21 }
22 22
23 module.exports = async (req, res, next) => { 23 module.exports = async (req, res, next) => {
24 if ( 24 if (
25 !config 25 !config
26 || !config.partner 26 || !config.partner
27 || !config.partner.callback 27 || !config.partner.callback
28 || !config.partner.callback.dump_request 28 || !config.partner.callback.dump_request
29 ) { 29 ) {
30 next(); 30 next();
31 return; 31 return;
32 } 32 }
33 33
34 const { xid } = res.locals; 34 const { xid } = res.locals;
35 35
36 const data = `-------- 36 const data = `--------
37 XID: ${xid} 37 XID: ${xid}
38 PID: ${process.pid} 38 PID: ${process.pid}
39 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} 39 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')}
40 REMOTE-ADDR: ${req.ip} 40 REMOTE-ADDR: ${req.ip}
41 USER-AGENT: ${req.get('user-agent')} 41 USER-AGENT: ${req.get('user-agent')}
42 METHOD: ${req.method} 42 METHOD: ${req.method}
43 URL: ${req.url} 43 URL: ${req.url}
44 44
45 QUERY-STRING: 45 QUERY-STRING:
46 ${JSON.stringify(req.query, null, 2)} 46 ${JSON.stringify(req.query, null, 2)}
47 47
48 REQ-CONTENT-TYPE: ${req.get('content-type')} 48 REQ-CONTENT-TYPE: ${req.get('content-type')}
49 REQ-BODY-TYPEOF: ${typeof req.body} 49 REQ-BODY-TYPEOF: ${typeof req.body}
50 REQ-BODY: 50 REQ-BODY:
51 ${(req.body && typeof req.body === 'object' && JSON.stringify(req.body, null, 2)) || req.body} 51 ${(req.body && typeof req.body === 'object' && JSON.stringify(req.body, null, 2)) || req.body}
52 `; 52 `;
53 53
54 const dumpDir = path.join( 54 const dumpDir = path.join(
55 callbackDumpDir, 55 callbackDumpDir,
56 moment().format('YYYY-MM-DD'), 56 moment().format('YYYY-MM-DD'),
57 ); 57 );
58 58
59 try { 59 try {
60 await fsPromise.stat(dumpDir); 60 await fsPromise.stat(dumpDir);
61 } catch { 61 } catch {
62 await fsPromise.mkdir(dumpDir, { recursive: true }); 62 await fsPromise.mkdir(dumpDir, { recursive: true });
63 } 63 }
64 64
65 await fsPromise.writeFile( 65 await fsPromise.writeFile(
66 path.join( 66 path.join(
67 dumpDir, 67 dumpDir,
68 [ 68 [
69 moment().format('YYMMDD_HHmmss_SSS'), 69 moment().format('YYMMDD_HHmmss_SSS'),
70 xid, 70 xid,
71 ].join('_'), 71 ].join('_'),
72 ), 72 ),
73 data, 73 data,
74 ); 74 );
75 75
76 await fsPromise.writeFile( 76 await fsPromise.writeFile(
77 path.join(callbackDumpDir, 'last-callback'), 77 path.join(callbackDumpDir, 'last'),
78 data, 78 data,
79 ); 79 );
80 80
81 next(); 81 next();
82 }; 82 };
83 83
lib/hit/dump-req-res.js
1 const MODULE_NAME = 'DUMP-REQ-RES'; 1 const MODULE_NAME = 'DUMP-REQ-RES';
2 2
3 const fs = require('fs'); 3 const fs = require('fs');
4 const path = require('path'); 4 const path = require('path');
5 const fsPromise = require('fs').promises; 5 const fsPromise = require('fs').promises;
6 const moment = require('moment'); 6 const moment = require('moment');
7 7
8 const config = require('komodo-sdk/config'); 8 const config = require('komodo-sdk/config');
9 const logger = require('komodo-sdk/logger'); 9 const logger = require('komodo-sdk/logger');
10 10
11 const baseDumpDir = 'dump'; 11 const baseDumpDir = 'dump';
12 const requestDumpDir = path.join(baseDumpDir, 'request'); 12 const requestDumpDir = path.join(baseDumpDir, 'request');
13 13
14 if (!fs.existsSync(baseDumpDir)) { 14 if (!fs.existsSync(baseDumpDir)) {
15 logger.verbose(`${MODULE_NAME} 51105314: Creating base dump dir`); 15 logger.verbose(`${MODULE_NAME} 51105314: Creating base dump dir`);
16 fs.mkdirSync(baseDumpDir); 16 fs.mkdirSync(baseDumpDir);
17 } 17 }
18 18
19 if (!fs.existsSync(requestDumpDir)) { 19 if (!fs.existsSync(requestDumpDir)) {
20 logger.verbose(`${MODULE_NAME} 8A52891B: Creating request dump dir`); 20 logger.verbose(`${MODULE_NAME} 8A52891B: Creating request dump dir`);
21 fs.mkdirSync(requestDumpDir); 21 fs.mkdirSync(requestDumpDir);
22 } 22 }
23 23
24 module.exports = async ( 24 module.exports = async (
25 xid, task, httpMethod, endpointUrl, params, responseBody, responseStatus, 25 xid, task, httpMethod, endpointUrl, params, responseBody, responseStatus,
26 ) => { 26 ) => {
27 if ( 27 if (
28 !config 28 !config
29 || !config.partner 29 || !config.partner
30 || !config.partner.dump_request 30 || !config.partner.dump_request
31 ) { 31 ) {
32 return; 32 return;
33 } 33 }
34 34
35 const data = `-------- 35 const data = `--------
36 XID: ${xid} 36 XID: ${xid}
37 PID: ${process.pid} 37 PID: ${process.pid}
38 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} 38 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')}
39 39
40 TASK: 40 TASK:
41 ${JSON.stringify(task, null, 2)} 41 ${JSON.stringify(task, null, 2)}
42 42
43 43
44 HTTP-METHOD: ${httpMethod} 44 HTTP-METHOD: ${httpMethod}
45 URL: ${endpointUrl} 45 URL: ${endpointUrl}
46 PARAMS: 46 PARAMS:
47 ${ 47 ${
48 params && ( 48 params && (
49 (typeof params === 'string' && params) 49 (typeof params === 'string' && params)
50 || JSON.stringify(params, null, 2) 50 || JSON.stringify(params, null, 2)
51 ) 51 )
52 } 52 }
53 53
54 RESPONSE-STATUS: ${responseStatus} 54 RESPONSE-STATUS: ${responseStatus}
55 RESPONSE-BODY: 55 RESPONSE-BODY:
56 ${ 56 ${
57 responseBody && ( 57 responseBody && (
58 (typeof responseBody === 'string' && responseBody) 58 (typeof responseBody === 'string' && responseBody)
59 || JSON.stringify(responseBody, null, 2) 59 || JSON.stringify(responseBody, null, 2)
60 ) 60 )
61 } 61 }
62 `; 62 `;
63 63
64 const dumpDir = path.join( 64 const dumpDir = path.join(
65 requestDumpDir, 65 requestDumpDir,
66 moment().format('YYYY-MM-DD'), 66 moment().format('YYYY-MM-DD'),
67 ); 67 );
68 68
69 try { 69 try {
70 await fsPromise.stat(dumpDir); 70 await fsPromise.stat(dumpDir);
71 } catch { 71 } catch {
72 await fsPromise.mkdir(dumpDir, { recursive: true }); 72 await fsPromise.mkdir(dumpDir, { recursive: true });
73 } 73 }
74 74
75 await fsPromise.writeFile( 75 await fsPromise.writeFile(
76 path.join( 76 path.join(
77 dumpDir, 77 dumpDir,
78 `trx_${task.trx_id}`, 78 `trx_${task.trx_id}`,
79 ), 79 ),
80 data, 80 data,
81 ); 81 );
82 82
83 await fsPromise.writeFile( 83 await fsPromise.writeFile(
84 path.join(dumpDir, 'last-trx'), 84 path.join(requestDumpDir, 'last'),
85 data, 85 data,
86 ); 86 );
87 }; 87 };
88 88