Commit fec24f5b5378af52170d3fbb4fed0b27d2989e6e
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 | }) |