Commit e4139cb42183bfaa941fc9ecf29d54e1901c376b
1 parent
bd71803854
Exists in
master
Tidak lapor ke messaging service jika pengirim tidak diawali +
Showing 1 changed file with 5 additions and 0 deletions Inline Diff
lib/handler-callback-server.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 | 9 | ||
10 | const messagingService = require('komodo-center-messaging-client-lib'); | 10 | const messagingService = require('komodo-center-messaging-client-lib'); |
11 | 11 | ||
12 | const config = require('komodo-sdk/config'); | 12 | const config = require('komodo-sdk/config'); |
13 | const logger = require('komodo-sdk/logger'); | 13 | const logger = require('komodo-sdk/logger'); |
14 | 14 | ||
15 | const transport = require('./transport'); | 15 | const transport = require('./transport'); |
16 | const partnerLastSeen = require('./partner-last-seen'); | 16 | const partnerLastSeen = require('./partner-last-seen'); |
17 | 17 | ||
18 | const app = express(); | 18 | const app = express(); |
19 | messagingService.setTransport(transport); | 19 | messagingService.setTransport(transport); |
20 | 20 | ||
21 | function apikeyChecker(req, res, next) { | 21 | function apikeyChecker(req, res, next) { |
22 | res.locals.has_valid_apikey = req.params.apikey === config.handler_callback_server.apikey; | 22 | res.locals.has_valid_apikey = req.params.apikey === config.handler_callback_server.apikey; |
23 | if (res.locals.has_valid_apikey) { | 23 | if (res.locals.has_valid_apikey) { |
24 | next(); | 24 | next(); |
25 | } | 25 | } |
26 | else { | 26 | else { |
27 | res.end('HANDLER-CALLBACK-SERVER: Invalid apikey'); | 27 | res.end('HANDLER-CALLBACK-SERVER: Invalid apikey'); |
28 | } | 28 | } |
29 | } | 29 | } |
30 | 30 | ||
31 | function onIncomingSms(req, res) { | 31 | function onIncomingSms(req, res) { |
32 | res.end('OK'); | 32 | res.end('OK'); |
33 | |||
34 | if (!req.query.number) return; | ||
35 | if (req.query.number.indexOf('+') !== 0) return; | ||
36 | |||
33 | const numberWithSuffix = req.query.number + (config.number_suffix || ''); | 37 | const numberWithSuffix = req.query.number + (config.number_suffix || ''); |
34 | 38 | ||
35 | partnerLastSeen.set(req.query.number, req.query.modem); | 39 | partnerLastSeen.set(req.query.number, req.query.modem); |
36 | 40 | ||
37 | logger.info('HANDLER-CALLBACK-SERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg }); | 41 | logger.info('HANDLER-CALLBACK-SERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg }); |
38 | messagingService.onIncomingMessage({ | 42 | messagingService.onIncomingMessage({ |
39 | me: req.query.modem, | 43 | me: req.query.modem, |
40 | partner: numberWithSuffix, | 44 | partner: numberWithSuffix, |
41 | msg: req.query.msg | 45 | msg: req.query.msg |
42 | }) | 46 | }) |
43 | } | 47 | } |
44 | 48 | ||
45 | app.use(function(req, res, next) { | 49 | app.use(function(req, res, next) { |
46 | logger.verbose('HANDLER-CALLBACK-SERVER: Incoming http request', { ip: req.ip, url: req.url }); | 50 | logger.verbose('HANDLER-CALLBACK-SERVER: Incoming http request', { ip: req.ip, url: req.url }); |
47 | next(); | 51 | next(); |
48 | }) | 52 | }) |
53 | |||
49 | app.use('/apikey/:apikey', apikeyChecker); | 54 | app.use('/apikey/:apikey', apikeyChecker); |
50 | app.get('/apikey/:apikey/on-sms', onIncomingSms); | 55 | app.get('/apikey/:apikey/on-sms', onIncomingSms); |
51 | app.get('/apikey/:apikey/inbox', onIncomingSms); | 56 | app.get('/apikey/:apikey/inbox', onIncomingSms); |
52 | app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms); | 57 | app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms); |
53 | 58 | ||
54 | const listenPort = config && config.handler_callback_server ? config.handler_callback_server.listen_port : null; | 59 | const listenPort = config && config.handler_callback_server ? config.handler_callback_server.listen_port : null; |
55 | listenPort && app.listen(listenPort, () => { | 60 | listenPort && app.listen(listenPort, () => { |
56 | logger.info('HTTP Handler Callback server listening on port ' + listenPort); | 61 | logger.info('HTTP Handler Callback server listening on port ' + listenPort); |
57 | }) | 62 | }) |