alicezetion 1.7.1 → 1.7.2
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/.cache/replit/__replit_disk_meta.json +1 -1
- package/.cache/replit/nix/env.json +1 -1
- package/Extra/Database/index.js +399 -0
- package/Extra/Database/methods.js +286 -0
- package/Extra/ExtraAddons.js +213 -0
- package/Extra/ExtraGetThread.js +1 -0
- package/Extra/ExtraUptimeRobot.js +59 -0
- package/Extra/PM2/ecosystem.config.js +23 -0
- package/Extra/Src/Last-Run.js +48 -0
- package/Language/index.json +151 -0
- package/StateCrypt.js +22 -0
- package/broadcast.js +42 -0
- package/index.js +654 -119
- package/logger.js +21 -0
- package/package.json +37 -25
- package/replit.nix +3 -4
- package/src/addExternalModule.js +13 -5
- package/src/addUserToGroup.js +36 -12
- package/src/changeAdminStatus.js +85 -37
- package/src/changeArchivedStatus.js +15 -9
- package/src/changeAvt.js +91 -0
- package/src/changeBio.js +13 -8
- package/src/changeBlockedStatus.js +14 -8
- package/src/changeGroupImage.js +28 -13
- package/src/changeNickname.js +22 -11
- package/src/changeThreadColor.js +16 -10
- package/src/changeThreadEmoji.js +18 -9
- package/src/chat.js +401 -280
- package/src/createNewGroup.js +18 -10
- package/src/createPoll.js +17 -11
- package/src/deleteMessage.js +17 -10
- package/src/deleteThread.js +17 -10
- package/src/forwardAttachment.js +15 -9
- package/src/getAccessToken.js +32 -0
- package/src/getCurrentUserID.js +1 -1
- package/src/getEmojiUrl.js +3 -2
- package/src/getFriendsList.js +18 -10
- package/src/getMessage.js +84 -0
- package/src/getThreadHistory.js +156 -59
- package/src/getThreadHistoryDeprecated.js +26 -15
- package/src/getThreadInfo.js +68 -42
- package/src/getThreadInfoDeprecated.js +25 -13
- package/src/getThreadList.js +112 -53
- package/src/getThreadListDeprecated.js +30 -12
- package/src/getThreadPictures.js +25 -13
- package/src/getUserID.js +9 -7
- package/src/getUserInfo.js +12 -10
- package/src/getUserInfoV2.js +35 -0
- package/src/handleFriendRequest.js +36 -35
- package/src/handleMessageRequest.js +18 -10
- package/src/httpGet.js +20 -13
- package/src/httpPost.js +19 -13
- package/src/httpPostFormData.js +46 -0
- package/src/listenMqtt.js +1224 -621
- package/src/logout.js +18 -13
- package/src/markAsDelivered.js +17 -10
- package/src/markAsRead.js +36 -24
- package/src/markAsSeen.js +22 -12
- package/src/muteThread.js +15 -9
- package/src/{setMessageReaction.js → react.js} +20 -9
- package/src/removeUserFromGroup.js +38 -11
- package/src/resolvePhotoUrl.js +9 -6
- package/src/searchForThread.js +14 -8
- package/src/{markAsReadAll.js → seen.js} +17 -10
- package/src/sendTypingIndicator.js +44 -19
- package/src/setPostReaction.js +63 -22
- package/src/setTitle.js +22 -12
- package/src/threadColors.js +17 -19
- package/src/unfriend.js +15 -9
- package/src/{unsendMessage.js → unsend.js} +9 -8
- package/utils.js +120 -27
- package/.travis.yml +0 -6
- package/src/forwardMessage.js +0 -0
- package/src/listen.js +0 -553
- package/src/listenMqtt-Test.js +0 -687
- package/src/sendMessage.js +0 -315
- package/test/data/shareAttach.js +0 -146
- package/test/data/something.mov +0 -0
- package/test/data/test.png +0 -0
- package/test/data/test.txt +0 -7
- package/test/example-config.json +0 -18
- package/test/test-page.js +0 -140
- package/test/test.js +0 -385
package/index.js
CHANGED
@@ -1,13 +1,93 @@
|
|
1
|
-
|
1
|
+
'use strict';
|
2
2
|
|
3
|
-
|
4
|
-
var cheerio = require("cheerio");
|
5
|
-
var log = require("npmlog");
|
3
|
+
/!-[ Max Cpu Speed ]-!/
|
6
4
|
|
5
|
+
process.env.UV_THREADPOOL_SIZE = require('os').cpus().length;
|
6
|
+
|
7
|
+
/!-[ Global Set ]-!/
|
8
|
+
|
9
|
+
global.isThread = new Array();
|
10
|
+
global.isUser = new Array();
|
11
|
+
global.startTime = Date.now();
|
12
|
+
global.getText = require('gettext.js')();
|
13
|
+
|
14
|
+
/!-[ Require All Package Need Use ]-!/
|
15
|
+
/*globalThis.Fca = new Object({
|
16
|
+
test: console,log("test"),
|
17
|
+
Require: new Object({})
|
18
|
+
});*/
|
19
|
+
var utils = require("./utils"),
|
20
|
+
cheerio = require("cheerio"),
|
21
|
+
log = require("npmlog"),
|
22
|
+
//{ getAccessToken } = require('./Extra/ExtraAddons'),
|
23
|
+
logger = require('./logger'),
|
24
|
+
fs = require('fs-extra'),
|
25
|
+
getText = require('gettext.js')(),
|
26
|
+
logger = require('./logger'),
|
27
|
+
Fetch = require('got'),
|
28
|
+
fs = require('fs-extra'),
|
29
|
+
StateCrypt = require('./StateCrypt'),
|
30
|
+
Client = require("@replit/database"),
|
31
|
+
languageFile = require('./Language/index.json'),
|
32
|
+
ObjFastConfig = {
|
33
|
+
"Language": "en",
|
34
|
+
"MainColor": "#9900FF",
|
35
|
+
"BroadCast": true,
|
36
|
+
"EncryptFeature": true,
|
37
|
+
"PreKey": "",
|
38
|
+
"Uptime": false
|
39
|
+
};
|
40
|
+
|
41
|
+
|
42
|
+
/!-[ Check File To Run Process ]-!/
|
43
|
+
|
44
|
+
try {
|
45
|
+
if (!fs.existsSync('./alice/alicezetion.json')) {
|
46
|
+
fs.writeFileSync("./alice/alicezetion.json", JSON.stringify(ObjFastConfig, null, "\t"));
|
47
|
+
process.exit(1);
|
48
|
+
} else if (fs.existsSync('./alice/alicezetion.json')) {
|
49
|
+
try {
|
50
|
+
var DataLanguageSetting = require("../../alicezetion.json");
|
51
|
+
} catch (e) {
|
52
|
+
logger("Invalid Config Settings, Restoring Default...");
|
53
|
+
fs.writeFileSync("./alice/alicezetion.json", JSON.stringify(ObjFastConfig, null, "\t"));
|
54
|
+
process.exit(1);
|
55
|
+
}
|
56
|
+
try {
|
57
|
+
if (DataLanguageSetting && !DataLanguageSetting.PreKey) {
|
58
|
+
DataLanguageSetting.PreKey = "";
|
59
|
+
fs.writeFileSync("./alice/alicezetion.json", JSON.stringify(DataLanguageSetting, null, "\t"));
|
60
|
+
}
|
61
|
+
} catch (e) {
|
62
|
+
console.log(e);
|
63
|
+
}
|
64
|
+
if (!languageFile.some(i => i.Language == DataLanguageSetting.Language)) {
|
65
|
+
logger("Not Support Language: " + DataLanguageSetting.Language + " Only 'en' and 'vi'", "[ Alicezetion ]");
|
66
|
+
process.exit(0);
|
67
|
+
}
|
68
|
+
var Language = languageFile.find(i => i.Language == DataLanguageSetting.Language).Folder.Index;
|
69
|
+
} else process.exit(1);
|
70
|
+
if (utils.getType(DataLanguageSetting.BroadCast) != "Boolean" && DataLanguageSetting.BroadCast != undefined) {
|
71
|
+
log.warn("FastConfig-BroadCast", getText.gettext(Language.IsNotABoolean, DataLanguageSetting.BroadCast));
|
72
|
+
process.exit(0)
|
73
|
+
} else if (DataLanguageSetting.BroadCast == undefined) {
|
74
|
+
fs.writeFileSync("./alice/alicezetion.json", JSON.stringify(ObjFastConfig, null, "\t"));
|
75
|
+
process.exit(1);
|
76
|
+
}
|
77
|
+
|
78
|
+
global.FastConfig = DataLanguageSetting;
|
79
|
+
|
80
|
+
} catch (e) {
|
81
|
+
console.log(e);
|
82
|
+
logger.Error();
|
83
|
+
}
|
84
|
+
|
85
|
+
/!-[ Set Variable For Process ]-!/
|
86
|
+
|
87
|
+
log.maxRecordSize = 100;
|
7
88
|
var checkVerified = null;
|
8
89
|
|
9
|
-
|
10
|
-
log.maxRecordSize = defaultLogRecordSize;
|
90
|
+
/!-[ Function setOptions ]-!/
|
11
91
|
|
12
92
|
function setOptions(globalOptions, options) {
|
13
93
|
Object.keys(options).map(function(key) {
|
@@ -75,21 +155,23 @@ function setOptions(globalOptions, options) {
|
|
75
155
|
});
|
76
156
|
}
|
77
157
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
});
|
158
|
+
/!-[ Function BuildAPI ]-!/
|
159
|
+
|
160
|
+
async function buildAPI(globalOptions, html, jar) {
|
161
|
+
var maybeCookie = jar.getCookies("https://www.facebook.com").filter(function(val) { return val.cookieString().split("=")[0] === "c_user"; });
|
82
162
|
|
83
|
-
if (maybeCookie.length === 0) throw { error:
|
163
|
+
if (maybeCookie.length === 0) throw { error: Language.ErrAppState };
|
84
164
|
|
85
|
-
if (html.indexOf("/checkpoint/block/?next") > -1) log.warn("login",
|
165
|
+
if (html.indexOf("/checkpoint/block/?next") > -1) log.warn("login", Language.CheckPointLevelI);
|
86
166
|
|
87
167
|
var userID = maybeCookie[0].cookieString().split("=")[1].toString();
|
88
|
-
|
168
|
+
process.env['UID'] = userID;
|
89
169
|
|
90
170
|
try {
|
91
171
|
clearInterval(checkVerified);
|
92
|
-
} catch (
|
172
|
+
} catch (e) {
|
173
|
+
console.log(e);
|
174
|
+
}
|
93
175
|
|
94
176
|
var clientID = (Math.random() * 2147483648 | 0).toString(16);
|
95
177
|
|
@@ -103,39 +185,34 @@ function buildAPI(globalOptions, html, jar) {
|
|
103
185
|
irisSeqID = oldFBMQTTMatch[1];
|
104
186
|
mqttEndpoint = oldFBMQTTMatch[2];
|
105
187
|
region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
|
106
|
-
|
188
|
+
logger(getText.gettext(Language.Area, region), "[ FCA-SUS ]");
|
107
189
|
} else {
|
108
190
|
let newFBMQTTMatch = html.match(/{"app_id":"219994525426954","endpoint":"(.+?)","iris_seq_id":"(.+?)"}/);
|
109
191
|
if (newFBMQTTMatch) {
|
110
192
|
irisSeqID = newFBMQTTMatch[2];
|
111
193
|
mqttEndpoint = newFBMQTTMatch[1].replace(/\\\//g, "/");
|
112
194
|
region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
|
113
|
-
// log.info("login", `Got this account's message region: ${region}`);
|
114
195
|
} else {
|
115
196
|
let legacyFBMQTTMatch = html.match(/(\["MqttWebConfig",\[\],{fbid:")(.+?)(",appID:219994525426954,endpoint:")(.+?)(",pollingEndpoint:")(.+?)(3790])/);
|
116
197
|
if (legacyFBMQTTMatch) {
|
117
198
|
mqttEndpoint = legacyFBMQTTMatch[4];
|
118
199
|
region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
|
119
|
-
|
120
|
-
|
121
|
-
log.info("login", `[Unused] Polling endpoint: ${legacyFBMQTTMatch[6]}`);*/
|
200
|
+
log.warn("login", `Cannot get sequence ID with new RegExp. Fallback to old RegExp (without seqID)...`);
|
201
|
+
logger("login", `[Unused] Polling endpoint: ${legacyFBMQTTMatch[6]}`);
|
122
202
|
} else {
|
123
|
-
|
124
|
-
log.error("login", "» Please try closing and reopening your browser window or get new fbstate.");*/
|
203
|
+
log.warn("login", getText.gettext(Language.NoAreaData));
|
125
204
|
noMqttData = html;
|
126
|
-
process.exit();
|
127
205
|
}
|
128
206
|
}
|
129
207
|
}
|
130
208
|
|
131
|
-
// All data available to api functions
|
132
209
|
var ctx = {
|
133
210
|
userID: userID,
|
134
211
|
jar: jar,
|
135
212
|
clientID: clientID,
|
136
213
|
globalOptions: globalOptions,
|
137
214
|
loggedIn: true,
|
138
|
-
access_token: '
|
215
|
+
access_token: 'none',
|
139
216
|
clientMutationId: 0,
|
140
217
|
mqttClient: undefined,
|
141
218
|
lastSeqId: irisSeqID,
|
@@ -154,67 +231,12 @@ function buildAPI(globalOptions, html, jar) {
|
|
154
231
|
|
155
232
|
if (noMqttData) api["htmlData"] = noMqttData;
|
156
233
|
|
157
|
-
const apiFuncNames =
|
158
|
-
'addExternalModule',
|
159
|
-
'addUserToGroup',
|
160
|
-
'changeAdminStatus',
|
161
|
-
'changeArchivedStatus',
|
162
|
-
'changeBio',
|
163
|
-
'changeBlockedStatus',
|
164
|
-
'changeGroupImage',
|
165
|
-
'changeNickname',
|
166
|
-
'chat',
|
167
|
-
'changeThreadColor',
|
168
|
-
'changeThreadEmoji',
|
169
|
-
'createNewGroup',
|
170
|
-
'createPoll',
|
171
|
-
'deleteMessage',
|
172
|
-
'deleteThread',
|
173
|
-
'forwardAttachment',
|
174
|
-
'getCurrentUserID',
|
175
|
-
'getEmojiUrl',
|
176
|
-
'getFriendsList',
|
177
|
-
'getThreadHistory',
|
178
|
-
'getThreadInfo',
|
179
|
-
'getThreadList',
|
180
|
-
'getThreadPictures',
|
181
|
-
'getUserID',
|
182
|
-
'getUserInfo',
|
183
|
-
'handleFriendRequest',
|
184
|
-
'handleMessageRequest',
|
185
|
-
'listenMqtt',
|
186
|
-
'logout',
|
187
|
-
'markAsDelivered',
|
188
|
-
'markAsRead',
|
189
|
-
'markAsReadAll',
|
190
|
-
'markAsSeen',
|
191
|
-
'muteThread',
|
192
|
-
'removeUserFromGroup',
|
193
|
-
'resolvePhotoUrl',
|
194
|
-
'searchForThread',
|
195
|
-
'sendMessage',
|
196
|
-
'sendTypingIndicator',
|
197
|
-
'setMessageReaction',
|
198
|
-
'setTitle',
|
199
|
-
'threadColors',
|
200
|
-
'unsendMessage',
|
201
|
-
'unfriend',
|
202
|
-
|
203
|
-
// HTTP
|
204
|
-
'httpGet',
|
205
|
-
'httpPost',
|
206
|
-
|
207
|
-
// Deprecated features
|
208
|
-
"getThreadListDeprecated",
|
209
|
-
'getThreadHistoryDeprecated',
|
210
|
-
'getThreadInfoDeprecated',
|
211
|
-
];
|
234
|
+
const apiFuncNames = fs.readdirSync(__dirname + "/src").filter((File) => File.endsWith(".js") && !File.includes('Dev'));
|
212
235
|
|
213
236
|
var defaultFuncs = utils.makeDefaults(html, userID, ctx);
|
214
237
|
|
215
238
|
// Load all api functions in a loop
|
216
|
-
apiFuncNames.map(v => api[v] = require('./src/' + v)(defaultFuncs, api, ctx));
|
217
|
-
|
239
|
+
apiFuncNames.map(v => api[v.replace(".js", "")] = require('./src/' + v)(defaultFuncs, api, ctx));
|
218
240
|
return [ctx, defaultFuncs, api];
|
219
241
|
}
|
220
242
|
|
@@ -259,17 +281,15 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
259
281
|
});
|
260
282
|
// ---------- Very Hacky Part Ends -----------------
|
261
283
|
|
262
|
-
//log.info("login", "Logging in...");
|
263
284
|
return utils
|
264
285
|
.post("https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110", jar, form, loginOptions)
|
265
286
|
.then(utils.saveCookies(jar))
|
266
287
|
.then(function(res) {
|
267
288
|
var headers = res.headers;
|
268
|
-
if (!headers.location) throw { error:
|
289
|
+
if (!headers.location) throw { error: Language.InvaildAccount };
|
269
290
|
|
270
291
|
// This means the account has login approvals turned on.
|
271
292
|
if (headers.location.indexOf('https://www.facebook.com/checkpoint/') > -1) {
|
272
|
-
log.info("login", "You have login approvals turned on.");
|
273
293
|
var nextURL = 'https://www.facebook.com/checkpoint/?next=https%3A%2F%2Fwww.facebook.com%2Fhome.php';
|
274
294
|
|
275
295
|
return utils
|
@@ -316,7 +336,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
316
336
|
if (error) {
|
317
337
|
throw {
|
318
338
|
error: 'login-approval',
|
319
|
-
errordesc:
|
339
|
+
errordesc: Language.InvaildTwoAuthCode,
|
320
340
|
lerror: error,
|
321
341
|
continue: submit2FA
|
322
342
|
};
|
@@ -326,13 +346,13 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
326
346
|
// Use the same form (safe I hope)
|
327
347
|
delete form.no_fido;
|
328
348
|
delete form.approvals_code;
|
329
|
-
form.name_action_selected = '
|
349
|
+
form.name_action_selected = 'save_device'; //'save_device' || 'dont_save;
|
330
350
|
|
331
351
|
return utils.post(nextURL, jar, form, loginOptions).then(utils.saveCookies(jar));
|
332
352
|
})
|
333
353
|
.then(function(res) {
|
334
354
|
var headers = res.headers;
|
335
|
-
if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error:
|
355
|
+
if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error: Language.ApprovalsErr };
|
336
356
|
|
337
357
|
var appState = utils.getAppState(jar);
|
338
358
|
|
@@ -361,7 +381,6 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
361
381
|
JSON.parse(res.body.replace(/for\s*\(\s*;\s*;\s*\)\s*;\s*/, ""));
|
362
382
|
} catch (ex) {
|
363
383
|
clearInterval(checkVerified);
|
364
|
-
log.info("login", "Verified from browser. Logging in...");
|
365
384
|
if (callback === prCallback) {
|
366
385
|
callback = function(err, api) {
|
367
386
|
if (err) return prReject(err);
|
@@ -381,7 +400,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
381
400
|
}
|
382
401
|
};
|
383
402
|
} else {
|
384
|
-
if (!loginOptions.forceLogin) throw { error:
|
403
|
+
if (!loginOptions.forceLogin) throw { error: Language.ForceLoginNotEnable };
|
385
404
|
|
386
405
|
if (html.indexOf("Suspicious Login Attempt") > -1) form['submit[This was me]'] = "This was me";
|
387
406
|
else form['submit[This Is Okay]'] = "This Is Okay";
|
@@ -416,33 +435,496 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
416
435
|
};
|
417
436
|
}
|
418
437
|
|
438
|
+
function makeid(length) {
|
439
|
+
var result = '';
|
440
|
+
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
441
|
+
var charactersLength = characters.length;
|
442
|
+
for (var i = 0; i < length; i++) {
|
443
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
444
|
+
}
|
445
|
+
return result;
|
446
|
+
}
|
447
|
+
|
448
|
+
|
419
449
|
// Helps the login
|
420
|
-
function loginHelper(appState, email, password, globalOptions, callback, prCallback) {
|
450
|
+
async function loginHelper(appState, email, password, globalOptions, callback, prCallback) {
|
421
451
|
var mainPromise = null;
|
422
452
|
var jar = utils.getJar();
|
423
453
|
|
424
454
|
// If we're given an appState we loop through it and save each cookie
|
425
455
|
// back into the jar.
|
426
|
-
|
427
|
-
appState
|
428
|
-
|
429
|
-
|
430
|
-
|
456
|
+
try {
|
457
|
+
if (appState) {
|
458
|
+
//const readline = require("readline");
|
459
|
+
//const chalk = require("chalk");
|
460
|
+
//const figlet = require("figlet");
|
461
|
+
//const os = require("os");
|
462
|
+
//const { execSync } = require('child_process');
|
463
|
+
// let rl = readline.createInterface({
|
464
|
+
// input: process.stdin,
|
465
|
+
// output: process.stdout,
|
466
|
+
// prompt: chalk.hex('#00CCCC').bold('[FCA-SUS] • ')
|
467
|
+
// });
|
468
|
+
// let type = {
|
469
|
+
// 1: {
|
470
|
+
// "name": "Tạo Mật Khẩu Cho Appstate",
|
471
|
+
// onRun: async function() {
|
472
|
+
// try {
|
473
|
+
// rl.question("Hãy Nhập Mật Khẩu Bạn Muốn Đặt Cho Appstate !", (answer) => {
|
474
|
+
// console.log("Được Rồi Mật Khẩu Của Bạn Là: " + answer + ", Bạn Hãy Nhớ Kĩ Nhé !");
|
475
|
+
// process.env["FBKEY"] = answer;
|
476
|
+
// fs.writeFile('../.env', `FBKEY=${answer}`, function (err) {
|
477
|
+
// if (err) {
|
478
|
+
// submiterr(err)
|
479
|
+
// logger("Tạo File ENV Thất Bại !", "[ FCA-SUS ]")
|
480
|
+
// rl.pause();
|
481
|
+
// }
|
482
|
+
// else logger("Tạo Thành Công File ENV !","[ FCA-SUS ]")
|
483
|
+
// rl.pause();
|
484
|
+
// });
|
485
|
+
// })
|
486
|
+
// }
|
487
|
+
// catch (e) {
|
488
|
+
// console.log(e);
|
489
|
+
// logger("Đã Có Lỗi Khi Đang Try Tạo Ra Câu Hỏi =))", "[ FCA-SUS ]");
|
490
|
+
// rl.pause();
|
491
|
+
// }
|
492
|
+
// }
|
493
|
+
// },
|
494
|
+
// 2: {
|
495
|
+
// "name": "Tiếp Tục Chạy Fca Mà Không Cần Mã Hóa AppState",
|
496
|
+
// onRun: async function () {
|
497
|
+
// rl.pause();
|
498
|
+
// }
|
499
|
+
// },
|
500
|
+
// 3: {
|
501
|
+
// "name": "Đổi Mật Khẩu AppState (Comming Soon..)",
|
502
|
+
// onRun: async function () {
|
503
|
+
// console.log(chalk.red.bold("Đã bảo là comming soon rồi mà >:v"));
|
504
|
+
// }
|
505
|
+
// }
|
506
|
+
// }
|
507
|
+
// const localbrand = JSON.parse(readFileSync('./package.json')).name;
|
508
|
+
// const localbrand2 = JSON.parse(readFileSync('./node_modules/fca-sus/package.json')).version;
|
509
|
+
// var axios = require('axios');
|
510
|
+
// axios.get('https://raw.githubusercontent.com/amogusdevlol/fca-sus/main/package.json').then(async (res) => {
|
511
|
+
// if (localbrand.toUpperCase() == 'HORIZON') {
|
512
|
+
// console.group(chalk.bold.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'))
|
513
|
+
// console.log(chalk.bold.hex('#00FFCC')("[</>]") + chalk.bold.yellow(' => ') + "Hệ Điều Hành: " + chalk.bold.red(os.type()));
|
514
|
+
// console.log(chalk.bold.hex('#00FFCC')("[</>]") + chalk.bold.yellow(' => ') + "Thông Tin Máy: " + chalk.bold.red(os.version()));
|
515
|
+
// console.log(chalk.bold.hex('#00FFCC')("[</>]") + chalk.bold.yellow(' => ') + "Phiên Bản Hiện Tại: " + chalk.bold.red(localbrand2));
|
516
|
+
// console.log(chalk.bold.hex('#00FFCC')("[</>]") + chalk.bold.yellow(' => ') + "Phiên Bản Mới Nhất: " + chalk.bold.red(res.data.version));
|
517
|
+
// console.groupEnd();
|
518
|
+
// }
|
519
|
+
// else {
|
520
|
+
// console.clear();
|
521
|
+
// console.log(figlet.textSync('TeamHorizon', {font: 'ANSI Shadow',horizontalLayout: 'default',verticalLayout: 'default',width: 0,whitespaceBreak: true }))
|
522
|
+
// console.log(chalk.hex('#9966CC')(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`));
|
523
|
+
// }
|
524
|
+
// });
|
431
525
|
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
526
|
+
var backup = async(data) => {
|
527
|
+
if (fs.existsSync('./alicestate.json')) {
|
528
|
+
try {
|
529
|
+
fs.writeFileSync('./alicestate.json', data);
|
530
|
+
} catch (e) {
|
531
|
+
fs.writeFileSync('./alicestate.json', JSON.stringify(data, null, "\t"));
|
532
|
+
}
|
533
|
+
await new Promise(resolve => setTimeout(resolve, 5 * 1000));
|
534
|
+
process.exit(1);
|
535
|
+
} else return logger.Error();
|
536
|
+
}
|
537
|
+
|
538
|
+
switch (process.platform) {
|
539
|
+
case "win32":
|
540
|
+
{
|
541
|
+
try {
|
542
|
+
var { body } = await Fetch('https://decrypt-appstate-production.up.railway.app/getKey');
|
543
|
+
process.env['FBKEY'] = JSON.parse(body).Data;
|
544
|
+
} catch (e) {
|
545
|
+
logger(Language.ErrGetPassWord);
|
546
|
+
logger.Error();
|
547
|
+
process.exit(1);
|
548
|
+
}
|
549
|
+
}
|
550
|
+
break;
|
551
|
+
case "linux":
|
552
|
+
{
|
553
|
+
if (process.env["REPL_ID"] == undefined) {
|
554
|
+
try {
|
555
|
+
var { body } = await Fetch.get('https://decrypt-appstate-production.up.railway.app/getKey');
|
556
|
+
process.env['FBKEY'] = JSON.parse(body).Data;
|
557
|
+
} catch (e) {
|
558
|
+
logger.Error();
|
559
|
+
process.exit(1);
|
560
|
+
}
|
561
|
+
} else {
|
562
|
+
/* try {
|
563
|
+
const client = new Client();
|
564
|
+
let key = await client.get("FBKEY");
|
565
|
+
if (!key) {
|
566
|
+
await client.set("FBKEY", makeid(49));
|
567
|
+
let key = await client.get("FBKEY");
|
568
|
+
process.env['FBKEY'] = key;
|
569
|
+
} else {
|
570
|
+
process.env['FBKEY'] = key;
|
571
|
+
}
|
572
|
+
} catch (e) {
|
573
|
+
logger(Language.ErrGenerateKey, '[ FCA-SUS ]');
|
574
|
+
logger(e, '[ FCA-SUS ]');
|
575
|
+
logger.Error();
|
576
|
+
process.exit(0)
|
577
|
+
}*/
|
578
|
+
}
|
579
|
+
}
|
580
|
+
break;
|
581
|
+
case "android":
|
582
|
+
{
|
583
|
+
try {
|
584
|
+
var { body } = await Fetch.get('https://decrypt-appstate-production.up.railway.app/getKey');
|
585
|
+
process.env['FBKEY'] = JSON.parse(body).Data;
|
586
|
+
} catch (e) {
|
587
|
+
|
588
|
+
return logger.Error();
|
589
|
+
}
|
590
|
+
}
|
591
|
+
break;
|
592
|
+
default:
|
593
|
+
{
|
594
|
+
|
595
|
+
logger.Error();
|
596
|
+
process.exit(0);
|
597
|
+
}
|
598
|
+
}
|
445
599
|
|
600
|
+
try {
|
601
|
+
switch (require("../../FastConfigFca.json").EncryptFeature) {
|
602
|
+
case true:
|
603
|
+
{
|
604
|
+
appState = JSON.parse(JSON.stringify(appState, null, "\t"));
|
605
|
+
switch (utils.getType(appState)) {
|
606
|
+
case "Array":
|
607
|
+
{
|
608
|
+
|
609
|
+
}
|
610
|
+
break;
|
611
|
+
case "String":
|
612
|
+
{
|
613
|
+
try {
|
614
|
+
appState = StateCrypt.decryptState(appState, process.env['FBKEY']);
|
615
|
+
logger(Language.DecryptSuccess, '[ FCA-SUS ]');
|
616
|
+
} catch (e) {
|
617
|
+
if (process.env.Backup != undefined && process.env.Backup) {
|
618
|
+
backup(process.env.Backup);
|
619
|
+
} else switch (process.platform) {
|
620
|
+
case "win32":
|
621
|
+
{
|
622
|
+
try {
|
623
|
+
if (fs.existsSync('./backupappstate.json')) {
|
624
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
625
|
+
return backup(content);
|
626
|
+
}
|
627
|
+
} catch (e) {
|
628
|
+
|
629
|
+
logger.Error();
|
630
|
+
process.exit(0);
|
631
|
+
}
|
632
|
+
}
|
633
|
+
break;
|
634
|
+
case "linux":
|
635
|
+
{
|
636
|
+
if (process.env["REPL_ID"] == undefined) {
|
637
|
+
try {
|
638
|
+
if (fs.existsSync('./backupappstate.json')) {
|
639
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
640
|
+
return backup(content);
|
641
|
+
}
|
642
|
+
} catch (e) {
|
643
|
+
//logger(Language.ErrBackup, '[ FCA-SUS ]');
|
644
|
+
logger.Error();
|
645
|
+
process.exit(0);
|
646
|
+
}
|
647
|
+
} else {
|
648
|
+
try {
|
649
|
+
const client = new Client();
|
650
|
+
let key = await client.get("Backup");
|
651
|
+
if (key) {
|
652
|
+
return backup(JSON.stringify(key));
|
653
|
+
} else {
|
654
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
655
|
+
}
|
656
|
+
} catch (e) {
|
657
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
658
|
+
}
|
659
|
+
}
|
660
|
+
}
|
661
|
+
break;
|
662
|
+
case "android":
|
663
|
+
{
|
664
|
+
try {
|
665
|
+
if (fs.existsSync('./backupappstate.json')) {
|
666
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
667
|
+
return backup(content);
|
668
|
+
}
|
669
|
+
} catch (e) {
|
670
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
671
|
+
logger.Error();
|
672
|
+
process.exit(0);
|
673
|
+
}
|
674
|
+
}
|
675
|
+
}
|
676
|
+
logger(Language.DecryptFailed, '[ FCA-SUS ]');
|
677
|
+
return logger.Error();
|
678
|
+
}
|
679
|
+
logger(getText.gettext(Language.YourAppStatePass, process.env.FBKEY), '[ FCA-SUS ]');
|
680
|
+
}
|
681
|
+
break;
|
682
|
+
default:
|
683
|
+
{
|
684
|
+
logger(Language.InvaildAppState, "[ FCA-SUS ]");
|
685
|
+
process.exit(0)
|
686
|
+
}
|
687
|
+
}
|
688
|
+
}
|
689
|
+
break;
|
690
|
+
case false:
|
691
|
+
{
|
692
|
+
switch (utils.getType(appState)) {
|
693
|
+
case "Array":
|
694
|
+
{
|
695
|
+
logger(Language.EncryptStateOff, "[ FCA-SUS ]");
|
696
|
+
}
|
697
|
+
break;
|
698
|
+
case "String":
|
699
|
+
{
|
700
|
+
logger(Language.EncryptStateOff, "[ FCA-SUS ]");
|
701
|
+
try {
|
702
|
+
appState = StateCrypt.decryptState(appState, process.env['FBKEY']);
|
703
|
+
logger(Language.DecryptSuccess, '[ FCA-SUS ]');
|
704
|
+
} catch (e) {
|
705
|
+
if (process.env.Backup != undefined && process.env.Backup) {
|
706
|
+
backup(process.env.Backup);
|
707
|
+
} else switch (process.platform) {
|
708
|
+
case "win32":
|
709
|
+
{
|
710
|
+
try {
|
711
|
+
if (fs.existsSync('./backupappstate.json')) {
|
712
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
713
|
+
return backup(content);
|
714
|
+
}
|
715
|
+
} catch (e) {
|
716
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
717
|
+
logger.Error();
|
718
|
+
process.exit(0);
|
719
|
+
}
|
720
|
+
}
|
721
|
+
break;
|
722
|
+
case "linux":
|
723
|
+
{
|
724
|
+
if (process.env["REPL_ID"] == undefined) {
|
725
|
+
try {
|
726
|
+
if (fs.existsSync('./backupappstate.json')) {
|
727
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
728
|
+
return backup(content);
|
729
|
+
}
|
730
|
+
} catch (e) {
|
731
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
732
|
+
logger.Error();
|
733
|
+
process.exit(0);
|
734
|
+
}
|
735
|
+
} else {
|
736
|
+
try {
|
737
|
+
const client = new Client();
|
738
|
+
let key = await client.get("Backup");
|
739
|
+
if (key) {
|
740
|
+
return backup(JSON.stringify(key));
|
741
|
+
} else {
|
742
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
743
|
+
}
|
744
|
+
} catch (e) {
|
745
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
746
|
+
}
|
747
|
+
}
|
748
|
+
}
|
749
|
+
break;
|
750
|
+
case "android":
|
751
|
+
{
|
752
|
+
try {
|
753
|
+
if (fs.existsSync('./backupappstate.json')) {
|
754
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
755
|
+
return backup(content);
|
756
|
+
}
|
757
|
+
} catch (e) {
|
758
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
759
|
+
logger.Error();
|
760
|
+
process.exit(0);
|
761
|
+
}
|
762
|
+
}
|
763
|
+
}
|
764
|
+
logger(Language.DecryptFailed, '[ FCA-SUS ]');
|
765
|
+
return logger.Error();
|
766
|
+
}
|
767
|
+
}
|
768
|
+
break;
|
769
|
+
default:
|
770
|
+
{
|
771
|
+
logger(Language.InvaildAppState, "[ FCA-SUS ]");
|
772
|
+
process.exit(0)
|
773
|
+
}
|
774
|
+
}
|
775
|
+
}
|
776
|
+
break;
|
777
|
+
default:
|
778
|
+
{
|
779
|
+
logger(getText.gettext(Language.IsNotABoolean, require("../../FastConfigFca.json").EncryptFeature), "[ FCA-SUS ]")
|
780
|
+
process.exit(0);
|
781
|
+
}
|
782
|
+
}
|
783
|
+
} catch (e) {
|
784
|
+
console.log(e);
|
785
|
+
}
|
786
|
+
|
787
|
+
try {
|
788
|
+
appState = JSON.parse(appState);
|
789
|
+
} catch (e) {
|
790
|
+
try {
|
791
|
+
appState = appState;
|
792
|
+
} catch (e) {
|
793
|
+
return logger.Error();
|
794
|
+
}
|
795
|
+
}
|
796
|
+
try {
|
797
|
+
appState.map(function(c) {
|
798
|
+
var str = c.key + "=" + c.value + "; expires=" + c.expires + "; domain=" + c.domain + "; path=" + c.path + ";";
|
799
|
+
jar.setCookie(str, "http://" + c.domain);
|
800
|
+
});
|
801
|
+
switch (process.platform) {
|
802
|
+
case "win32":
|
803
|
+
{
|
804
|
+
try {
|
805
|
+
fs.writeFileSync("./backupappstate.json", JSON.stringify(appState, null, "\t"));
|
806
|
+
process.env.Backup = JSON.stringify(appState, null, "\t");
|
807
|
+
} catch (e) {
|
808
|
+
logger(Language.BackupFailed, '[ FCA-SUS ]');
|
809
|
+
}
|
810
|
+
}
|
811
|
+
break;
|
812
|
+
case "linux":
|
813
|
+
{
|
814
|
+
if (process.env["REPL_ID"] == undefined) {
|
815
|
+
try {
|
816
|
+
fs.writeFileSync("./backupappstate.json", JSON.stringify(appState, null, "\t"));
|
817
|
+
process.env.Backup = JSON.stringify(appState, null, "\t");
|
818
|
+
} catch (e) {
|
819
|
+
logger(Language.BackupFailed, '[ FCA-SUS ]');
|
820
|
+
}
|
821
|
+
} else {
|
822
|
+
try {
|
823
|
+
if (fs.existsSync('./backupappstate.json')) {
|
824
|
+
fs.unlinkSync('./backupappstate.json');
|
825
|
+
}
|
826
|
+
const client = new Client();
|
827
|
+
await client.set("Backup", appState);
|
828
|
+
process.env.Backup = JSON.stringify(appState, null, "\t");
|
829
|
+
} catch (e) {
|
830
|
+
logger(Language.BackupFailed, '[ FCA-SUS ]');
|
831
|
+
}
|
832
|
+
}
|
833
|
+
}
|
834
|
+
break;
|
835
|
+
case "android":
|
836
|
+
{
|
837
|
+
try {
|
838
|
+
fs.writeFileSync("./backupappstate.json", JSON.stringify(appState, null, "\t"));
|
839
|
+
process.env.Backup = JSON.stringify(appState, null, "\t");
|
840
|
+
} catch (e) {
|
841
|
+
logger(Language.BackupFailed, '[ FCA-SUS ]');
|
842
|
+
}
|
843
|
+
}
|
844
|
+
}
|
845
|
+
|
846
|
+
mainPromise = utils.get('https://www.facebook.com/', jar, null, globalOptions, { noRef: true }).then(utils.saveCookies(jar));
|
847
|
+
} catch (e) {
|
848
|
+
|
849
|
+
if (process.env.Backup != undefined && process.env.Backup) {
|
850
|
+
return backup(process.env.Backup);
|
851
|
+
}
|
852
|
+
switch (process.platform) {
|
853
|
+
case "win32":
|
854
|
+
{
|
855
|
+
try {
|
856
|
+
if (fs.existsSync('./backupappstate.json')) {
|
857
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
858
|
+
return backup(content);
|
859
|
+
}
|
860
|
+
} catch (e) {
|
861
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
862
|
+
logger.Error();
|
863
|
+
process.exit(0);
|
864
|
+
}
|
865
|
+
}
|
866
|
+
break;
|
867
|
+
case "linux":
|
868
|
+
{
|
869
|
+
if (process.env["REPL_ID"] == undefined) {
|
870
|
+
try {
|
871
|
+
if (fs.existsSync('./backupappstate.json')) {
|
872
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
873
|
+
return backup(content);
|
874
|
+
}
|
875
|
+
} catch (e) {
|
876
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
877
|
+
logger.Error();
|
878
|
+
process.exit(0);
|
879
|
+
}
|
880
|
+
} else {
|
881
|
+
try {
|
882
|
+
const client = new Client();
|
883
|
+
let key = await client.get("Backup");
|
884
|
+
if (key) {
|
885
|
+
backup(JSON.stringify(key));
|
886
|
+
} else {
|
887
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
888
|
+
}
|
889
|
+
} catch (e) {
|
890
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
891
|
+
}
|
892
|
+
}
|
893
|
+
}
|
894
|
+
break;
|
895
|
+
case "android":
|
896
|
+
{
|
897
|
+
try {
|
898
|
+
if (fs.existsSync('./backupappstate.json')) {
|
899
|
+
let content = fs.readFileSync('./backupappstate.json', 'utf8');
|
900
|
+
return backup(content);
|
901
|
+
}
|
902
|
+
} catch (e) {
|
903
|
+
logger(Language.ErrBackup, '[ FCA-SUS ]');
|
904
|
+
logger.Error();
|
905
|
+
process.exit(0);
|
906
|
+
}
|
907
|
+
}
|
908
|
+
break;
|
909
|
+
}
|
910
|
+
|
911
|
+
console.log(e);
|
912
|
+
return //logger(Language.ScreenShotConsoleAndSendToAdmin, '[ FCA-SUS ]');
|
913
|
+
}
|
914
|
+
} else {
|
915
|
+
// Open the main page, then we login with the given credentials and finally
|
916
|
+
// load the main page again (it'll give us some IDs that we need)
|
917
|
+
mainPromise = utils
|
918
|
+
.get("https://www.facebook.com/", null, null, globalOptions, { noRef: true })
|
919
|
+
.then(utils.saveCookies(jar))
|
920
|
+
.then(makeLogin(jar, email, password, globalOptions, callback, prCallback))
|
921
|
+
.then(function() {
|
922
|
+
return utils.get('https://www.facebook.com/', jar, null, globalOptions).then(utils.saveCookies(jar));
|
923
|
+
});
|
924
|
+
}
|
925
|
+
} catch (e) {
|
926
|
+
console.log(e);
|
927
|
+
}
|
446
928
|
var ctx = null;
|
447
929
|
var _defaultFuncs = null;
|
448
930
|
var api = null;
|
@@ -455,15 +937,14 @@ function loginHelper(appState, email, password, globalOptions, callback, prCallb
|
|
455
937
|
if (redirect && redirect[1]) return utils.get(redirect[1], jar, null, globalOptions).then(utils.saveCookies(jar));
|
456
938
|
return res;
|
457
939
|
})
|
458
|
-
.then(function(res) {
|
940
|
+
.then(async function(res) {
|
459
941
|
var html = res.body;
|
460
|
-
var stuff = buildAPI(globalOptions, html, jar);
|
942
|
+
var stuff = await buildAPI(globalOptions, html, jar);
|
461
943
|
ctx = stuff[0];
|
462
944
|
_defaultFuncs = stuff[1];
|
463
945
|
api = stuff[2];
|
464
946
|
return res;
|
465
947
|
});
|
466
|
-
|
467
948
|
// given a pageID we log in as a page
|
468
949
|
if (globalOptions.pageID) {
|
469
950
|
mainPromise = mainPromise
|
@@ -480,13 +961,57 @@ function loginHelper(appState, email, password, globalOptions, callback, prCallb
|
|
480
961
|
// At the end we call the callback or catch an exception
|
481
962
|
mainPromise
|
482
963
|
.then(function() {
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
964
|
+
/*logger(Language.DoneLogin, "[ FCA-SUS ]");
|
965
|
+
logger(Language.AutoCheckUpdate, "[ FCA-SUS ]");*/
|
966
|
+
//!---------- Auto Check, Update START -----------------!//
|
967
|
+
var Fetch = require('got');
|
968
|
+
var { readFileSync } = require('fs-extra');
|
969
|
+
const { execSync } = require('child_process');
|
970
|
+
Fetch('https://raw.githubusercontent.com/amogusdevlol/node-ainzfb/main/package.json').then(async(res) => {
|
971
|
+
const localbrand = JSON.parse(readFileSync('./node_modules/node-ainzfb-new/package.json')).version;
|
972
|
+
if (Number(localbrand.replace(/\./g, "")) < Number(JSON.parse(res.body.toString()).version.replace(/\./g, ""))) {
|
973
|
+
// log.warn("[ FCA-SUS ] •", getText.gettext(Language.NewVersionFound, JSON.parse(readFileSync('./node_modules/node-ainzfb/package.json')).version, JSON.parse(res.body.toString()).version));
|
974
|
+
log.warn("[ FCA-SUS ] •", Language.AutoUpdate);
|
975
|
+
try {
|
976
|
+
execSync('npm install node-ainzfb-new@latest', { stdio: 'inherit' });
|
977
|
+
logger(Language.UpdateSuccess, "[ FCA-SUS ]")
|
978
|
+
logger(Language.RestartAfterUpdate, '[ FCA-SUS ]');
|
979
|
+
await new Promise(resolve => setTimeout(resolve, 5 * 1000));
|
980
|
+
console.clear();
|
981
|
+
process.exit(1);
|
982
|
+
} catch (err) {
|
983
|
+
log.warn('Error Update: ' + err);
|
984
|
+
logger(Language.UpdateFailed, "[ FCA-SUS ]");
|
985
|
+
try {
|
986
|
+
require.resolve('sus-support');
|
987
|
+
} catch (e) {
|
988
|
+
logger(Language.InstallSupportTool, "[ FCA-SUS ]");
|
989
|
+
execSync('npm install git+https://github.com/amogusdevlol/sus-support.git', { stdio: 'inherit' });
|
990
|
+
process.exit(1);
|
991
|
+
}
|
992
|
+
var fcasp = require('sus-support');
|
993
|
+
try {
|
994
|
+
fcasp.onError()
|
995
|
+
} catch (e) {
|
996
|
+
//logger(Language.NotiAfterUseToolFail, "[ Fca - Helper ]")
|
997
|
+
//logger("rmdir ./node_modules then enter npm i && npm start", "[ Fca - Helper ]");
|
998
|
+
process.exit(0);
|
999
|
+
}
|
1000
|
+
|
1001
|
+
}
|
1002
|
+
} else {
|
1003
|
+
/*logger(getText.gettext(Language.LocalVersion, localbrand), "[ FCA-SUS ]");
|
1004
|
+
logger(Language.WishMessage[Math.floor(Math.random() * Language.WishMessage.length)], "[ FCA-SUS ]");*/
|
1005
|
+
require('./Extra/ExtraUptimeRobot')()
|
1006
|
+
await new Promise(resolve => setTimeout(resolve, 5 * 1000));
|
1007
|
+
callback(null, api);
|
1008
|
+
}
|
1009
|
+
});
|
1010
|
+
}).catch(function(e) {
|
487
1011
|
log.error("login", e.error || e);
|
488
1012
|
callback(e);
|
489
1013
|
});
|
1014
|
+
//!---------- Auto Check, Update END -----------------!//
|
490
1015
|
}
|
491
1016
|
|
492
1017
|
function login(loginData, options, callback) {
|
@@ -502,14 +1027,17 @@ function login(loginData, options, callback) {
|
|
502
1027
|
updatePresence: false,
|
503
1028
|
forceLogin: false,
|
504
1029
|
autoMarkDelivery: false,
|
505
|
-
autoMarkRead:
|
1030
|
+
autoMarkRead: false,
|
506
1031
|
autoReconnect: true,
|
507
|
-
logRecordSize:
|
1032
|
+
logRecordSize: 100,
|
508
1033
|
online: false,
|
509
1034
|
emitReady: false,
|
510
|
-
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X
|
1035
|
+
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8"
|
511
1036
|
};
|
512
1037
|
|
1038
|
+
//! bằng 1 cách nào đó tắt online sẽ đánh lừa được facebook :v
|
1039
|
+
//! phải có that có this chứ :v
|
1040
|
+
|
513
1041
|
setOptions(globalOptions, options);
|
514
1042
|
|
515
1043
|
var prCallback = null;
|
@@ -530,4 +1058,11 @@ function login(loginData, options, callback) {
|
|
530
1058
|
return returnPromise;
|
531
1059
|
}
|
532
1060
|
|
533
|
-
module.exports =
|
1061
|
+
module.exports = alice;
|
1062
|
+
|
1063
|
+
|
1064
|
+
|
1065
|
+
|
1066
|
+
|
1067
|
+
|
1068
|
+
|