Commit a5fbc1b3d0beb459758df0be011f5a84259c6e9c

Authored by Adhidarma Hadiwinoto
1 parent c53d06d03f
Exists in master

Tambah error keyword

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