Commit 583c1e241aac07b4530666e9e2028cd72a59a588
1 parent
8cb9af878e
Exists in
master
create server dan on report
Showing 2 changed files with 46 additions and 1 deletions Inline Diff
package.json
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 |
vre.js
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 |