Commit 3efc03c61f58889cad74033277948a34547e425f

Authored by Adhidarma Hadiwinoto
1 parent ad677761b0
Exists in master

Add silent parameter on sender.send

Showing 2 changed files with 11 additions and 9 deletions Inline Diff

1 const MODULE_NAME = 'CUSTOM-PING'; 1 const MODULE_NAME = 'CUSTOM-PING';
2 2
3 const uniqid = require('uniqid'); 3 const uniqid = require('uniqid');
4 const config = require('komodo-sdk/config'); 4 const config = require('komodo-sdk/config');
5 const logger = require('tektrans-logger'); 5 const logger = require('tektrans-logger');
6 6
7 const sender = require('./sender'); 7 const sender = require('./sender');
8 8
9 let bot; 9 let bot;
10 10
11 const allowedFromPartnerList = ( 11 const allowedFromPartnerList = (
12 (config.custom_ping && config.custom_ping.allowed_from_partners) || [] 12 (config.custom_ping && config.custom_ping.allowed_from_partners) || []
13 ) 13 )
14 .filter((item) => typeof item === 'string') 14 .filter((item) => typeof item === 'string')
15 .map((item) => (item || '').trim().toUpperCase()) 15 .map((item) => (item || '').trim().toUpperCase())
16 .filter((item) => item); 16 .filter((item) => item);
17 17
18 const isPingMessage = (msg) => { 18 const isPingMessage = (msg) => {
19 if (!msg) return false; 19 if (!msg) return false;
20 if (typeof msg !== 'string') return false; 20 if (typeof msg !== 'string') return false;
21 21
22 return ((msg || '').trim().toUpperCase().search(/^PING($| )/) === 0); 22 return ((msg || '').trim().toUpperCase().search(/^PING($| )/) === 0);
23 }; 23 };
24 exports.isPingMessage = isPingMessage; 24 exports.isPingMessage = isPingMessage;
25 25
26 const isPongMessage = (msg) => { 26 const isPongMessage = (msg) => {
27 if (!msg) return false; 27 if (!msg) return false;
28 if (typeof msg !== 'string') return false; 28 if (typeof msg !== 'string') return false;
29 29
30 return ((msg || '').trim().toUpperCase().search(/^PONG($| )/) === 0); 30 return ((msg || '').trim().toUpperCase().search(/^PONG($| )/) === 0);
31 }; 31 };
32 exports.isPongMessage = isPongMessage; 32 exports.isPongMessage = isPongMessage;
33 33
34 const isAllowedPartner = (partner) => { 34 const isAllowedPartner = (partner) => {
35 if (!config.custom_ping) return false; 35 if (!config.custom_ping) return false;
36 if (config.custom_ping.disable_pong) return false; 36 if (config.custom_ping.disable_pong) return false;
37 37
38 if (config.custom_ping.allowed_from_all) return true; 38 if (config.custom_ping.allowed_from_all) return true;
39 return allowedFromPartnerList.indexOf((partner || '').trim().toUpperCase()) >= 0; 39 return allowedFromPartnerList.indexOf((partner || '').trim().toUpperCase()) >= 0;
40 }; 40 };
41 exports.isAllowedPartner = isAllowedPartner; 41 exports.isAllowedPartner = isAllowedPartner;
42 42
43 const sendPong = (xid, partner, pingMessage) => { 43 const sendPong = (xid, partner, pingMessage) => {
44 if (!bot) return; 44 if (!bot) return;
45 if (!partner || typeof partner !== 'string' || !partner.trim()) return; 45 if (!partner || typeof partner !== 'string' || !partner.trim()) return;
46 46
47 const tokens = pingMessage.trim().split(/ +/); 47 const tokens = pingMessage.trim().split(/ +/);
48 48
49 const pongMessage = [ 49 const pongMessage = [
50 'PONG', 50 'PONG',
51 (tokens && tokens[1]) || null, 51 (tokens && tokens[1]) || null,
52 ].filter((item) => item) 52 ].filter((item) => item)
53 .join(' '); 53 .join(' ');
54 54
55 if (config.custom_ping && config.custom_ping.verbose) { 55 if (config.custom_ping && config.custom_ping.verbose) {
56 logger.verbose(`${MODULE_NAME} F0D18EF4: Responding PING message`, { 56 logger.verbose(`${MODULE_NAME} F0D18EF4: Responding PING message`, {
57 xid, partner, pongMessage, 57 xid, partner, pongMessage,
58 }); 58 });
59 } 59 }
60 60
61 sender.send(partner.trim(), pongMessage); 61 sender.send(partner.trim(), pongMessage, null, true);
62 }; 62 };
63 exports.sendPong = sendPong; 63 exports.sendPong = sendPong;
64 64
65 const sleepMs = (ms) => new Promise((resolve) => { 65 const sleepMs = (ms) => new Promise((resolve) => {
66 setTimeout(() => { 66 setTimeout(() => {
67 resolve(true); 67 resolve(true);
68 }, ms); 68 }, ms);
69 }); 69 });
70 70
71 const pingSender = async () => { 71 const pingSender = async () => {
72 const xid = uniqid(); 72 const xid = uniqid();
73 73
74 if (bot) { 74 if (bot) {
75 const msg = `PING ${xid}`; 75 const msg = `PING ${xid}`;
76 76
77 sender.send(config.username, msg); 77 sender.send(config.username, msg, xid, true);
78 78
79 if ( 79 if (
80 config.custom_ping 80 config.custom_ping
81 && config.custom_ping.send_to 81 && config.custom_ping.send_to
82 && Array.isArray(config.custom_ping.send_to) 82 && Array.isArray(config.custom_ping.send_to)
83 ) { 83 ) {
84 const partnerCount = config.custom_ping.send_to.length; 84 const partnerCount = config.custom_ping.send_to.length;
85 for (let i = 0; i < partnerCount; i += 1) { 85 for (let i = 0; i < partnerCount; i += 1) {
86 const additionalDelay = Math.random() * 1000; 86 const additionalDelay = Math.random() * 1000;
87 87
88 // eslint-disable-next-line no-await-in-loop 88 // eslint-disable-next-line no-await-in-loop
89 await sleepMs(1000 + additionalDelay); 89 await sleepMs(1000 + additionalDelay);
90 90
91 const partner = config.custom_ping.send_to[i]; 91 const partner = config.custom_ping.send_to[i];
92 92
93 if (config.custom_ping.verbose) { 93 if (config.custom_ping.verbose) {
94 logger.verbose(`${MODULE_NAME} 21358F45: Sending custom ping`, { 94 logger.verbose(`${MODULE_NAME} 21358F45: Sending custom ping`, {
95 xid, 95 xid,
96 partner, 96 partner,
97 msg, 97 msg,
98 }); 98 });
99 } 99 }
100 100
101 sender.send(partner, msg, xid); 101 sender.send(partner, msg, xid, true);
102 } 102 }
103 } 103 }
104 } 104 }
105 105
106 await sleepMs(3 * 1000); 106 await sleepMs(3 * 1000);
107 pingSender(); 107 pingSender();
108 }; 108 };
109 109
110 const setBot = (botFromCaller) => { 110 const setBot = (botFromCaller) => {
111 logger.verbose(`${MODULE_NAME} A063F39F: Bot registered for custom ping`); 111 logger.verbose(`${MODULE_NAME} A063F39F: Bot registered for custom ping`);
112 bot = botFromCaller; 112 bot = botFromCaller;
113 pingSender(); 113 pingSender();
114 }; 114 };
115 exports.setBot = setBot; 115 exports.setBot = setBot;
116 116
1 const MODULE_NAME = 'SENDER'; 1 const MODULE_NAME = 'SENDER';
2 2
3 const logger = require('tektrans-logger'); 3 const logger = require('tektrans-logger');
4 4
5 let bot; 5 let bot;
6 6
7 const init = (botFromCaller) => { 7 const init = (botFromCaller) => {
8 logger.verbose(`${MODULE_NAME} D74B30FF: Sender initialized`); 8 logger.verbose(`${MODULE_NAME} D74B30FF: Sender initialized`);
9 bot = botFromCaller; 9 bot = botFromCaller;
10 }; 10 };
11 exports.init = init; 11 exports.init = init;
12 12
13 const send = (partner, msg, xid) => { 13 const send = (partner, msg, xid, silent) => {
14 if (!bot) { 14 if (!bot) {
15 logger.verbose(`${MODULE_NAME} 78B04B3B: Not sending message because bot has not been initialized`, { 15 logger.verbose(`${MODULE_NAME} 78B04B3B: Not sending message because bot has not been initialized`, {
16 xid, 16 xid,
17 partner, 17 partner,
18 msg, 18 msg,
19 }); 19 });
20 20
21 return; 21 return;
22 } 22 }
23 23
24 logger.verbose(`${MODULE_NAME} 648A5F17: Sending message`, { 24 if (!silent) {
25 xid, 25 logger.verbose(`${MODULE_NAME} 648A5F17: Sending message`, {
26 partner, 26 xid,
27 msg, 27 partner,
28 }); 28 msg,
29 });
30 }
29 31
30 try { 32 try {
31 bot.send(partner, msg); 33 bot.send(partner, msg);
32 } catch (e) { 34 } catch (e) {
33 logger.warn(`${MODULE_NAME} C50237D8: Exception on sending message`, { 35 logger.warn(`${MODULE_NAME} C50237D8: Exception on sending message`, {
34 xid, 36 xid,
35 eCode: e.code, 37 eCode: e.code,
36 eMessage: e.message || e, 38 eMessage: e.message || e,
37 }); 39 });
38 } 40 }
39 }; 41 };
40 exports.send = send; 42 exports.send = send;
41 43