fca-dragon 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/.gitattributes +2 -0
  2. package/Extra/Bypass/956/index.js +234 -0
  3. package/Extra/Bypass/test/aaaa.json +170 -0
  4. package/Extra/Bypass/test/index.js +188 -0
  5. package/Extra/Database/index.js +469 -0
  6. package/Extra/ExtraAddons.js +82 -0
  7. package/Extra/ExtraFindUID.js +62 -0
  8. package/Extra/ExtraGetThread.js +365 -0
  9. package/Extra/ExtraScreenShot.js +430 -0
  10. package/Extra/ExtraUptimeRobot.js +38 -0
  11. package/Extra/Html/Classic/script.js +119 -0
  12. package/Extra/Html/Classic/style.css +8 -0
  13. package/Extra/Security/AES_256_GCM/index.js +0 -0
  14. package/Extra/Security/Base/Step_1.js +6 -0
  15. package/Extra/Security/Base/Step_2.js +22 -0
  16. package/Extra/Security/Base/Step_3.js +22 -0
  17. package/Extra/Security/Base/index.js +191 -0
  18. package/Extra/Security/Index.js +5 -0
  19. package/Extra/Security/Step_1.js +6 -0
  20. package/Extra/Security/Step_2.js +22 -0
  21. package/Extra/Security/Step_3.js +22 -0
  22. package/Extra/Src/Change_Environment.js +24 -0
  23. package/Extra/Src/Check_Update.js +67 -0
  24. package/Extra/Src/History.js +115 -0
  25. package/Extra/Src/Instant_Update.js +65 -0
  26. package/Extra/Src/Last-Run.js +65 -0
  27. package/Extra/Src/Premium.js +81 -0
  28. package/Extra/Src/Release_Memory.js +160 -0
  29. package/Extra/Src/Websocket.js +213 -0
  30. package/Extra/Src/image/checkmate.jpg +0 -0
  31. package/Extra/Src/test.js +28 -0
  32. package/Extra/Src/uuid.js +137 -0
  33. package/FastConfigFca.json +56 -0
  34. package/Func/AcceptAgreement.js +31 -0
  35. package/Func/ClearCache.js +64 -0
  36. package/Func/ReportV1.js +54 -0
  37. package/LICENSE +21 -0
  38. package/Language/index.json +220 -0
  39. package/Main.js +1062 -0
  40. package/README.md +128 -0
  41. package/SECURITY.md +18 -0
  42. package/broadcast.js +44 -0
  43. package/index.js +428 -0
  44. package/logger.js +66 -0
  45. package/package.json +93 -0
  46. package/src/Dev_Horizon_Data.js +125 -0
  47. package/src/Dev_shareTest2.js +68 -0
  48. package/src/Dev_shareTest3.js +71 -0
  49. package/src/Premium.js +25 -0
  50. package/src/Screenshot.js +83 -0
  51. package/src/addExternalModule.js +16 -0
  52. package/src/addUserToGroup.js +79 -0
  53. package/src/changeAdminStatus.js +79 -0
  54. package/src/changeArchivedStatus.js +41 -0
  55. package/src/changeAvt.js +85 -0
  56. package/src/changeBio.js +65 -0
  57. package/src/changeBlockedStatus.js +36 -0
  58. package/src/changeGroupImage.js +106 -0
  59. package/src/changeNickname.js +45 -0
  60. package/src/changeThreadColor.js +62 -0
  61. package/src/changeThreadEmoji.js +42 -0
  62. package/src/createNewGroup.js +70 -0
  63. package/src/createPoll.js +60 -0
  64. package/src/deleteMessage.js +45 -0
  65. package/src/deleteThread.js +43 -0
  66. package/src/editMessage.js +53 -0
  67. package/src/forwardAttachment.js +48 -0
  68. package/src/getAccessToken.js +28 -0
  69. package/src/getCurrentUserID.js +7 -0
  70. package/src/getEmojiUrl.js +27 -0
  71. package/src/getFriendsList.js +73 -0
  72. package/src/getMessage.js +103 -0
  73. package/src/getThreadHistory.js +537 -0
  74. package/src/getThreadInfo.js +415 -0
  75. package/src/getThreadInfoOLD.js +422 -0
  76. package/src/getThreadList.js +213 -0
  77. package/src/getThreadMain.js +220 -0
  78. package/src/getThreadPictures.js +59 -0
  79. package/src/getUID.js +59 -0
  80. package/src/getUserID.js +62 -0
  81. package/src/getUserInfo.js +113 -0
  82. package/src/getUserInfoMain.js +65 -0
  83. package/src/getUserInfoV2.js +32 -0
  84. package/src/getUserInfoV3.js +63 -0
  85. package/src/getUserInfoV4.js +55 -0
  86. package/src/getUserInfoV5.js +61 -0
  87. package/src/handleFriendRequest.js +46 -0
  88. package/src/handleMessageRequest.js +49 -0
  89. package/src/httpGet.js +49 -0
  90. package/src/httpPost.js +48 -0
  91. package/src/httpPostFormData.js +41 -0
  92. package/src/listenMqtt.js +929 -0
  93. package/src/listenMqttV1.js +846 -0
  94. package/src/logout.js +68 -0
  95. package/src/markAsDelivered.js +48 -0
  96. package/src/markAsRead.js +70 -0
  97. package/src/markAsReadAll.js +43 -0
  98. package/src/markAsSeen.js +51 -0
  99. package/src/muteThread.js +47 -0
  100. package/src/removeUserFromGroup.js +49 -0
  101. package/src/resolvePhotoUrl.js +37 -0
  102. package/src/searchForThread.js +43 -0
  103. package/src/sendMessage.js +386 -0
  104. package/src/sendMqttMessage.js +71 -0
  105. package/src/sendTypingIndicator.js +80 -0
  106. package/src/setMessageReaction.js +109 -0
  107. package/src/setPostReaction.js +102 -0
  108. package/src/setTitle.js +74 -0
  109. package/src/shareContact.js +55 -0
  110. package/src/shareLink.js +58 -0
  111. package/src/threadColors.js +39 -0
  112. package/src/unfriend.js +43 -0
  113. package/src/unsendMessage.js +40 -0
  114. package/test/Database_Test.js +4 -0
  115. package/test/Db2.js +530 -0
  116. package/test/Horizon_Database/A_README.md +1 -0
  117. package/test/Horizon_Database/Database.db +0 -0
  118. package/test/data/shareAttach.js +146 -0
  119. package/test/data/something.mov +0 -0
  120. package/test/data/test.png +0 -0
  121. package/test/data/test.txt +7 -0
  122. package/test/env/.env +0 -0
  123. package/test/example-config.json +18 -0
  124. package/test/example-db.db +0 -0
  125. package/test/memoryleak.js +18 -0
  126. package/test/test-page.js +140 -0
  127. package/test/test.js +385 -0
  128. package/test/testname.js +1342 -0
  129. package/test/testv2.js +3 -0
  130. package/utils.js +3006 -0
@@ -0,0 +1,191 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs-extra');
4
+ const utils = require('../../../utils');
5
+ const logger = require('../../../logger');
6
+ const Step_3 = require('./Step_3');
7
+ const Database = require("../../Database");
8
+ const Already_Action = { First: 0, Encode: { Status: false, Data: Array }, Decode: { Status: false, Data: Array } };
9
+
10
+ var ArrPassWord;
11
+
12
+ if (!fs.existsSync(process.cwd() + '/Horizon_Database') || !fs.existsSync(process.cwd() + '/Horizon_Database/RandPass.json')) {
13
+ const crypto = require('crypto');
14
+ ArrPassWord = Array.from({length: 101}, (_,i) => crypto.randomBytes(5).toString('hex'));
15
+ if (Database().has('Security')) {
16
+ Database().delete('Security');
17
+ }
18
+ if (!fs.existsSync(process.cwd() + '/Horizon_Database')) {
19
+ fs.mkdirSync(process.cwd() + '/Horizon_Database');
20
+ }
21
+ fs.writeFileSync(process.cwd() + '/Horizon_Database/RandPass.json', JSON.stringify(ArrPassWord, null, 2), 'utf8');
22
+ }
23
+
24
+ else {
25
+ ArrPassWord = JSON.stringify(fs.readFileSync(process.cwd() + '/Horizon_Database/RandPass.json'));
26
+ }
27
+
28
+ /**
29
+ * It creates a random string of a given length
30
+ * @param length - The length of the string to be generated.
31
+ * @returns A string of random characters.
32
+ */
33
+
34
+ function CreateFakeType2(length) {
35
+ var result = '';
36
+ var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+0123456789';
37
+ var charactersLength = characters.length;
38
+ for ( var i = 0; i < length; i++ ) result += characters.charAt(Math.floor(Math.random() * charactersLength));
39
+ return result;
40
+ }
41
+
42
+ /**
43
+ * It returns a random number between the min and max values.
44
+ * @param min - The minimum number that can be generated.
45
+ * @param max - The maximum number that can be generated.
46
+ * @returns A random number between the min and max values.
47
+ */
48
+
49
+ function Between(min, max) {
50
+ return parseInt(Math.random() * (max - min) + min);
51
+ }
52
+
53
+ /**
54
+ * It creates a random number between 0 and 90, then subtracts a random number between 10 and 33 from
55
+ * it, and then adds 10 to it.
56
+ *
57
+ * So, the result is a number between -23 and 90.
58
+ *
59
+ * The function also creates a random number between 10 and 70, and a random number between 10 and 33.
60
+ *
61
+ * The function returns an object with the following properties:
62
+ *
63
+ * Security: the random number between 0 and 90
64
+ * Previous: the random number between -23 and 90
65
+ * Secret: the random number between 10 and 33
66
+ * Number: the random number between 10 and 70
67
+ * @returns An object with the following properties:
68
+ */
69
+
70
+ function CreateSecurity() {
71
+ var Security = Between(0,90);
72
+ var Secret = Between(10,33);
73
+ return {
74
+ Security: Security,
75
+ Previous: parseInt(Security) - Secret,//after + (10) main + random
76
+ Secret: Secret, // save
77
+ Number: Between(10,50) // vị trí của real appstate trừ 10
78
+ };
79
+ }
80
+
81
+ /**
82
+ * It checks if the file exists, if it doesn't, it creates it and writes some data to it. If it does
83
+ * exist, it reads the data from it and returns it
84
+ * @param DefaultPassWord - The password you want to use.
85
+ * @returns An object with the following properties:
86
+ */
87
+
88
+ function CheckAndParse(DefaultPassWord) {
89
+ var PassWord = new Array();
90
+ if (!DefaultPassWord) return logger.Warning("DefaultPassWord Is Requirements",function() { process.exit(0); });
91
+ try {
92
+ if (!Database().has('Security')) {
93
+ let Obj = CreateSecurity();
94
+ Database().set('Security',JSON.stringify(Obj));
95
+ for (let i = 1; i < 10; i ++) PassWord.push(ArrPassWord[parseInt(Obj.Security) + parseInt(i)]);
96
+ return { PassWord: String(DefaultPassWord) + "-" + String(PassWord.join('-')), Slot: Obj.Number ,Security: Obj.Security, Previous: Obj.Previous, Secret: Obj.Secret };
97
+ }
98
+ else {
99
+ var Data = JSON.parse(Database().get('Security'));
100
+ if (utils.getType(Data) == "Object") {
101
+ if (!Data.Security || !Data.Previous || !Data.Secret || !Data.Number) {
102
+ logger.Error('Data Deficit Detection, Reset Data');
103
+ let Obj = CreateSecurity();
104
+ Database().set('Security',JSON.stringify(Obj));
105
+ for (let i = 1; i < 10; i ++) PassWord.push(ArrPassWord[parseInt(Obj.Security) + parseInt(i)]);
106
+ return { PassWord: String(DefaultPassWord) + "-" + String(PassWord.join('-')), Slot: Obj.Number ,Security: Obj.Security, Previous: Obj.Previous, Secret: Obj.Secret };
107
+ }
108
+ else {
109
+ for (let i = 1; i < 10; i ++) PassWord.push(ArrPassWord[parseInt(Data.Security) + parseInt(i)]);
110
+ return { PassWord: String(DefaultPassWord) + "-" + String(PassWord.join('-')), Slot: Data.Number ,Security: Data.Security, Previous: Data.Previous, Secret: Data.Secret };
111
+ }
112
+ }
113
+ }
114
+ }
115
+ catch (e) {
116
+ logger.Error("Something went wrong: " + e, function() {
117
+ let Obj = CreateSecurity();
118
+ Database().set('Security',JSON.stringify(Obj));
119
+ for (let i = 1; i < 10; i ++) PassWord.push(ArrPassWord[parseInt(Obj.Security) + parseInt(i)]);
120
+ return { PassWord: String(DefaultPassWord) + "-" + String(PassWord.join('-')), Slot: Obj.Number ,Security: Obj.Security, Previous: Obj.Previous, Secret: Obj.Secret };
121
+ });
122
+ }
123
+ }
124
+
125
+ /**
126
+ * CreatePassWord() takes a string and an object as arguments, and returns a string.
127
+ * @param DefaultPassWord - The default password that you want to use.
128
+ * @param ParseObj - This is the object that is being parsed.
129
+ * @returns A string of the DefaultPassWord and the PassWord array joined by a dash.
130
+ */
131
+
132
+ function CreatePassWord(DefaultPassWord,ParseObj) {
133
+ var PassWord = new Array();
134
+ for (let i = 1; i < 10; i ++) PassWord.push(ArrPassWord[parseInt(ParseObj.Security) + parseInt(i)]);
135
+ return String(DefaultPassWord) + "-" + String(PassWord.join('-'));
136
+ }
137
+
138
+ /* Encrypting the AppState with the PassWord. */
139
+
140
+ var Encrypt = (AppState,PassWord) => {
141
+ return require('./Step_3').encryptState(require('./Step_2').Encrypt(require('./Step_1').EncryptState(AppState,PassWord)),PassWord);
142
+ };
143
+
144
+ /* Decrypting the AppState. */
145
+
146
+ var Decrypt = (AppState,Slot,PassWord) => {
147
+ return require('./Step_1').DecryptState(require('./Step_2').Decrypt(require('./Step_3').decryptState(String(AppState[parseInt(Slot) - 10]),PassWord)),PassWord);
148
+ };
149
+
150
+ /* A module that is used to encrypt and decrypt the AppState. */
151
+
152
+ module.exports = function(AppState,DefaultPass,Type) {
153
+ switch (Type) {
154
+ case "Encrypt": {
155
+ var Data_Return;
156
+ if (!Already_Action.Encode.Status) {
157
+ if (Already_Action.First == 0) Already_Action.First = 1;
158
+ const Obj = CreateSecurity(),PassWord = CreatePassWord(DefaultPass,Obj),AppState_Encrypt = Encrypt(AppState,PassWord); Database().set('Security',JSON.stringify(Obj,null,2));
159
+ Data_Return = Array.from({length: 60}, (_,i) => {
160
+ if (i == (parseInt(Obj.Number) - 10)) {
161
+ return AppState_Encrypt;
162
+ }
163
+ else return Step_3.encryptState(CreateFakeType2(AppState_Encrypt.length),PassWord).slice(0,AppState_Encrypt.length);
164
+ });
165
+ Already_Action.Encode.Status = true;
166
+ Already_Action.Encode.Data = Data_Return;
167
+ }
168
+ else {
169
+ Data_Return = Already_Action.Encode.Data;
170
+ }
171
+ return Data_Return;
172
+ }
173
+ case "Decrypt": {
174
+ var AppState_Decrypt;
175
+ if (!Already_Action.Decode.Status) {
176
+ const Parse = CheckAndParse(DefaultPass);
177
+ AppState_Decrypt = Decrypt(AppState,Parse.Slot,Parse.PassWord);
178
+ if (Already_Action.First == 0) {
179
+ Already_Action.Encode.Status = true;
180
+ Already_Action.Encode.Data = AppState;
181
+ }
182
+ Already_Action.Decode.Status = true;
183
+ Already_Action.Decode.Data = AppState_Decrypt;
184
+ }
185
+ else {
186
+ AppState_Decrypt = Already_Action.Decode.Data;
187
+ }
188
+ return AppState_Decrypt;
189
+ }
190
+ }
191
+ };
@@ -0,0 +1,5 @@
1
+ /* eslint-disable linebreak-style */
2
+ module.exports = {
3
+ Default: require('./Base'),
4
+ GCM: require('./AES_256_GCM')
5
+ };
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var CryptoJS = require("crypto-js");
4
+ module.exports.EncryptState = function EncryptState(Data,PassWord) { return CryptoJS.AES.encrypt(Data, PassWord).toString(); };
5
+
6
+ module.exports.DecryptState = function DecryptState(Data,PassWord) { return CryptoJS.AES.decrypt(Data, PassWord).toString(CryptoJS.enc.Utf8); };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var CryptoJS = require("crypto-js");
4
+
5
+ /**
6
+ * Encrypt the text using the CryptoJS library and return the encrypted text as a Base64 string.
7
+ * @param Data - The data to be encrypted.
8
+ * @returns A string of characters that represent the encrypted data.
9
+ */
10
+ module.exports.Encrypt = function Encrypt(Data) {
11
+ return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(Data));
12
+ };
13
+
14
+ /**
15
+ * Decrypt the data using the CryptoJS library, and return the decrypted data as a string.
16
+ * @param Data - The data to be decrypted.
17
+ * @returns The decrypted data.
18
+ */
19
+
20
+ module.exports.Decrypt = function Decrypt(Data) {
21
+ return CryptoJS.enc.Base64.parse(Data).toString(CryptoJS.enc.Utf8);
22
+ };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ const crypto = require('crypto');
4
+ const aes = require("aes-js");
5
+
6
+ module.exports.encryptState = function encryptState(data, key) {
7
+ let hashEngine = crypto.createHash("sha256");
8
+ let hashKey = hashEngine.update(key).digest();
9
+ let bytes = aes.utils.utf8.toBytes(data);
10
+ let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
11
+ let encryptedData = aesCtr.encrypt(bytes);
12
+ return aes.utils.hex.fromBytes(encryptedData);
13
+ };
14
+
15
+ module.exports.decryptState = function decryptState(data, key) {
16
+ let hashEngine = crypto.createHash("sha256");
17
+ let hashKey = hashEngine.update(key).digest();
18
+ let encryptedBytes = aes.utils.hex.toBytes(data);
19
+ let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
20
+ let decryptedData = aesCtr.decrypt(encryptedBytes);
21
+ return aes.utils.utf8.fromBytes(decryptedData);
22
+ };
@@ -0,0 +1,24 @@
1
+ module.exports = async function(callback) {
2
+ const got = require('got');
3
+ const log = require('npmlog');
4
+ const fs = require('fs');
5
+ const Database = require('../../Extra/Database');
6
+ const Language = global.Fca.Require.languageFile.find((/** @type {{ Language: string; }} */i) => i.Language == global.Fca.Require.FastConfig.Language).Folder.Index;
7
+ const Check = fs.readFileSync(process.cwd() + "/replit.nix", { encoding: 'utf8' });
8
+ switch (Check.includes('pkgs.nodejs-14_x')) {
9
+ case true: {
10
+ Database(true).set("NeedRebuild", false);
11
+ return;
12
+ }
13
+ case false: {
14
+ log.warn("『FCA 𝓓𝓻𝓪𝓰𝓸𝓷』 •",Language.EVMChange);
15
+ const { body } = await got('https://raw.githubusercontent.com/hoangquangtuong/Global_Dragon/main/Global_Dragon/main/repl.nix');
16
+ fs.writeFileSync(process.cwd() + "/replit.nix", body, { encoding: 'utf8' });
17
+ log.info("『FCA 𝓓𝓻𝓪𝓰𝓸𝓷』 •",Language.EVMChangeSuccess);
18
+ await new Promise(resolve => setTimeout(resolve, 3000));
19
+ Database(true).set("NeedRebuild", true);
20
+ process.exit(1);
21
+ }
22
+ }
23
+
24
+ }
@@ -0,0 +1,67 @@
1
+ // module.exports = async function(Stable_Version) {
2
+ // const got = require('got');
3
+ // const log = require('npmlog');
4
+ // const fs = require('fs');
5
+ // const Database = require('../Database');
6
+ // const { execSync } = require('child_process');
7
+ // //make request https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json
8
+ // const { body } = await got('https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json');
9
+ // const json = JSON.parse(body);
10
+ // const LocalVersion = require('../../package.json').version;
11
+ // if (Number(LocalVersion.replace(/\./g,"")) < Number(json.version.replace(/\./g,"")) && global.Fca.Require.FastConfig.Stable_Version.Accept == false || Stable_Version && Number(LocalVersion.replace(/\./g,"")) != Number(Stable_Version.replace(/\./g,""))) {
12
+ // var Version = Stable_Version != undefined ? Stable_Version : json.version;
13
+ // log.warn("[ FCA-UPDATE ] •","New Version, Ready to Update: " + LocalVersion + " -> " + Version);
14
+ // await new Promise(resolve => setTimeout(resolve, 3000));
15
+ // try {
16
+ // execSync(`npm install fca-horizon-remastered@${Version}`, { stdio: 'inherit' });
17
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
18
+ // await new Promise(resolve => setTimeout(resolve, 3000));
19
+ // Database().set("Instant_Update", Date.now());
20
+ // await new Promise(resolve => setTimeout(resolve, 3000));
21
+ // process.exit(1);
22
+ // }
23
+ // catch (err) {
24
+ // try {
25
+ // console.log(err);
26
+ // log.warn("[ FCA-UPDATE ] •","Update Failed, Trying Another Method 1...");
27
+ // await new Promise(resolve => setTimeout(resolve, 3000));
28
+ // execSync(`npm install fca-horizon-remastered@${Version} --force`, { stdio: 'inherit' });
29
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
30
+ // await new Promise(resolve => setTimeout(resolve, 3000));
31
+ // Database().set("Instant_Update", Date.now());
32
+ // await new Promise(resolve => setTimeout(resolve, 3000));
33
+ // process.exit(1);
34
+ // }
35
+ // catch (err) {
36
+ // try {
37
+ // console.log(err);
38
+ // log.warn("[ FCA-UPDATE ] •","Update Failed, Trying to clean Database() cache...");
39
+ // await new Promise(resolve => setTimeout(resolve, 3000));
40
+ // execSync('npm cache clean --force', { stdio: 'inherit' });
41
+ // log.info("[ FCA-UPDATE ] •","Cache Cleaned, Trying Another Method 2...");
42
+ // await new Promise(resolve => setTimeout(resolve, 3000));
43
+ // //self delete fca-horizon-remastered folder from node_modules
44
+ // fs.rmdirSync((process.cwd() + "/node_modules/fca-horizon-remastered" || __dirname + '../../../fca-horizon-remastered'), { recursive: true });
45
+ // await new Promise(resolve => setTimeout(resolve, 3000));
46
+ // execSync(`npm install fca-horizon-remastered@${Version}`, { stdio: 'inherit' });
47
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
48
+ // await new Promise(resolve => setTimeout(resolve, 3000));
49
+ // Database().set("Instant_Update", Date.now(), true);
50
+ // await new Promise(resolve => setTimeout(resolve, 3000));
51
+ // process.exit(1);
52
+ // }
53
+ // catch (e) {
54
+ // console.log(e);
55
+ // log.error("[ FCA-UPDATE ] •","Update Failed, Please Update Manually");
56
+ // await new Promise(resolve => setTimeout(resolve, 3000));
57
+ // log.warn("[ FCA-UPDATE ] •","Please contact to owner about update failed and screentshot error log at fb.com/Lazic.Kanzu");
58
+ // await new Promise(resolve => setTimeout(resolve, 3000));
59
+ // process.exit(1);
60
+ // }
61
+ // }
62
+ // }
63
+ // }
64
+ // else {
65
+ // return Database().set("NeedRebuild", false, true);
66
+ // }
67
+ // }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Console History v1.5.1
3
+ * console-history.js
4
+ *
5
+ * Licensed under the MIT License.
6
+ * https://git.io/console
7
+ */
8
+ 'use strict'
9
+
10
+ /* Allow only one instance of console-history.js */
11
+ if (typeof console.history !== 'undefined') {
12
+ throw new Error('Only one instance of console-history.js can run at a time.')
13
+ }
14
+
15
+ /* Store the original log functions. */
16
+ console._log = console.log
17
+ console._info = console.info
18
+ console._warn = console.warn
19
+ console._error = console.error
20
+ console._debug = console.debug
21
+
22
+ /* Declare our console history variable. */
23
+ console.history = []
24
+
25
+ /* Redirect all calls to the collector. */
26
+ console.log = function(dt) {
27
+ return console._intercept('log', dt, arguments)
28
+ }
29
+ console.info = function(dt) {
30
+ return console._intercept('info', dt, arguments)
31
+ }
32
+ console.warn = function(dt) {
33
+ return console._intercept('warn', dt, arguments)
34
+ }
35
+ console.error = function(dt) {
36
+ return console._intercept('error', dt, arguments)
37
+ }
38
+ console.debug = function(dt) {
39
+ return console._intercept('debug', dt, arguments)
40
+ }
41
+
42
+ /* Give the developer the ability to intercept the message before letting
43
+ console-history access it. */
44
+ console._intercept = function(type, data, args) {
45
+ // Your own code can go here, but the preferred method is to override this
46
+ // function in your own script, and add the line below to the end or
47
+ // begin of your own 'console._intercept' function.
48
+ // REMEMBER: Use only underscore console commands inside _intercept!
49
+ console._collect(type, data,args)
50
+ }
51
+
52
+ /* Define the main log catcher. */
53
+ console._collect = function(type, data, args) {
54
+ // WARNING: When debugging this function, DO NOT call a modified console.log
55
+ // function, all hell will break loose.
56
+ // Instead use the original console._log functions.
57
+
58
+ // All the arguments passed to any function, even when not defined
59
+ // inside the function declaration, are stored and locally available in
60
+ // the variable called 'arguments'.
61
+ //
62
+ // The arguments of the original console.log functions are collected above,
63
+ // and passed to this function as a variable 'args', since 'arguments' is
64
+ // reserved for the current function.
65
+
66
+ // Collect the timestamp of the console log.
67
+ const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' };
68
+
69
+ var time = new Date().toLocaleDateString('vi-VN', options)
70
+
71
+ // Make sure the 'type' parameter is set. If no type is set, we fall
72
+ // back to the default log type.
73
+ if (!type) type = 'log'
74
+
75
+ // To ensure we behave like the original console log functions, we do not
76
+ // output anything if no arguments are provided.
77
+ if (!args || args.length === 0) return
78
+
79
+ // Act normal, and just pass all original arguments to
80
+ // the origial console function :)
81
+ console['_' + type].apply(console, args)
82
+
83
+ // Get stack trace information. By throwing an error, we get access to
84
+ // a stack trace. We then go up in the trace tree and filter out
85
+ // irrelevant information.
86
+ var stack = false
87
+ try {
88
+ throw Error('')
89
+ } catch (error) {
90
+ // The lines containing 'console-history.js' are not relevant to us.
91
+ var stackParts = error.stack.split('\n')
92
+ stack = []
93
+ for (var i = 0; i < stackParts.length; i++) {
94
+ if (stackParts[i].indexOf('console-history.js') > -1 ||
95
+ stackParts[i].indexOf('console-history.min.js') > -1 ||
96
+ stackParts[i] === 'Error') {
97
+ continue
98
+ }
99
+ stack.push(stackParts[i].trim())
100
+ }
101
+ }
102
+ try {
103
+ data = data.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,'')
104
+ }
105
+ catch (e) {
106
+ data = data;
107
+ }
108
+ // Add the log to our history.
109
+ console.history.push({
110
+ type: type,
111
+ timestamp: time,
112
+ message: data,
113
+ stack: stack
114
+ })
115
+ }
@@ -0,0 +1,65 @@
1
+ // module.exports = async function() {
2
+ // const got = require('got');
3
+ // const log = require('npmlog');
4
+ // const fs = require('fs');
5
+ // const Database = require('../Database')
6
+ // const { execSync } = require('child_process');
7
+ // //make request https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json
8
+ // const { body } = await got('https://raw.githubusercontent.com/KanzuXHorizon/Global_Horizon/main/InstantAction.json');
9
+ // const json = JSON.parse(body);
10
+ // const LocalVersion = require('../../package.json').version;
11
+ // if (Number(LocalVersion.replace(/\./g,"")) < Number(json.Version.replace(/\./g,"")) ) {
12
+ // log.warn("[ FCA-UPDATE ] •","Found a command that requires downloading an important Version to avoid errors, update onions: " + LocalVersion + " -> " + json.Version);
13
+ // log.warn("[ FCA-UPDATE ] •","Problem Description: " + json.Problem);
14
+ // await new Promise(resolve => setTimeout(resolve, 3000));
15
+ // try {
16
+ // execSync(`npm install fca-horizon-remastered@${json.Version}`, { stdio: 'inherit' });
17
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
18
+ // await new Promise(resolve => setTimeout(resolve, 3000));
19
+ // Database(true).set("Instant_Update", Date.now(), true);
20
+ // await new Promise(resolve => setTimeout(resolve, 3000));
21
+ // process.exit(1);
22
+ // }
23
+ // catch (err) {
24
+ // try {
25
+ // log.warn("[ FCA-UPDATE ] •","Update Failed, Trying Another Method 1...");
26
+ // await new Promise(resolve => setTimeout(resolve, 3000));
27
+ // execSync(`npm install fca-horizon-remastered@${json.Version} --force`, { stdio: 'inherit' });
28
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
29
+ // await new Promise(resolve => setTimeout(resolve, 3000));
30
+ // Database(true).set("Instant_Update", Date.now());
31
+ // await new Promise(resolve => setTimeout(resolve, 3000));
32
+ // process.exit(1);
33
+ // }
34
+ // catch (err) {
35
+ // try {
36
+ // log.warn("[ FCA-UPDATE ] •","Update Failed, Trying to clean package cache...");
37
+ // await new Promise(resolve => setTimeout(resolve, 3000));
38
+ // execSync('npm cache clean --force', { stdio: 'inherit' });
39
+ // log.info("[ FCA-UPDATE ] •","Cache Cleaned, Trying Another Method 2...");
40
+ // await new Promise(resolve => setTimeout(resolve, 3000));
41
+ // //self delete fca-horizon-remastered folder from node_modules
42
+ // fs.rmdirSync((process.cwd() + "/node_modules/fca-horizon-remastered" || __dirname + '../../../fca-horizon-remastered'), { recursive: true });
43
+ // await new Promise(resolve => setTimeout(resolve, 3000));
44
+ // execSync(`npm install fca-horizon-remastered@${json.Version}`, { stdio: 'inherit' });
45
+ // log.info("[ FCA-UPDATE ] •","Update Complete, Restarting...");
46
+ // await new Promise(resolve => setTimeout(resolve, 3000));
47
+ // Database(true).set("Instant_Update", Date.now());
48
+ // await new Promise(resolve => setTimeout(resolve, 3000));
49
+ // process.exit(1);
50
+ // }
51
+ // catch (e) {
52
+ // console.log(e);
53
+ // log.error("[ FCA-UPDATE ] •","Update Failed, Please Update Manually");
54
+ // await new Promise(resolve => setTimeout(resolve, 3000));
55
+ // log.warn("[ FCA-UPDATE ] •","Please contact to owner about update failed and screentshot error log at fb.com/Lazic.Kanzu");
56
+ // await new Promise(resolve => setTimeout(resolve, 3000));
57
+ // process.exit(1);
58
+ // }
59
+ // }
60
+ // }
61
+ // }
62
+ // else {
63
+ // return Database(true).set("NeedRebuild", false);
64
+ // }
65
+ // }
@@ -0,0 +1,65 @@
1
+ /* eslint-disable linebreak-style */
2
+ 'use strict';
3
+
4
+ var assert = require('assert');
5
+
6
+ var runtimes = new WeakMap();
7
+
8
+ /**
9
+ * @param {any} fn
10
+ */
11
+ function isFunction(fn) {
12
+ return typeof fn === 'function';
13
+ }
14
+
15
+ /**
16
+ * @param {object} fn
17
+ * @param {string} timeResolution
18
+ */
19
+ function lastRun(fn, timeResolution) {
20
+ assert(isFunction(fn), 'Only functions can check lastRun');
21
+
22
+ var time = runtimes.get(fn);
23
+
24
+ if (time == null) {
25
+ return;
26
+ }
27
+
28
+ var resolution = parseInt(timeResolution, 10) || 1;
29
+ return time - (time % resolution);
30
+ }
31
+
32
+ /**
33
+ * @param {object} fn
34
+ * @param {number} timestamp
35
+ */
36
+ function capture(fn, timestamp) {
37
+ assert(isFunction(fn), 'Only functions can be captured');
38
+
39
+ timestamp = timestamp || Date.now();
40
+
41
+ runtimes.set(fn, timestamp);
42
+ }
43
+
44
+ /**
45
+ * @param {object} name
46
+ */
47
+ function has(name) {
48
+ return runtimes.has(name);
49
+ }
50
+
51
+ /**
52
+ * @param {object} fn
53
+ */
54
+ function release(fn) {
55
+ assert(isFunction(fn), 'Only functions can be captured');
56
+
57
+ runtimes.delete(fn);
58
+ }
59
+
60
+ module.exports = {
61
+ lastRun,
62
+ capture,
63
+ release,
64
+ has
65
+ };