Commit 01fede444e9815ea58db42238e9a5ae9bdb4acd4
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 |