Commit 27022872e33875fb6590cbfc3eb9153738fef232

Authored by Adhidarma Hadiwinoto
1 parent eee002b571
Exists in master

Add log isVerbosity on custom-ping

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