Commit 583c1e241aac07b4530666e9e2028cd72a59a588

Authored by Adhidarma Hadiwinoto
1 parent 8cb9af878e
Exists in master

create server dan on report

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

1 { 1 {
2 "name": "sate24-to-vre", 2 "name": "sate24-to-vre",
3 "version": "0.0.1", 3 "version": "0.0.1",
4 "description": "ST24 to VRE", 4 "description": "ST24 to VRE",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha" 7 "test": "mocha"
8 }, 8 },
9 "repository": { 9 "repository": {
10 "type": "git", 10 "type": "git",
11 "url": "git@gitlab.kodesumber.com:reload97/sate24-to-vre.git" 11 "url": "git@gitlab.kodesumber.com:reload97/sate24-to-vre.git"
12 }, 12 },
13 "keywords": [ 13 "keywords": [
14 "st24", 14 "st24",
15 "reload97", 15 "reload97",
16 "r97", 16 "r97",
17 "ppob", 17 "ppob",
18 "vre", 18 "vre",
19 "m2m", 19 "m2m",
20 "h2h" 20 "h2h"
21 ], 21 ],
22 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>", 22 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>",
23 "license": "BSD", 23 "license": "BSD",
24 "dependencies": { 24 "dependencies": {
25 "fs": "0.0.2", 25 "fs": "0.0.2",
26 "ini": "~1.3.4", 26 "ini": "~1.3.4",
27 "sate24": "git+http://git@gitlab.kodesumber.com/reload97/node-sate24.git", 27 "sate24": "git+http://git@gitlab.kodesumber.com/reload97/node-sate24.git",
28 "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git", 28 "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git",
29 "xmlrpc": "~1.3.1", 29 "xmlrpc": "~1.3.1",
30 "winston": "~2.1.1" 30 "winston": "~2.1.1",
31 "xml2js": "~0.4.15"
31 } 32 }
32 } 33 }
33 34
1 var xmlrpc = require('xmlrpc'); 1 var xmlrpc = require('xmlrpc');
2 var xmlParser = require("xml2js").parseString;
2 3
3 var config; 4 var config;
4 var callbackReport; 5 var callbackReport;
5 var aaa; 6 var aaa;
6 var logger; 7 var logger;
7 8
8 function start(_config, _callbackReport, options) { 9 function start(_config, _callbackReport, options) {
9 config = _config; 10 config = _config;
10 callbackReport = _callbackReport; 11 callbackReport = _callbackReport;
11 12
12 if (options && options.aaa) { 13 if (options && options.aaa) {
13 aaa = options.aaa; 14 aaa = options.aaa;
14 } 15 }
15 16
16 if (options && options.logger) { 17 if (options && options.logger) {
17 logger = options.logger; 18 logger = options.logger;
18 } else { 19 } else {
19 logger = new winston.Logger({ 20 logger = new winston.Logger({
20 transports: [ 21 transports: [
21 new (winston.transports.Console)() 22 new (winston.transports.Console)()
22 ] 23 ]
23 }); 24 });
24 } 25 }
25 26
26 createServer(); 27 createServer();
27 } 28 }
28 29
30 function createServer() {
31 var httpServer = http.createServer(onReverseReport).listen(config.h2h_out.listen_port, function() {
32 logger.info('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port);
33 });
34 }
35
36 function onReverseReport(http_request, http_response) {
37 xmlParser(http_request, function(err, data) {
38
39 if (err) {
40 logger.warn('Can not parse XML request', {http_request: http_request});
41 http_response('Something wrong');
42 return;
43 }
44
45 var message;
46 var trx_id;
47
48 try {
49 message = data.reporth2h.msg.join().trim();
50 trx_id = data.reporth2h.msg.join().trim();
51 }
52 catch(missingFieldError) {
53 logger.warn('Missing field on xml report', {http_request: http_request, error: missingFieldError});
54 http_response('Something wrong');
55 return;
56 }
57
58 var trx_status = '68';
59
60 if (message.indexOf('Sukses') >= 0) {
61 trx_status = '00';
62 }
63 else if (message.indexOf('Gagal') >= 0) {
64 trx_status = '40';
65 }
66
67 callbackReport(trx_id, trx_status, message);
68 });
69 }
70
71
72
29 exports.start = start; 73 exports.start = start;
30 74