Commit 01fede444e9815ea58db42238e9a5ae9bdb4acd4

Authored by Adhidarma Hadiwinoto
1 parent 69ab255e8e
Exists in master

Skip invalid sender and message

Showing 1 changed file with 21 additions and 0 deletions Inline Diff

lib/apiserver/handler/on-received.js
1 const DEFAULT_MAX_MESSAGE_AGE_IN_SECS = 300; 1 const DEFAULT_MAX_MESSAGE_AGE_IN_SECS = 300;
2 2
3 const moment = require('moment'); 3 const moment = require('moment');
4 const config = require('komodo-sdk/config'); 4 const config = require('komodo-sdk/config');
5 const logger = require('komodo-sdk/logger'); 5 const logger = require('komodo-sdk/logger');
6 6
7 const messagingCenter = require('komodo-center-messaging-client-lib'); 7 const messagingCenter = require('komodo-center-messaging-client-lib');
8 const modems = require('../../modems'); 8 const modems = require('../../modems');
9 9
10 module.exports = (req, res) => { 10 module.exports = (req, res) => {
11 res.end('OK'); 11 res.end('OK');
12 12
13 const { 13 const {
14 msg, msisdn, smsc, ts, 14 msg, msisdn, smsc, ts,
15 } = req.query; 15 } = req.query;
16 16
17 if ((msisdn || '').indexOf(62) !== 0) {
18 logger.verbose('ON-RECEIVED: Skip invalid MSISDN', {
19 qs: req.query,
20 });
21
22 return;
23 }
24
25 const msgUpperCased = (msg || '').toUpperCase();
26 if (
27 (msgUpperCased.indexOf('TERIMA KASIH') >= 0)
28 || (msgUpperCased.indexOf('KAMU DAPAT BONUS') >= 0)
29 ) {
30 logger.verbose('ON-RECEIVED: Skip invalid message', {
31 msg,
32 qs: req.query,
33 });
34
35 return;
36 }
37
17 const sentTime = moment(ts, 'YYYY-MM-DD HH:mm:ss'); 38 const sentTime = moment(ts, 'YYYY-MM-DD HH:mm:ss');
18 const messageAgeInSeconds = Math.round(Number(new Date() - sentTime) / 1000); 39 const messageAgeInSeconds = Math.round(Number(new Date() - sentTime) / 1000);
19 40
20 const maxMessageAgeInSeconds = config.max_message_age_in_secs 41 const maxMessageAgeInSeconds = config.max_message_age_in_secs
21 || DEFAULT_MAX_MESSAGE_AGE_IN_SECS; 42 || DEFAULT_MAX_MESSAGE_AGE_IN_SECS;
22 43
23 if (messageAgeInSeconds > maxMessageAgeInSeconds) { 44 if (messageAgeInSeconds > maxMessageAgeInSeconds) {
24 logger.warn('ON-RECEIVED: Got expired message from EVO-CP', { 45 logger.warn('ON-RECEIVED: Got expired message from EVO-CP', {
25 qs: req.query, 46 qs: req.query,
26 messageAgeInSeconds, 47 messageAgeInSeconds,
27 maxMessageAgeInSeconds, 48 maxMessageAgeInSeconds,
28 }); 49 });
29 50
30 return; 51 return;
31 } 52 }
32 53
33 logger.info('ON-RECEIVED: Got message from EVO-CP', { 54 logger.info('ON-RECEIVED: Got message from EVO-CP', {
34 qs: req.query, 55 qs: req.query,
35 }); 56 });
36 57
37 const modem = modems.modemsDictionary[smsc] || {}; 58 const modem = modems.modemsDictionary[smsc] || {};
38 59
39 const doNotForwardToCore = (msisdn.search(/(\+)*62/) !== 0) || (msisdn.length <= 8); 60 const doNotForwardToCore = (msisdn.search(/(\+)*62/) !== 0) || (msisdn.length <= 8);
40 61
41 messagingCenter.onIncomingMessage({ 62 messagingCenter.onIncomingMessage({
42 me: modem.imsi || smsc, 63 me: modem.imsi || smsc,
43 partner: `${msisdn}${config.number_suffix || ''}`, 64 partner: `${msisdn}${config.number_suffix || ''}`,
44 partner_raw: msisdn, 65 partner_raw: msisdn,
45 msg, 66 msg,
46 origin_label: modem.imsi || smsc, 67 origin_label: modem.imsi || smsc,
47 origin_transport: 'SMS', 68 origin_transport: 'SMS',
48 origin_partner: msisdn, 69 origin_partner: msisdn,
49 do_not_forward_to_core: doNotForwardToCore, 70 do_not_forward_to_core: doNotForwardToCore,
50 }); 71 });
51 }; 72 };
52 73