Commit e4139cb42183bfaa941fc9ecf29d54e1901c376b

Authored by Adhidarma Hadiwinoto
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 })