Commit f795a3b8545d07c7310845811f1837487e04a4ec

Authored by Adhidarma Hadiwinoto
1 parent 3a28f93e6c
Exists in master

Add message blacklist

Showing 1 changed file with 4 additions and 0 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 bot.getRoster(); 22 bot.getRoster();
23 23
24 setTimeout( 24 setTimeout(
25 () => { 25 () => {
26 isReady = true; 26 isReady = true;
27 27
28 logger.verbose('Transport is ready'); 28 logger.verbose('Transport is ready');
29 29
30 if (messagingService.onOnline) { 30 if (messagingService.onOnline) {
31 messagingService.onOnline({ 31 messagingService.onOnline({
32 me: config.username, 32 me: config.username,
33 }); 33 });
34 } 34 }
35 35
36 if (!killOnIdle.getDisabled()) { 36 if (!killOnIdle.getDisabled()) {
37 killOnIdle.init(); 37 killOnIdle.init();
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 (msg.toLowerCase().indexOf('perintah salah')) {
68 return;
69 }
70
67 if (customPing.isPongMessage(msg)) { 71 if (customPing.isPongMessage(msg)) {
68 if (config.custom_ping && config.custom_ping.verbose) { 72 if (config.custom_ping && config.custom_ping.verbose) {
69 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, { 73 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, {
70 xid, 74 xid,
71 partner, 75 partner,
72 msg, 76 msg,
73 }); 77 });
74 } 78 }
75 return; 79 return;
76 } 80 }
77 81
78 if (customPing.isPingMessage(msg)) { 82 if (customPing.isPingMessage(msg)) {
79 if (customPing.isAllowedPartner(partner)) { 83 if (customPing.isAllowedPartner(partner)) {
80 if (config.custom_ping && config.custom_ping.verbose) { 84 if (config.custom_ping && config.custom_ping.verbose) {
81 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, { 85 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, {
82 xid, 86 xid,
83 partner, 87 partner,
84 msg, 88 msg,
85 }); 89 });
86 } 90 }
87 91
88 customPing.sendPong(xid, partner, msg); 92 customPing.sendPong(xid, partner, msg);
89 } 93 }
90 94
91 return; 95 return;
92 } 96 }
93 97
94 logger.info('Incoming message via XMPP transport', { 98 logger.info('Incoming message via XMPP transport', {
95 xid, me: config.username, partner, msg, 99 xid, me: config.username, partner, msg,
96 }); 100 });
97 101
98 if (messagingService && messagingService.onIncomingMessage) { 102 if (messagingService && messagingService.onIncomingMessage) {
99 messagingService.onIncomingMessage( 103 messagingService.onIncomingMessage(
100 { 104 {
101 me: config.username, 105 me: config.username,
102 partner, 106 partner,
103 msg: msg.trim(), 107 msg: msg.trim(),
104 xid, 108 xid,
105 }, 109 },
106 ); 110 );
107 } 111 }
108 }); 112 });
109 113
110 bot.on('error', (err) => { 114 bot.on('error', (err) => {
111 const xid = uniqid(); 115 const xid = uniqid();
112 116
113 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, { 117 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, {
114 xid, 118 xid,
115 eCode: err.code, 119 eCode: err.code,
116 eMessage: err.message, 120 eMessage: err.message,
117 }); 121 });
118 122
119 if (!config.do_not_terminate_on_error) { 123 if (!config.do_not_terminate_on_error) {
120 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, { 124 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, {
121 xid, 125 xid,
122 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS, 126 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS,
123 }); 127 });
124 128
125 setTimeout(() => { 129 setTimeout(() => {
126 process.exit(1); 130 process.exit(1);
127 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS); 131 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS);
128 } 132 }
129 }); 133 });
130 134
131 function send(partner, msg) { 135 function send(partner, msg) {
132 logger.verbose('Sending message via XMPP transport', { 136 logger.verbose('Sending message via XMPP transport', {
133 transport: 'xmpp', me: config.username, partner, msg, 137 transport: 'xmpp', me: config.username, partner, msg,
134 }); 138 });
135 bot.send(partner, msg); 139 bot.send(partner, msg);
136 } 140 }
137 141
138 bot.on('subscribe', (from) => { 142 bot.on('subscribe', (from) => {
139 logger.verbose(`Incoming subscribe request from ${from}`); 143 logger.verbose(`Incoming subscribe request from ${from}`);
140 bot.acceptSubscription(from); 144 bot.acceptSubscription(from);
141 bot.subscribe(from); 145 bot.subscribe(from);
142 }); 146 });
143 147
144 function ping() { 148 function ping() {
145 if (isReady) bot.send(config.username, 'PING!'); 149 if (isReady) bot.send(config.username, 'PING!');
146 } 150 }
147 151
148 function init() { 152 function init() {
149 messagingService.setTransport(exports); 153 messagingService.setTransport(exports);
150 154
151 bot.connect({ 155 bot.connect({
152 jid: config.username, 156 jid: config.username,
153 password: config.password, 157 password: config.password,
154 host: config.xmpp_host, 158 host: config.xmpp_host,
155 }); 159 });
156 160
157 setInterval( 161 setInterval(
158 ping, 162 ping,
159 config.ping_interval_ms || 60000, 163 config.ping_interval_ms || 60000,
160 ); 164 );
161 } 165 }
162 166
163 init(); 167 init();
164 168
165 exports.init = init; 169 exports.init = init;
166 exports.send = send; 170 exports.send = send;
167 171