Commit a88fa9fb74274b2eb7907adf0fdad81b2fb4ece2
1 parent
89c79031c9
Exists in
master
hapus aaa dan httpserver
Showing 2 changed files with 0 additions and 249 deletions Inline Diff
aaa.js
1 | var request = require('request'); | File was deleted | |
2 | var strftime = require('strftime'); | ||
3 | |||
4 | var max_retry = 10; | ||
5 | var sleep_before_retry = 3000; | ||
6 | |||
7 | var config; | ||
8 | var partner; | ||
9 | |||
10 | var available_products = []; | ||
11 | |||
12 | function unaliasResponseCode(response_code, config_responsecode_alias) { | ||
13 | if (config_responsecode_alias == undefined && config && config.h2h_out && config.h2h_out.responsecode_alias) { | ||
14 | config_responsecode_alias = config.h2h_out.responsecode_alias; | ||
15 | } | ||
16 | |||
17 | if (!config_responsecode_alias) { | ||
18 | return response_code; | ||
19 | } | ||
20 | |||
21 | items = config_responsecode_alias.split(','); | ||
22 | items_count = items.length; | ||
23 | |||
24 | for (var i=0; i < items_count; i++) { | ||
25 | codes = items[i].split(':'); | ||
26 | |||
27 | if (codes.length <= 0) { continue; } | ||
28 | |||
29 | if (response_code == codes[0]) { | ||
30 | console.log('Change response code from ' + codes[0] + ' to ' + codes[1]); | ||
31 | return codes[1]; | ||
32 | } | ||
33 | } | ||
34 | |||
35 | return response_code; | ||
36 | } | ||
37 | |||
38 | function pullCity() { | ||
39 | var url = config.globals.aaa_host + '/pull_city'; | ||
40 | console.log('Pull cities from AAA - ' + url); | ||
41 | request(url, function (error, response, body) { | ||
42 | if (!error && response.statusCode == 200) { | ||
43 | //console.log('city=' + body); | ||
44 | } else { | ||
45 | console.log('Error in pull city'); | ||
46 | } | ||
47 | }); | ||
48 | } | ||
49 | |||
50 | function pullProduct() { | ||
51 | var url = config.globals.aaa_host + '/pull_product?opr_name=' + config.globals.operators; | ||
52 | console.log('Pull products from AAA - ' + url); | ||
53 | |||
54 | request(url, function (error, response, body) { | ||
55 | if (error || response.statusCode != 200) { | ||
56 | console.log('Error in pull products'); | ||
57 | return; | ||
58 | } | ||
59 | |||
60 | var productsAndOperators = body.split(';'); | ||
61 | var productsCount = productsAndOperators.length; | ||
62 | |||
63 | for (var i=0; i < productsCount; i++) { | ||
64 | var product = productsAndOperators[i].split(',', 1)[0]; | ||
65 | available_products.push(product); | ||
66 | } | ||
67 | //console.log(available_products); | ||
68 | }); | ||
69 | } | ||
70 | |||
71 | function pull() { | ||
72 | var url = config.globals.aaa_host | ||
73 | + '/pull?city=ALL&nom=' + config.globals.products | ||
74 | + '&chip_info=' + config.globals.gateway_name; | ||
75 | |||
76 | //console.log('AAA PULL - ' + url); | ||
77 | request(url, function (error, response, body) { | ||
78 | if (!error && response.statusCode == 200) { | ||
79 | if (body == 'NONE') { | ||
80 | return; | ||
81 | } | ||
82 | console.log(body); | ||
83 | |||
84 | var result = body.split(';'); | ||
85 | if (result[0] != 'OK') { | ||
86 | return; | ||
87 | } | ||
88 | |||
89 | var task = []; | ||
90 | task['requestId'] = result[1]; | ||
91 | task['timestamp'] = result[3]; | ||
92 | task['destination'] = result[4]; | ||
93 | task['product'] = result[7]; | ||
94 | |||
95 | if (config.products[task['product']] !== undefined) { | ||
96 | task['remoteProduct'] = config.products[task['product']]; | ||
97 | } else { | ||
98 | task['remoteProduct'] = task['product']; | ||
99 | } | ||
100 | |||
101 | partner.topupRequest(task); | ||
102 | |||
103 | } else { | ||
104 | console.log('Error in pull task'); | ||
105 | return; | ||
106 | } | ||
107 | }); | ||
108 | } | ||
109 | |||
110 | function pullLoop() { | ||
111 | if (!config.globals.pause) { | ||
112 | pull(); | ||
113 | } | ||
114 | |||
115 | setTimeout(pullLoop, config.globals.interval); | ||
116 | } | ||
117 | |||
118 | function callbackReport(requestId, responseCode, message, retry) { | ||
119 | if (retry === undefined) { | ||
120 | retry = max_retry; | ||
121 | } | ||
122 | |||
123 | responseCode = unaliasResponseCode(responseCode); | ||
124 | |||
125 | timestamp = strftime('%Y%m%d%H%M%S'); | ||
126 | var url = config.globals.aaa_host | ||
127 | + '/topup?trans_id=' + requestId | ||
128 | + '&trans_date' + timestamp | ||
129 | + '&trans_date=' + timestamp | ||
130 | + '&resp_code=' + responseCode | ||
131 | + '&ussd_msg=' + config.globals.gateway_name | ||
132 | + '$' + encodeURIComponent(message); | ||
133 | |||
134 | console.log('Report to AAA - ' + url); | ||
135 | request(url, function (error, response, body) { | ||
136 | if (error || response.statusCode != 200) { | ||
137 | console.log('Error report to AAA'); | ||
138 | |||
139 | if (retry) { | ||
140 | console.log('Retrying to report to AAA (' + retry + ')'); | ||
141 | callbackReport(requestId, responseCode, message, retry - 1); | ||
142 | } | ||
143 | } | ||
144 | }); | ||
145 | } | ||
146 | |||
147 | function start(_config, _partner) { | ||
148 | config = _config; | ||
149 | partner = _partner; | ||
150 | |||
151 | pullCity(); | ||
152 | pullProduct(); | ||
153 | |||
154 | setTimeout(pullLoop, 10 * 1000); | ||
155 | } | ||
156 | |||
157 | exports.start = start; | ||
158 | exports.callbackReport = callbackReport; | ||
159 | exports.unaliasResponseCode = unaliasResponseCode; | ||
160 | 1 | var request = require('request'); |
httpserver.js
1 | var http = require('http'); | File was deleted | |
2 | var nsr = require('node-simple-router'); | ||
3 | var router = nsr(); | ||
4 | |||
5 | var config; | ||
6 | var httpServer; | ||
7 | |||
8 | function start(_config) { | ||
9 | if (_config != undefined) { | ||
10 | config = _config; | ||
11 | } | ||
12 | listenPort = config.globals.admin_port; | ||
13 | |||
14 | router.get("/info", function(request, response) { | ||
15 | response.setHeader("Content-Type", "text/plain"); | ||
16 | response.write('CHIPINFO / GATEWAY NAME: ' + config.globals.gateway_name + "\n"); | ||
17 | response.write('PRODUCTS: ' + config.globals.products + "\n"); | ||
18 | response.write('AAA HOST: ' + config.globals.aaa_host + "\n"); | ||
19 | response.write('PARTNER: ' + config.h2h_out.partner + "\n"); | ||
20 | response.write('PAUSED: ' + config.globals.pause + "\n"); | ||
21 | response.write('UPTIME: ' + process.uptime() + "\n"); | ||
22 | response.write('REQUESTS COUNT: ' + config.globals.requests_count + "\n"); | ||
23 | response.write('ACTIVE REQUESTS COUNT: ' + config.globals.active_requests_count + "\n"); | ||
24 | response.write('MAX ACTIVE REQUESTS COUNT: ' + config.globals.max_active_requests_count + "\n"); | ||
25 | |||
26 | response.end(); | ||
27 | }); | ||
28 | |||
29 | router.get("/pause/:apikey", function(request, response) { | ||
30 | if (!config.globals.apikey) { | ||
31 | response.end('Undefined APIKEY on config'); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | if (request.params.apikey != config.globals.apikey) { | ||
36 | response.end('Invalid APIKEY'); | ||
37 | return; | ||
38 | } | ||
39 | |||
40 | config.globals.pause = 1; | ||
41 | response.end('Paused'); | ||
42 | }); | ||
43 | |||
44 | router.get("/resume/:apikey", function(request, response) { | ||
45 | if (!config.globals.apikey) { | ||
46 | response.end('Undefined APIKEY on config'); | ||
47 | return; | ||
48 | } | ||
49 | |||
50 | if (request.params.apikey != config.globals.apikey) { | ||
51 | response.end('Invalid APIKEY'); | ||
52 | return; | ||
53 | } | ||
54 | |||
55 | delete config.globals.pause; | ||
56 | response.end('Resume'); | ||
57 | }); | ||
58 | |||
59 | router.get("/reset-stats/:apikey", function(request, response) { | ||
60 | if (!config.globals.apikey) { | ||
61 | response.end('Undefined APIKEY on config'); | ||
62 | return; | ||
63 | } | ||
64 | |||
65 | if (request.params.apikey != config.globals.apikey) { | ||
66 | response.end('Invalid APIKEY'); | ||
67 | return; | ||
68 | } | ||
69 | |||
70 | config.globals.max_active_requests_count = 0; | ||
71 | |||
72 | response.writeHead(307, { | ||
73 | 'Location': '/info' | ||
74 | }); | ||
75 | |||
76 | response.end(); | ||
77 | }); | ||
78 | |||
79 | httpServer = http.createServer(router).listen(listenPort); | ||
80 | console.log('HTTP server listens on port ' + listenPort); | ||
81 | |||
82 | return httpServer; | ||
83 | } | ||
84 | |||
85 | function setConfig(_config) { | ||
86 | config = _config; | ||
87 | } | ||
88 | |||
89 | exports.start = start; | ||
90 | exports.setConfig = setConfig; | ||
91 | 1 | var http = require('http'); |