Commit 4fac6909c8f0f69380afd788ddbc8c81e8998781
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
lib/transport.js
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(); |