Commit 6277e2160c0c79ce5cc6050375f4839875a81b41

Authored by Adhidarma Hadiwinoto
1 parent 3c77a8f686
Exists in master

Typo

Showing 1 changed file with 2 additions and 2 deletions Inline Diff

lib/apiserver/index.js
1 "use strict"; 1 "use strict";
2 2
3 /** 3 /**
4 * Modul untuk menerima callback dari modem handler jika ada SMS masuk. 4 * Modul untuk menerima callback dari modem handler jika ada SMS masuk.
5 */ 5 */
6 6
7 7
8 const express = require('express'); 8 const express = require('express');
9 const moment = require('moment'); 9 const moment = require('moment');
10 10
11 const messagingService = require('komodo-center-messaging-client-lib'); 11 const messagingService = require('komodo-center-messaging-client-lib');
12 12
13 const config = require('komodo-sdk/config'); 13 const config = require('komodo-sdk/config');
14 const logger = require('komodo-sdk/logger'); 14 const logger = require('komodo-sdk/logger');
15 15
16 const transport = require('../transport'); 16 const transport = require('../transport');
17 const partnerLastSeen = require('../partner-last-seen'); 17 const partnerLastSeen = require('../partner-last-seen');
18 const history = require('../history'); 18 const history = require('../history');
19 // const modems = require('../modems2'); 19 // const modems = require('../modems2');
20 20
21 const rotuerConfigSenders = require('./router-config-senders'); 21 const routerConfigSenders = require('./router-config-senders');
22 const routerModems = require('./router-modems'); 22 const routerModems = require('./router-modems');
23 23
24 if (config.handler_callback_server) { 24 if (config.handler_callback_server) {
25 logger.warn('Deprecated config.handler_callback_server. Please migrate it to config.apiserver!'); 25 logger.warn('Deprecated config.handler_callback_server. Please migrate it to config.apiserver!');
26 } 26 }
27 27
28 const app = express(); 28 const app = express();
29 messagingService.setTransport(transport); 29 messagingService.setTransport(transport);
30 30
31 function apikeyChecker(req, res, next) { 31 function apikeyChecker(req, res, next) {
32 res.locals.has_valid_apikey = req.params.apikey === ((config.apiserver && config.apiserver.apikey ? config.apiserver.apikey : null) || config.handler_callback_server.apikey); 32 res.locals.has_valid_apikey = req.params.apikey === ((config.apiserver && config.apiserver.apikey ? config.apiserver.apikey : null) || config.handler_callback_server.apikey);
33 if (res.locals.has_valid_apikey) { 33 if (res.locals.has_valid_apikey) {
34 next(); 34 next();
35 } 35 }
36 else { 36 else {
37 logger.warn('Invalid apikey', { ip: req.ip }); 37 logger.warn('Invalid apikey', { ip: req.ip });
38 res.end('APISERVER: Invalid apikey'); 38 res.end('APISERVER: Invalid apikey');
39 } 39 }
40 } 40 }
41 41
42 function onIncomingSms(req, res) { 42 function onIncomingSms(req, res) {
43 res.end('OK'); 43 res.end('OK');
44 44
45 if (!req.query.number) return; 45 if (!req.query.number) return;
46 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || ''); 46 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || '');
47 47
48 partnerLastSeen.set(req.query.number, req.query.modem_imsi); 48 partnerLastSeen.set(req.query.number, req.query.modem_imsi);
49 49
50 history.push({ 50 history.push({
51 ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'), 51 ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'),
52 modem: { 52 modem: {
53 name: req.query.modem, 53 name: req.query.modem,
54 imsi: req.query.modem_imsi, 54 imsi: req.query.modem_imsi,
55 msisdn: req.query.modem_msisdn, 55 msisdn: req.query.modem_msisdn,
56 }, 56 },
57 direction: 'INCOMING', 57 direction: 'INCOMING',
58 partner: req.query.number, 58 partner: req.query.number,
59 message: req.query.msg, 59 message: req.query.msg,
60 }); 60 });
61 61
62 /* 62 /*
63 modems.set({ 63 modems.set({
64 name: req.query.modem, 64 name: req.query.modem,
65 device: req.query.modem_device, 65 device: req.query.modem_device,
66 imsi: req.query.modem_imsi, 66 imsi: req.query.modem_imsi,
67 msisdn: req.query.modem_msisdn, 67 msisdn: req.query.modem_msisdn,
68 networkId: req.query.modem.network_id, 68 networkId: req.query.modem.network_id,
69 networkName: req.query.modem_network_name, 69 networkName: req.query.modem_network_name,
70 signalStrength: req.query.modem_signal_strength, 70 signalStrength: req.query.modem_signal_strength,
71 uptime: req.query.uptime, 71 uptime: req.query.uptime,
72 reportIp: req.query.report_ip || req.ip, 72 reportIp: req.query.report_ip || req.ip,
73 reportPort: req.query.report_port, 73 reportPort: req.query.report_port,
74 reportApikey: req.query.report_apikey, 74 reportApikey: req.query.report_apikey,
75 reportPathSms: req.query.report_path_sms || '/sms', 75 reportPathSms: req.query.report_path_sms || '/sms',
76 }); 76 });
77 */ 77 */
78 78
79 logger.info('APISERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg }); 79 logger.info('APISERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg });
80 messagingService.onIncomingMessage({ 80 messagingService.onIncomingMessage({
81 me: req.query.modem, 81 me: req.query.modem,
82 partner: numberWithSuffix, 82 partner: numberWithSuffix,
83 partner_raw: req.query.number, 83 partner_raw: req.query.number,
84 msg: req.query.msg, 84 msg: req.query.msg,
85 origin_label: `IMSI_${req.query.modem_imsi || 'UNKNOWN'}`, 85 origin_label: `IMSI_${req.query.modem_imsi || 'UNKNOWN'}`,
86 origin_transport: 'SMS', 86 origin_transport: 'SMS',
87 origin_partner: req.query.number, 87 origin_partner: req.query.number,
88 do_not_forward_to_core: (req.query.number.indexOf('+62') !== 0) || (req.query.number.length <= 8), 88 do_not_forward_to_core: (req.query.number.indexOf('+62') !== 0) || (req.query.number.length <= 8),
89 }); 89 });
90 } 90 }
91 91
92 async function pageHistory(req, res) { 92 async function pageHistory(req, res) {
93 res.json(await history.dump()); 93 res.json(await history.dump());
94 } 94 }
95 95
96 app.use(function(req, res, next) { 96 app.use(function(req, res, next) {
97 if ( 97 if (
98 req && req.path && typeof req.path === 'string' 98 req && req.path && typeof req.path === 'string'
99 && ( 99 && (
100 req.path.search(/\/modems$/) >= 0 100 req.path.search(/\/modems$/) >= 0
101 || req.path.search(/\/modems\/set$/) >= 0 101 || req.path.search(/\/modems\/set$/) >= 0
102 ) 102 )
103 ) { 103 ) {
104 next(); 104 next();
105 return; 105 return;
106 } 106 }
107 107
108 logger.verbose('APISERVER: Incoming http request', { ip: req.ip, path: req.path, url: req.url }); 108 logger.verbose('APISERVER: Incoming http request', { ip: req.ip, path: req.path, url: req.url });
109 next(); 109 next();
110 }) 110 })
111 111
112 app.use('/apikey/:apikey', apikeyChecker); 112 app.use('/apikey/:apikey', apikeyChecker);
113 app.get('/apikey/:apikey/on-sms', onIncomingSms); 113 app.get('/apikey/:apikey/on-sms', onIncomingSms);
114 app.get('/apikey/:apikey/inbox', onIncomingSms); 114 app.get('/apikey/:apikey/inbox', onIncomingSms);
115 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms); 115 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms);
116 app.get('/apikey/:apikey/history', pageHistory); 116 app.get('/apikey/:apikey/history', pageHistory);
117 app.use('/apikey/:apikey/modems', routerModems); 117 app.use('/apikey/:apikey/modems', routerModems);
118 app.use('/apikey/:apikey/config/senders', rotuerConfigSenders); 118 app.use('/apikey/:apikey/config/senders', routerConfigSenders);
119 119
120 const listenPort = (config && config.apiserver && config.apiserver.listen_port ? config.apiserver.listen_port : null) 120 const listenPort = (config && config.apiserver && config.apiserver.listen_port ? config.apiserver.listen_port : null)
121 || (config && config.handler_callback_server ? config.handler_callback_server.listen_port : null); 121 || (config && config.handler_callback_server ? config.handler_callback_server.listen_port : null);
122 122
123 if (listenPort) { 123 if (listenPort) {
124 app.listen(listenPort, () => { 124 app.listen(listenPort, () => {
125 logger.info('HTTP Handler Callback server listening on port ' + listenPort); 125 logger.info('HTTP Handler Callback server listening on port ' + listenPort);
126 }); 126 });
127 } else { 127 } else {
128 logger.warn('Undefined config.apiserver.listen_port for APISERVER. Not listening for command.'); 128 logger.warn('Undefined config.apiserver.listen_port for APISERVER. Not listening for command.');
129 } 129 }
130 130