Commit 0a68c7befaa124be40b276a5b42da5c9ded98d6f

Authored by Adhidarma Hadiwinoto
1 parent 6aecd3f487
Exists in master and in 1 other branch webadmin

TRANSPORT sending to modem use prefix rules.

Can be bypass by config.ignore_prefix

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

1 const axios = require('axios'); 1 const axios = require('axios');
2 const moment = require('moment'); 2 const moment = require('moment');
3 const uniqid = require('uniqid'); 3 const uniqid = require('uniqid');
4 4
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('komodo-sdk/logger'); 6 const logger = require('komodo-sdk/logger');
7 const messagingClient = require('komodo-center-messaging-client-lib'); 7 const messagingClient = require('komodo-center-messaging-client-lib');
8 8
9 const modems = require('./modems'); 9 const modems = require('./modems');
10 const messageSplitter = require('./message-splitter'); 10 const messageSplitter = require('./message-splitter');
11 const modemLocks = require('./modem-locks'); 11 const modemLocks = require('./modem-locks');
12 12
13 async function sleep(ms) { 13 async function sleep(ms) {
14 return new Promise((resolve) => { 14 return new Promise((resolve) => {
15 setTimeout(() => { 15 setTimeout(() => {
16 resolve(); 16 resolve();
17 }, ms); 17 }, ms);
18 }); 18 });
19 } 19 }
20 20
21 async function sendToModem(partner, msg, modem, parentXid, part) { 21 async function sendToModem(partner, msg, modem, parentXid, part) {
22 const xid = parentXid || uniqid(); 22 const xid = parentXid || uniqid();
23 23
24 const [msgHead, msgTail] = messageSplitter(msg.trim(), Number(config.max_length) || 140); 24 const [msgHead, msgTail] = messageSplitter(msg.trim(), Number(config.max_length) || 140);
25 if (!msgHead) { 25 if (!msgHead) {
26 return; 26 return;
27 } 27 }
28 28
29 logger.info('TRANSPORT: Sending message to EVO-CP', { 29 logger.info('TRANSPORT: Sending message to EVO-CP', {
30 xid, 30 xid,
31 partner, 31 partner,
32 msg: msgHead, 32 msg: msgHead,
33 msgLength: msgHead.length, 33 msgLength: msgHead.length,
34 tailLength: msgTail.length, 34 tailLength: msgTail.length,
35 part, 35 part,
36 modem: modem.name, 36 modem: modem.name,
37 }); 37 });
38 38
39 await modemLocks.lock(modem.name); 39 await modemLocks.lock(modem.name);
40 40
41 try { 41 try {
42 await axios.get(modem.url || config.sender.url, { 42 await axios.get(modem.url || config.sender.url, {
43 params: { 43 params: {
44 to: partner, 44 to: partner,
45 password: modem.password || config.sender.password, 45 password: modem.password || config.sender.password,
46 ts: moment().format('YYYY-MM-DD HH:mm:ss'), 46 ts: moment().format('YYYY-MM-DD HH:mm:ss'),
47 text: msgHead, 47 text: msgHead,
48 modem: modem.name, 48 modem: modem.name,
49 username: modem.username || config.sender.username, 49 username: modem.username || config.sender.username,
50 }, 50 },
51 }); 51 });
52 } catch (e) { 52 } catch (e) {
53 logger.warn('TRANSPORT: Exception on sending message to EVO-CP', { 53 logger.warn('TRANSPORT: Exception on sending message to EVO-CP', {
54 xid, 54 xid,
55 partner, 55 partner,
56 msgHead, 56 msgHead,
57 modem: modem.name, 57 modem: modem.name,
58 e: e.message, 58 e: e.message,
59 }); 59 });
60 } 60 }
61 61
62 messagingClient.onIncomingMessage({ 62 messagingClient.onIncomingMessage({
63 me: modem.imsi || modem.name, 63 me: modem.imsi || modem.name,
64 partner, 64 partner,
65 partner_raw: partner, 65 partner_raw: partner,
66 msg: msgHead, 66 msg: msgHead,
67 origin_label: modem.imsi || modem.name, 67 origin_label: modem.imsi || modem.name,
68 origin_transport: 'SMS', 68 origin_transport: 'SMS',
69 origin_partner: partner, 69 origin_partner: partner,
70 do_not_forward_to_core: true, 70 do_not_forward_to_core: true,
71 is_outgoing: true, 71 is_outgoing: true,
72 }); 72 });
73 73
74 await sleep(1200); 74 await sleep(1200);
75 modemLocks.unlock(modem.name); 75 modemLocks.unlock(modem.name);
76 76
77 if (msgTail) { 77 if (msgTail) {
78 await sendToModem(partner, msgTail, modem, part + 1); 78 await sendToModem(partner, msgTail, modem, part + 1);
79 } 79 }
80 } 80 }
81 81
82 exports.send = async (partner, msg) => { 82 exports.send = async (partner, msg) => {
83 if (typeof partner !== 'string' || !partner.trim()) return; 83 if (typeof partner !== 'string' || !partner.trim()) return;
84 if (typeof msg !== 'string' || !msg.trim()) return; 84 if (typeof msg !== 'string' || !msg.trim()) return;
85 85
86 if (msg.trim().search(/PROSES$/) >= 0) return; 86 if (msg.trim().search(/PROSES$/) >= 0) return;
87 87
88 const xid = uniqid(); 88 const xid = uniqid();
89 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', { 89 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', {
90 xid, 90 xid,
91 partner, 91 partner,
92 msg, 92 msg,
93 }); 93 });
94 94
95 const modem = modems.randomModem(); 95 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner);
96 if (!modem) { 96 if (!modem) {
97 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { 97 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', {
98 xid, 98 xid,
99 partner, 99 partner,
100 msg, 100 msg,
101 }); 101 });
102 return; 102 return;
103 } 103 }
104 104
105 await sendToModem(partner, msg.trim(), modem, xid, 1); 105 await sendToModem(partner, msg.trim(), modem, xid, 1);
106 }; 106 };
107 107