Commit 8a533f9cb7f24a9efd38c49813e21d2c00ee4c11

Authored by Adhidarma Hadiwinoto
1 parent 78354f6ebb
Exists in master

Fix isPingMessage tetap diabaikan walau pengirim tidak terdaftar

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

1 const MODULE_NAME = 'TRANSPORT'; 1 const MODULE_NAME = 'TRANSPORT';
2 const SLEEP_BEFORE_TERMINATE_ON_ERROR_MS = 5 * 1000; 2 const SLEEP_BEFORE_TERMINATE_ON_ERROR_MS = 5 * 1000;
3 3
4 const bot = require('simple-xmpp'); 4 const bot = require('simple-xmpp');
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('tektrans-logger'); 6 const logger = require('tektrans-logger');
7 const messagingService = require('komodo-center-messaging-client-lib'); 7 const messagingService = require('komodo-center-messaging-client-lib');
8 const uniqid = require('uniqid'); 8 const uniqid = require('uniqid');
9 9
10 const customPing = require('./custom-ping'); 10 const customPing = require('./custom-ping');
11 const killOnIdle = require('./kill-on-idle'); 11 const killOnIdle = require('./kill-on-idle');
12 12
13 let isReady; 13 let isReady;
14 14
15 bot.on('online', (data) => { 15 bot.on('online', (data) => {
16 logger.info(`XMPP transport connected, JID: ${data.jid.user}`); 16 logger.info(`XMPP transport connected, JID: ${data.jid.user}`);
17 17
18 if (config.custom_ping) { 18 if (config.custom_ping) {
19 customPing.setBot(bot); 19 customPing.setBot(bot);
20 } 20 }
21 21
22 if (!killOnIdle.getDisabled()) { 22 if (!killOnIdle.getDisabled()) {
23 killOnIdle.init(); 23 killOnIdle.init();
24 } 24 }
25 25
26 bot.getRoster(); 26 bot.getRoster();
27 27
28 setTimeout( 28 setTimeout(
29 () => { 29 () => {
30 isReady = true; 30 isReady = true;
31 31
32 logger.verbose('Transport is ready'); 32 logger.verbose('Transport is ready');
33 33
34 if (messagingService.onOnline) { 34 if (messagingService.onOnline) {
35 messagingService.onOnline({ 35 messagingService.onOnline({
36 me: config.username, 36 me: config.username,
37 }); 37 });
38 } 38 }
39 }, 39 },
40 40
41 config.warming_up_ms || (30 * 1000), 41 config.warming_up_ms || (30 * 1000),
42 ); 42 );
43 }); 43 });
44 44
45 bot.on('chat', (partner, msg) => { 45 bot.on('chat', (partner, msg) => {
46 if (!msg || !msg.trim()) { 46 if (!msg || !msg.trim()) {
47 return; 47 return;
48 } 48 }
49 49
50 if (partner === config.username.replace(/\/.*$/, '')) { 50 if (partner === config.username.replace(/\/.*$/, '')) {
51 return; 51 return;
52 } 52 }
53 53
54 killOnIdle.touch(); 54 killOnIdle.touch();
55 55
56 const xid = uniqid(); 56 const xid = uniqid();
57 57
58 if (!isReady) { 58 if (!isReady) {
59 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) { 59 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) {
60 logger.warn('Warming up is not finished yet, ignoring message', { 60 logger.warn('Warming up is not finished yet, ignoring message', {
61 xid, me: config.username, partner, msg, 61 xid, me: config.username, partner, msg,
62 }); 62 });
63 } 63 }
64 return; 64 return;
65 } 65 }
66 66
67 if (customPing.isPongMessage(msg)) { 67 if (customPing.isPongMessage(msg)) {
68 if (config.custom_ping && config.custom_ping.verbose) { 68 if (config.custom_ping && config.custom_ping.verbose) {
69 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, { 69 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, {
70 xid, 70 xid,
71 partner, 71 partner,
72 msg, 72 msg,
73 }); 73 });
74 } 74 }
75 return; 75 return;
76 } 76 }
77 77
78 if (customPing.isPingMessage(msg) && customPing.isAllowedPartner(partner)) { 78 if (customPing.isPingMessage(msg)) {
79 if (config.custom_ping && config.custom_ping.verbose) { 79 if (customPing.isAllowedPartner(partner)) {
80 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, { 80 if (config.custom_ping && config.custom_ping.verbose) {
81 xid, 81 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, {
82 partner, 82 xid,
83 msg, 83 partner,
84 }); 84 msg,
85 } 85 });
86 }
86 87
87 customPing.sendPong(xid, partner, msg); 88 customPing.sendPong(xid, partner, msg);
89 }
88 return; 90 return;
89 } 91 }
90 92
91 logger.info('Incoming message via XMPP transport', { 93 logger.info('Incoming message via XMPP transport', {
92 xid, me: config.username, partner, msg, 94 xid, me: config.username, partner, msg,
93 }); 95 });
94 96
95 if (messagingService && messagingService.onIncomingMessage) { 97 if (messagingService && messagingService.onIncomingMessage) {
96 messagingService.onIncomingMessage( 98 messagingService.onIncomingMessage(
97 { 99 {
98 me: config.username, 100 me: config.username,
99 partner, 101 partner,
100 msg: msg.trim(), 102 msg: msg.trim(),
101 xid, 103 xid,
102 }, 104 },
103 ); 105 );
104 } 106 }
105 }); 107 });
106 108
107 bot.on('error', (err) => { 109 bot.on('error', (err) => {
108 const xid = uniqid(); 110 const xid = uniqid();
109 111
110 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, { 112 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, {
111 xid, 113 xid,
112 eCode: err.code, 114 eCode: err.code,
113 eMessage: err.message, 115 eMessage: err.message,
114 }); 116 });
115 117
116 if (!config.do_not_terminate_on_error) { 118 if (!config.do_not_terminate_on_error) {
117 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, { 119 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, {
118 xid, 120 xid,
119 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS, 121 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS,
120 }); 122 });
121 123
122 setTimeout(() => { 124 setTimeout(() => {
123 process.exit(1); 125 process.exit(1);
124 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS); 126 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS);
125 } 127 }
126 }); 128 });
127 129
128 function send(partner, msg) { 130 function send(partner, msg) {
129 logger.verbose('Sending message via XMPP transport', { 131 logger.verbose('Sending message via XMPP transport', {
130 transport: 'xmpp', me: config.username, partner, msg, 132 transport: 'xmpp', me: config.username, partner, msg,
131 }); 133 });
132 bot.send(partner, msg); 134 bot.send(partner, msg);
133 } 135 }
134 136
135 bot.on('subscribe', (from) => { 137 bot.on('subscribe', (from) => {
136 logger.verbose(`Incoming subscribe request from ${from}`); 138 logger.verbose(`Incoming subscribe request from ${from}`);
137 bot.acceptSubscription(from); 139 bot.acceptSubscription(from);
138 bot.subscribe(from); 140 bot.subscribe(from);
139 }); 141 });
140 142
141 function ping() { 143 function ping() {
142 if (isReady) bot.send(config.username, 'PING!'); 144 if (isReady) bot.send(config.username, 'PING!');
143 } 145 }
144 146
145 function init() { 147 function init() {
146 messagingService.setTransport(exports); 148 messagingService.setTransport(exports);
147 149
148 bot.connect({ 150 bot.connect({
149 jid: config.username, 151 jid: config.username,
150 password: config.password, 152 password: config.password,
151 host: config.xmpp_host, 153 host: config.xmpp_host,
152 }); 154 });
153 155
154 setInterval( 156 setInterval(
155 ping, 157 ping,
156 config.ping_interval_ms || 60000, 158 config.ping_interval_ms || 60000,
157 ); 159 );
158 } 160 }
159 161
160 init(); 162 init();
161 163
162 exports.init = init; 164 exports.init = init;
163 exports.send = send; 165 exports.send = send;
164 166