@dongdev/fca-unofficial 1.0.16 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/index.js +31 -22
- package/package.json +1 -1
- package/src/listenMqtt.js +105 -55
package/CHANGELOG.md
CHANGED
package/index.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
const utils = require("./utils");
|
3
3
|
const log = require("npmlog");
|
4
|
-
const { execSync } = require('child_process');
|
4
|
+
const { execSync, exec } = require('child_process');
|
5
5
|
const { promises: fsPromises, readFileSync } = require('fs');
|
6
6
|
const fs = require('fs');
|
7
7
|
const axios = require('axios');
|
@@ -188,7 +188,6 @@ function buildAPI(globalOptions, html, jar) {
|
|
188
188
|
api[v.replace(".js", "")] = require("./src/" + v)(defaultFuncs, api, ctx);
|
189
189
|
});
|
190
190
|
api.listen = api.listenMqtt;
|
191
|
-
setInterval(checkForUpdates, 1000 * 60 * 60 * 24);
|
192
191
|
setInterval(async () => {
|
193
192
|
api
|
194
193
|
.refreshFb_dtsg()
|
@@ -281,28 +280,38 @@ function loginHelper(appState, email, password, globalOptions, callback, prCallb
|
|
281
280
|
mainPromise
|
282
281
|
.then(async () => {
|
283
282
|
if (global.fca.config.autoUpdate) {
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
283
|
+
try {
|
284
|
+
exec('npm view @dongdev/fca-unofficial version', async (error, stdout, stderr) => {
|
285
|
+
if (error) {
|
286
|
+
logger('Error checking version: ' + error, 'error');
|
287
|
+
return;
|
288
|
+
}
|
289
|
+
const npmVersion = stdout.trim();
|
290
|
+
const localbrand = JSON.parse(readFileSync('./node_modules/@dongdev/fca-unofficial/package.json')).version;
|
291
|
+
if (localbrand !== npmVersion) {
|
292
|
+
logger(`New Version Published: ${localbrand} => ${npmVersion}`, 'warn');
|
293
|
+
logger(`Perform Automatic Update to the Latest Version !`, 'warn');
|
294
|
+
try {
|
295
|
+
execSync('npm install @dongdev/fca-unofficial@latest', { stdio: 'inherit' });
|
296
|
+
logger("Upgrade Version Successfully!", "[ FCA-UNO ] >")
|
297
|
+
logger('Restarting...', '[ FCA-UNO ] >');
|
298
|
+
await new Promise(resolve => setTimeout(resolve, 5 * 1000));
|
299
|
+
console.clear();
|
300
|
+
process.exit(1);
|
301
|
+
} catch (err) {
|
302
|
+
logger('Error Auto Update ! ' + err, 'error');
|
303
|
+
}
|
304
|
+
} else {
|
305
|
+
logger(`You Are Currently Using Version: ${localbrand} !`, "[ FCA-UNO ] >");
|
306
|
+
logger(`Have a good day !`, "[ FCA-UNO ] >")
|
293
307
|
await new Promise(resolve => setTimeout(resolve, 5 * 1000));
|
294
|
-
|
295
|
-
process.exit(1);
|
296
|
-
} catch (err) {
|
297
|
-
logger('Error Auto Update ! ' + err, 'error');
|
308
|
+
callback(null, api);
|
298
309
|
}
|
299
|
-
}
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
}
|
305
|
-
});
|
310
|
+
});
|
311
|
+
} catch (err) {
|
312
|
+
logger('Error checking for updates: ' + err, 'error');
|
313
|
+
callback(null, api);
|
314
|
+
}
|
306
315
|
}
|
307
316
|
logger('Login successful!', '[ FCA-UNO ] >');
|
308
317
|
callback(null, api);
|
package/package.json
CHANGED
package/src/listenMqtt.js
CHANGED
@@ -7,10 +7,11 @@ const HttpsProxyAgent = require("https-proxy-agent");
|
|
7
7
|
const EventEmitter = require("events");
|
8
8
|
const Duplexify = require("duplexify");
|
9
9
|
const { Transform } = require("stream");
|
10
|
-
var identity = function () {};
|
10
|
+
var identity = function () { };
|
11
11
|
var form = {};
|
12
|
-
var getSeqID = function () {};
|
12
|
+
var getSeqID = function () { };
|
13
13
|
const logger = require("../lib/logger.js");
|
14
|
+
let mqttReconnectCount = 0;
|
14
15
|
const topics = [
|
15
16
|
"/ls_req",
|
16
17
|
"/ls_resp",
|
@@ -228,6 +229,56 @@ function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
|
|
228
229
|
}
|
229
230
|
});
|
230
231
|
mqttClient.on("connect", function () {
|
232
|
+
let StopProcessin = true;
|
233
|
+
mqttReconnectCount = 0;
|
234
|
+
setInterval(() => {
|
235
|
+
console.log('Đang chuẩn bị ngắt kết nối MQTT...');
|
236
|
+
StopProcessin = true;
|
237
|
+
if (ctx.mqttClient) {
|
238
|
+
topics.forEach((topic) => {
|
239
|
+
try {
|
240
|
+
ctx.mqttClient.unsubscribe(topic);
|
241
|
+
} catch (e) { }
|
242
|
+
});
|
243
|
+
try {
|
244
|
+
ctx.mqttClient.publish("/browser_close", "{}");
|
245
|
+
} catch (e) { }
|
246
|
+
ctx.mqttClient.removeAllListeners();
|
247
|
+
console.log('Ngắt Kết Nối MQTT...');
|
248
|
+
let connectionClosed = false;
|
249
|
+
const afterConnectionClosed = () => {
|
250
|
+
if (connectionClosed) return;
|
251
|
+
connectionClosed = true;
|
252
|
+
ctx.lastSeqId = null;
|
253
|
+
ctx.syncToken = undefined;
|
254
|
+
ctx.t_mqttCalled = false;
|
255
|
+
mqttReconnectCount = 0;
|
256
|
+
StopProcessing = false;
|
257
|
+
console.log('Đang Kết Nối Lại MQTT...');
|
258
|
+
setTimeout(() => {
|
259
|
+
getSeqID();
|
260
|
+
console.log('Kết Nối Lại MQTT Thành Công');
|
261
|
+
}, 1000);
|
262
|
+
};
|
263
|
+
try {
|
264
|
+
ctx.mqttClient.end(false, afterConnectionClosed);
|
265
|
+
setTimeout(() => {
|
266
|
+
if (!connectionClosed) {
|
267
|
+
console.warn('Đóng kết nối MQTT bằng timeout');
|
268
|
+
ctx.mqttClient = undefined;
|
269
|
+
afterConnectionClosed();
|
270
|
+
}
|
271
|
+
}, 5000);
|
272
|
+
} catch (e) {
|
273
|
+
console.error('Lỗi khi đóng kết nối MQTT:', e);
|
274
|
+
ctx.mqttClient = undefined;
|
275
|
+
afterConnectionClosed();
|
276
|
+
}
|
277
|
+
} else {
|
278
|
+
getSeqID();
|
279
|
+
console.log('Kết Nối Lại MQTT Thành Công');
|
280
|
+
}
|
281
|
+
}, 60 * 60 * 1000);
|
231
282
|
if (process.env.OnStatus === undefined) {
|
232
283
|
logger("fca-unoffcial premium", "info");
|
233
284
|
process.env.OnStatus = true;
|
@@ -271,9 +322,9 @@ function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
|
|
271
322
|
clearTimeout(rTimeout);
|
272
323
|
ctx.globalOptions.emitReady
|
273
324
|
? globalCallback({
|
274
|
-
|
275
|
-
|
276
|
-
|
325
|
+
type: "ready",
|
326
|
+
error: null,
|
327
|
+
})
|
277
328
|
: "";
|
278
329
|
delete ctx.tmsWait;
|
279
330
|
};
|
@@ -358,11 +409,10 @@ function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
|
|
358
409
|
if (taskRespData == null) {
|
359
410
|
taskCallback("error", null);
|
360
411
|
} else {
|
361
|
-
taskCallback(null, {
|
412
|
+
taskCallback(null, Object.assign({
|
362
413
|
type: taskType,
|
363
|
-
reqID: reqID
|
364
|
-
|
365
|
-
});
|
414
|
+
reqID: reqID
|
415
|
+
}, taskRespData));
|
366
416
|
}
|
367
417
|
}
|
368
418
|
}
|
@@ -372,8 +422,8 @@ function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
|
|
372
422
|
return;
|
373
423
|
}
|
374
424
|
});
|
375
|
-
mqttClient.on("close", function () {});
|
376
|
-
mqttClient.on("disconnect", () => {});
|
425
|
+
mqttClient.on("close", function () { });
|
426
|
+
mqttClient.on("disconnect", () => { });
|
377
427
|
}
|
378
428
|
function getTaskResponseData(taskType, payload) {
|
379
429
|
try {
|
@@ -476,10 +526,10 @@ function parseDelta(defaultFuncs, api, ctx, globalCallback, { delta }) {
|
|
476
526
|
delta.deltaMessageReply.message === undefined
|
477
527
|
? []
|
478
528
|
: delta.deltaMessageReply.message.data === undefined
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
529
|
+
? []
|
530
|
+
: delta.deltaMessageReply.message.data.prng === undefined
|
531
|
+
? []
|
532
|
+
: JSON.parse(delta.deltaMessageReply.message.data.prng);
|
483
533
|
|
484
534
|
const m_id = mdata.map((u) => u.i);
|
485
535
|
const m_offset = mdata.map((u) => u.o);
|
@@ -495,9 +545,9 @@ function parseDelta(defaultFuncs, api, ctx, globalCallback, { delta }) {
|
|
495
545
|
threadID: (delta.deltaMessageReply.message.messageMetadata.threadKey
|
496
546
|
.threadFbId
|
497
547
|
? delta.deltaMessageReply.message.messageMetadata.threadKey
|
498
|
-
|
548
|
+
.threadFbId
|
499
549
|
: delta.deltaMessageReply.message.messageMetadata.threadKey
|
500
|
-
|
550
|
+
.otherUserFbId
|
501
551
|
).toString(),
|
502
552
|
messageID:
|
503
553
|
delta.deltaMessageReply.message.messageMetadata.messageId,
|
@@ -540,13 +590,13 @@ function parseDelta(defaultFuncs, api, ctx, globalCallback, { delta }) {
|
|
540
590
|
delta.deltaMessageReply.repliedToMessage === undefined
|
541
591
|
? []
|
542
592
|
: delta.deltaMessageReply.repliedToMessage.data === undefined
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
593
|
+
? []
|
594
|
+
: delta.deltaMessageReply.repliedToMessage.data.prng ===
|
595
|
+
undefined
|
596
|
+
? []
|
597
|
+
: JSON.parse(
|
598
|
+
delta.deltaMessageReply.repliedToMessage.data.prng
|
599
|
+
);
|
550
600
|
const m_id = mdata.map((u) => u.i);
|
551
601
|
const m_offset = mdata.map((u) => u.o);
|
552
602
|
const m_length = mdata.map((u) => u.l);
|
@@ -560,9 +610,9 @@ function parseDelta(defaultFuncs, api, ctx, globalCallback, { delta }) {
|
|
560
610
|
threadID: (delta.deltaMessageReply.repliedToMessage
|
561
611
|
.messageMetadata.threadKey.threadFbId
|
562
612
|
? delta.deltaMessageReply.repliedToMessage.messageMetadata
|
563
|
-
|
613
|
+
.threadKey.threadFbId
|
564
614
|
: delta.deltaMessageReply.repliedToMessage.messageMetadata
|
565
|
-
|
615
|
+
.threadKey.otherUserFbId
|
566
616
|
).toString(),
|
567
617
|
messageID:
|
568
618
|
delta.deltaMessageReply.repliedToMessage.messageMetadata
|
@@ -782,37 +832,37 @@ function parseDelta(defaultFuncs, api, ctx, globalCallback, { delta }) {
|
|
782
832
|
case "ThreadImageMessage":
|
783
833
|
(!ctx.globalOptions.selfListen &&
|
784
834
|
fetchData.message_sender.id.toString() === ctx.userID) ||
|
785
|
-
|
835
|
+
!ctx.loggedIn
|
786
836
|
? undefined
|
787
837
|
: (function () {
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
},
|
838
|
+
globalCallback(null, {
|
839
|
+
type: "event",
|
840
|
+
threadID: utils.formatID(tid.toString()),
|
841
|
+
logMessageType: "log:thread-image",
|
842
|
+
logMessageData: {
|
843
|
+
image: {
|
844
|
+
attachmentID:
|
845
|
+
fetchData.image_with_metadata &&
|
846
|
+
fetchData.image_with_metadata
|
847
|
+
.legacy_attachment_id,
|
848
|
+
width:
|
849
|
+
fetchData.image_with_metadata &&
|
850
|
+
fetchData.image_with_metadata
|
851
|
+
.original_dimensions.x,
|
852
|
+
height:
|
853
|
+
fetchData.image_with_metadata &&
|
854
|
+
fetchData.image_with_metadata
|
855
|
+
.original_dimensions.y,
|
856
|
+
url:
|
857
|
+
fetchData.image_with_metadata &&
|
858
|
+
fetchData.image_with_metadata.preview.uri,
|
810
859
|
},
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
})
|
860
|
+
},
|
861
|
+
logMessageBody: fetchData.snippet,
|
862
|
+
timestamp: fetchData.timestamp_precise,
|
863
|
+
author: fetchData.message_sender.id,
|
864
|
+
});
|
865
|
+
})();
|
816
866
|
break;
|
817
867
|
case "UserMessage": {
|
818
868
|
const event = {
|
@@ -981,7 +1031,7 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
981
1031
|
return function (callback) {
|
982
1032
|
class MessageEmitter extends EventEmitter {
|
983
1033
|
stopListening(callback) {
|
984
|
-
callback = callback || (() => {});
|
1034
|
+
callback = callback || (() => { });
|
985
1035
|
globalCallback = identity;
|
986
1036
|
if (ctx.mqttClient) {
|
987
1037
|
ctx.mqttClient.unsubscribe("/webrtc");
|