Commit 4fac6909c8f0f69380afd788ddbc8c81e8998781

Authored by Adhidarma Hadiwinoto
1 parent a2177ed771
Exists in master

Ubah aktivasi killOnIdle menjadi ketika init

Sebelumnya aktivasi ketika on online.
Tetapi akibatnya kalau tidak pernah online,
dia tidak pernah kena kill.

Showing 1 changed file with 5 additions and 5 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
36 if (!killOnIdle.getDisabled()) {
37 killOnIdle.init();
38 }
39 }, 35 },
40 36
41 config.warming_up_ms || (30 * 1000), 37 config.warming_up_ms || (30 * 1000),
42 ); 38 );
43 }); 39 });
44 40
45 bot.on('chat', (partner, msg) => { 41 bot.on('chat', (partner, msg) => {
46 if (!msg || !msg.trim()) { 42 if (!msg || !msg.trim()) {
47 return; 43 return;
48 } 44 }
49 45
50 if (partner === config.username.replace(/\/.*$/, '')) { 46 if (partner === config.username.replace(/\/.*$/, '')) {
51 return; 47 return;
52 } 48 }
53 49
54 killOnIdle.touch(); 50 killOnIdle.touch();
55 51
56 const xid = uniqid(); 52 const xid = uniqid();
57 53
58 if (!isReady) { 54 if (!isReady) {
59 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) { 55 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) {
60 logger.warn('Warming up is not finished yet, ignoring message', { 56 logger.warn('Warming up is not finished yet, ignoring message', {
61 xid, me: config.username, partner, msg, 57 xid, me: config.username, partner, msg,
62 }); 58 });
63 } 59 }
64 return; 60 return;
65 } 61 }
66 62
67 if (msg.toLowerCase().indexOf('error') === 0) { 63 if (msg.toLowerCase().indexOf('error') === 0) {
68 return; 64 return;
69 } 65 }
70 66
71 if (msg.toLowerCase().indexOf('perintah salah') === 0) { 67 if (msg.toLowerCase().indexOf('perintah salah') === 0) {
72 return; 68 return;
73 } 69 }
74 70
75 if (msg.toLowerCase().indexOf('pembelian ') === 0) { 71 if (msg.toLowerCase().indexOf('pembelian ') === 0) {
76 return; 72 return;
77 } 73 }
78 74
79 if (customPing.isPongMessage(msg)) { 75 if (customPing.isPongMessage(msg)) {
80 if (config.custom_ping && config.custom_ping.verbose) { 76 if (config.custom_ping && config.custom_ping.verbose) {
81 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, { 77 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, {
82 xid, 78 xid,
83 partner, 79 partner,
84 msg, 80 msg,
85 }); 81 });
86 } 82 }
87 return; 83 return;
88 } 84 }
89 85
90 if (customPing.isPingMessage(msg)) { 86 if (customPing.isPingMessage(msg)) {
91 if (customPing.isAllowedPartner(partner)) { 87 if (customPing.isAllowedPartner(partner)) {
92 if (config.custom_ping && config.custom_ping.verbose) { 88 if (config.custom_ping && config.custom_ping.verbose) {
93 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, { 89 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, {
94 xid, 90 xid,
95 partner, 91 partner,
96 msg, 92 msg,
97 }); 93 });
98 } 94 }
99 95
100 customPing.sendPong(xid, partner, msg); 96 customPing.sendPong(xid, partner, msg);
101 } 97 }
102 98
103 return; 99 return;
104 } 100 }
105 101
106 logger.info('Incoming message via XMPP transport', { 102 logger.info('Incoming message via XMPP transport', {
107 xid, me: config.username, partner, msg, 103 xid, me: config.username, partner, msg,
108 }); 104 });
109 105
110 if (messagingService && messagingService.onIncomingMessage) { 106 if (messagingService && messagingService.onIncomingMessage) {
111 messagingService.onIncomingMessage( 107 messagingService.onIncomingMessage(
112 { 108 {
113 me: config.username, 109 me: config.username,
114 partner, 110 partner,
115 msg: msg.trim(), 111 msg: msg.trim(),
116 xid, 112 xid,
117 }, 113 },
118 ); 114 );
119 } 115 }
120 }); 116 });
121 117
122 bot.on('error', (err) => { 118 bot.on('error', (err) => {
123 const xid = uniqid(); 119 const xid = uniqid();
124 120
125 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, { 121 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, {
126 xid, 122 xid,
127 eCode: err.code, 123 eCode: err.code,
128 eMessage: err.message, 124 eMessage: err.message,
129 }); 125 });
130 126
131 if (!config.do_not_terminate_on_error) { 127 if (!config.do_not_terminate_on_error) {
132 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, { 128 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, {
133 xid, 129 xid,
134 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS, 130 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS,
135 }); 131 });
136 132
137 setTimeout(() => { 133 setTimeout(() => {
138 process.exit(1); 134 process.exit(1);
139 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS); 135 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS);
140 } 136 }
141 }); 137 });
142 138
143 function send(partner, msg) { 139 function send(partner, msg) {
144 logger.verbose('Sending message via XMPP transport', { 140 logger.verbose('Sending message via XMPP transport', {
145 transport: 'xmpp', me: config.username, partner, msg, 141 transport: 'xmpp', me: config.username, partner, msg,
146 }); 142 });
147 bot.send(partner, msg); 143 bot.send(partner, msg);
148 } 144 }
149 145
150 bot.on('subscribe', (from) => { 146 bot.on('subscribe', (from) => {
151 logger.verbose(`Incoming subscribe request from ${from}`); 147 logger.verbose(`Incoming subscribe request from ${from}`);
152 bot.acceptSubscription(from); 148 bot.acceptSubscription(from);
153 bot.subscribe(from); 149 bot.subscribe(from);
154 }); 150 });
155 151
156 function ping() { 152 function ping() {
157 if (isReady) bot.send(config.username, 'PING!'); 153 if (isReady) bot.send(config.username, 'PING!');
158 } 154 }
159 155
160 function init() { 156 function init() {
161 messagingService.setTransport(exports); 157 messagingService.setTransport(exports);
162 158
159 if (!killOnIdle.getDisabled()) {
160 killOnIdle.init();
161 }
162
163 bot.connect({ 163 bot.connect({
164 jid: config.username, 164 jid: config.username,
165 password: config.password, 165 password: config.password,
166 host: config.xmpp_host, 166 host: config.xmpp_host,
167 }); 167 });
168 168
169 setInterval( 169 setInterval(
170 ping, 170 ping,
171 config.ping_interval_ms || 60000, 171 config.ping_interval_ms || 25000,
172 ); 172 );
173 } 173 }
174 174
175 init(); 175 init();