Commit fec24f5b5378af52170d3fbb4fed0b27d2989e6e

Authored by Adhidarma Hadiwinoto
1 parent 368c795522
Exists in master

Tdk perlu update data modem saat terima sms

Showing 1 changed file with 3 additions and 1 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 routerModems = require('./router-modems'); 21 const routerModems = require('./router-modems');
22 22
23 const app = express(); 23 const app = express();
24 messagingService.setTransport(transport); 24 messagingService.setTransport(transport);
25 25
26 function apikeyChecker(req, res, next) { 26 function apikeyChecker(req, res, next) {
27 res.locals.has_valid_apikey = req.params.apikey === config.handler_callback_server.apikey; 27 res.locals.has_valid_apikey = req.params.apikey === config.handler_callback_server.apikey;
28 if (res.locals.has_valid_apikey) { 28 if (res.locals.has_valid_apikey) {
29 next(); 29 next();
30 } 30 }
31 else { 31 else {
32 res.end('APISERVER: Invalid apikey'); 32 res.end('APISERVER: Invalid apikey');
33 } 33 }
34 } 34 }
35 35
36 function onIncomingSms(req, res) { 36 function onIncomingSms(req, res) {
37 res.end('OK'); 37 res.end('OK');
38 38
39 if (!req.query.number) return; 39 if (!req.query.number) return;
40 if (req.query.number.indexOf('+') !== 0) return; 40 if (req.query.number.indexOf('+') !== 0) return;
41 41
42 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || ''); 42 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || '');
43 43
44 partnerLastSeen.set(req.query.number, req.query.modem_imsi); 44 partnerLastSeen.set(req.query.number, req.query.modem_imsi);
45 45
46 history.push({ 46 history.push({
47 ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'), 47 ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'),
48 modem: { 48 modem: {
49 name: req.query.modem, 49 name: req.query.modem,
50 imsi: req.query.modem_imsi, 50 imsi: req.query.modem_imsi,
51 msisdn: req.query.modem_msisdn, 51 msisdn: req.query.modem_msisdn,
52 }, 52 },
53 direction: 'INCOMING', 53 direction: 'INCOMING',
54 partner: req.query.number, 54 partner: req.query.number,
55 message: req.query.msg, 55 message: req.query.msg,
56 }); 56 });
57 57
58 /*
58 modems.set({ 59 modems.set({
59 name: req.query.modem, 60 name: req.query.modem,
60 device: req.query.modem_device, 61 device: req.query.modem_device,
61 imsi: req.query.modem_imsi, 62 imsi: req.query.modem_imsi,
62 msisdn: req.query.modem_msisdn, 63 msisdn: req.query.modem_msisdn,
63 networkId: req.query.modem.network_id, 64 networkId: req.query.modem.network_id,
64 networkName: req.query.modem_network_name, 65 networkName: req.query.modem_network_name,
65 signalStrength: req.query.modem_signal_strength, 66 signalStrength: req.query.modem_signal_strength,
66 uptime: req.query.uptime, 67 uptime: req.query.uptime,
67 reportIp: req.query.report_ip || req.ip, 68 reportIp: req.query.report_ip || req.ip,
68 reportPort: req.query.report_port, 69 reportPort: req.query.report_port,
69 reportApikey: req.query.report_apikey, 70 reportApikey: req.query.report_apikey,
70 reportPathSms: req.query.report_path_sms || '/sms', 71 reportPathSms: req.query.report_path_sms || '/sms',
71 }); 72 });
73 */
72 74
73 logger.info('APISERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg }); 75 logger.info('APISERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg });
74 messagingService.onIncomingMessage({ 76 messagingService.onIncomingMessage({
75 me: req.query.modem, 77 me: req.query.modem,
76 partner: numberWithSuffix, 78 partner: numberWithSuffix,
77 msg: req.query.msg 79 msg: req.query.msg
78 }) 80 })
79 } 81 }
80 82
81 async function pageHistory(req, res) { 83 async function pageHistory(req, res) {
82 res.json(await history.dump()); 84 res.json(await history.dump());
83 } 85 }
84 86
85 app.use(function(req, res, next) { 87 app.use(function(req, res, next) {
86 logger.verbose('APISERVER: Incoming http request', { ip: req.ip, url: req.url }); 88 logger.verbose('APISERVER: Incoming http request', { ip: req.ip, url: req.url });
87 next(); 89 next();
88 }) 90 })
89 91
90 app.use('/apikey/:apikey', apikeyChecker); 92 app.use('/apikey/:apikey', apikeyChecker);
91 app.get('/apikey/:apikey/on-sms', onIncomingSms); 93 app.get('/apikey/:apikey/on-sms', onIncomingSms);
92 app.get('/apikey/:apikey/inbox', onIncomingSms); 94 app.get('/apikey/:apikey/inbox', onIncomingSms);
93 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms); 95 app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms);
94 app.get('/apikey/:apikey/history', pageHistory); 96 app.get('/apikey/:apikey/history', pageHistory);
95 app.use('/apikey/:apikey/modems', routerModems); 97 app.use('/apikey/:apikey/modems', routerModems);
96 98
97 const listenPort = config && config.handler_callback_server ? config.handler_callback_server.listen_port : null; 99 const listenPort = config && config.handler_callback_server ? config.handler_callback_server.listen_port : null;
98 listenPort && app.listen(listenPort, () => { 100 listenPort && app.listen(listenPort, () => {
99 logger.info('HTTP Handler Callback server listening on port ' + listenPort); 101 logger.info('HTTP Handler Callback server listening on port ' + listenPort);
100 }) 102 })