Commit 40a07aa470963317c37282d61b24adf087b29717

Authored by Adhidarma Hadiwinoto
1 parent fc7e14994c
Exists in master

Use isVerbose on sender.send call from custom-ping

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