Commit 3c77a8f68607ad8171d6675fafbee53e9491352b

Authored by Adhidarma Hadiwinoto
1 parent ab91c1ebba
Exists in master

config senders apiserver

Showing 2 changed files with 17 additions and 0 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 routerModems = require('./router-modems'); 22 const routerModems = require('./router-modems');
22 23
23 if (config.handler_callback_server) { 24 if (config.handler_callback_server) {
24 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!');
25 } 26 }
26 27
27 const app = express(); 28 const app = express();
28 messagingService.setTransport(transport); 29 messagingService.setTransport(transport);
29 30
30 function apikeyChecker(req, res, next) { 31 function apikeyChecker(req, res, next) {
31 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);
32 if (res.locals.has_valid_apikey) { 33 if (res.locals.has_valid_apikey) {
33 next(); 34 next();
34 } 35 }
35 else { 36 else {
36 logger.warn('Invalid apikey', { ip: req.ip }); 37 logger.warn('Invalid apikey', { ip: req.ip });
37 res.end('APISERVER: Invalid apikey'); 38 res.end('APISERVER: Invalid apikey');
38 } 39 }
39 } 40 }
40 41
41 function onIncomingSms(req, res) { 42 function onIncomingSms(req, res) {
42 res.end('OK'); 43 res.end('OK');
43 44
44 if (!req.query.number) return; 45 if (!req.query.number) return;
45 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || ''); 46 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || '');
46 47
47 partnerLastSeen.set(req.query.number, req.query.modem_imsi); 48 partnerLastSeen.set(req.query.number, req.query.modem_imsi);
48 49
49 history.push({ 50 history.push({
50 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'),
51 modem: { 52 modem: {
52 name: req.query.modem, 53 name: req.query.modem,
53 imsi: req.query.modem_imsi, 54 imsi: req.query.modem_imsi,
54 msisdn: req.query.modem_msisdn, 55 msisdn: req.query.modem_msisdn,
55 }, 56 },
56 direction: 'INCOMING', 57 direction: 'INCOMING',
57 partner: req.query.number, 58 partner: req.query.number,
58 message: req.query.msg, 59 message: req.query.msg,
59 }); 60 });
60 61
61 /* 62 /*
62 modems.set({ 63 modems.set({
63 name: req.query.modem, 64 name: req.query.modem,
64 device: req.query.modem_device, 65 device: req.query.modem_device,
65 imsi: req.query.modem_imsi, 66 imsi: req.query.modem_imsi,
66 msisdn: req.query.modem_msisdn, 67 msisdn: req.query.modem_msisdn,
67 networkId: req.query.modem.network_id, 68 networkId: req.query.modem.network_id,
68 networkName: req.query.modem_network_name, 69 networkName: req.query.modem_network_name,
69 signalStrength: req.query.modem_signal_strength, 70 signalStrength: req.query.modem_signal_strength,
70 uptime: req.query.uptime, 71 uptime: req.query.uptime,
71 reportIp: req.query.report_ip || req.ip, 72 reportIp: req.query.report_ip || req.ip,
72 reportPort: req.query.report_port, 73 reportPort: req.query.report_port,
73 reportApikey: req.query.report_apikey, 74 reportApikey: req.query.report_apikey,
74 reportPathSms: req.query.report_path_sms || '/sms', 75 reportPathSms: req.query.report_path_sms || '/sms',
75 }); 76 });
76 */ 77 */
77 78
78 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 });
79 messagingService.onIncomingMessage({ 80 messagingService.onIncomingMessage({
80 me: req.query.modem, 81 me: req.query.modem,
81 partner: numberWithSuffix, 82 partner: numberWithSuffix,
82 partner_raw: req.query.number, 83 partner_raw: req.query.number,
83 msg: req.query.msg, 84 msg: req.query.msg,
84 origin_label: `IMSI_${req.query.modem_imsi || 'UNKNOWN'}`, 85 origin_label: `IMSI_${req.query.modem_imsi || 'UNKNOWN'}`,
85 origin_transport: 'SMS', 86 origin_transport: 'SMS',
86 origin_partner: req.query.number, 87 origin_partner: req.query.number,
87 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),
88 }); 89 });
89 } 90 }
90 91
91 async function pageHistory(req, res) { 92 async function pageHistory(req, res) {
92 res.json(await history.dump()); 93 res.json(await history.dump());
93 } 94 }
94 95
95 app.use(function(req, res, next) { 96 app.use(function(req, res, next) {
96 if ( 97 if (
97 req && req.path && typeof req.path === 'string' 98 req && req.path && typeof req.path === 'string'
98 && ( 99 && (
99 req.path.search(/\/modems$/) >= 0 100 req.path.search(/\/modems$/) >= 0
100 || req.path.search(/\/modems\/set$/) >= 0 101 || req.path.search(/\/modems\/set$/) >= 0
101 ) 102 )
102 ) { 103 ) {
103 next(); 104 next();
104 return; 105 return;
105 } 106 }
106 107
107 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 });
108 next(); 109 next();
109 }) 110 })
110 111
111 app.use('/apikey/:apikey', apikeyChecker); 112 app.use('/apikey/:apikey', apikeyChecker);
112 app.get('/apikey/:apikey/on-sms', onIncomingSms); 113 app.get('/apikey/:apikey/on-sms', onIncomingSms);
113 app.get('/apikey/:apikey/inbox', onIncomingSms); 114 app.get('/apikey/:apikey/inbox', onIncomingSms);
114 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms); 115 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms);
115 app.get('/apikey/:apikey/history', pageHistory); 116 app.get('/apikey/:apikey/history', pageHistory);
116 app.use('/apikey/:apikey/modems', routerModems); 117 app.use('/apikey/:apikey/modems', routerModems);
118 app.use('/apikey/:apikey/config/senders', rotuerConfigSenders);
117 119
118 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)
119 || (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);
120 122
121 if (listenPort) { 123 if (listenPort) {
122 app.listen(listenPort, () => { 124 app.listen(listenPort, () => {
123 logger.info('HTTP Handler Callback server listening on port ' + listenPort); 125 logger.info('HTTP Handler Callback server listening on port ' + listenPort);
124 }); 126 });
125 } else { 127 } else {
126 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.');
127 } 129 }
128 130
lib/apiserver/router-config-senders.js
File was created 1 'use strict';
2
3
4 const express = require('express');
5
6 const config = require('komodo-sdk/config');
7
8 const router = express.Router();
9 module.exports = router;
10
11 function pageIndex(req, res) {
12 res.json(config.senders_imsi);
13 }
14
15 router.get('/', pageIndex);