meta-horizonn 1.1.3 → 1.1.5
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/.prettierrc +3 -3
- package/Extra/Bypass/956/index.js +234 -0
- package/Extra/Bypass/test/aaaa.json +170 -0
- package/Extra/Bypass/test/index.js +188 -0
- package/Extra/ExtraGetThread.js +33 -8
- package/Extra/Security/Base/index.js +32 -14
- package/Extra/Src/Check_Update.js +6 -6
- package/Extra/Src/Instant_Update.js +5 -5
- package/Extra/Src/Release_Memory.js +189 -28
- package/Extra/Src/test.js +28 -0
- package/Language/index.json +4 -1
- package/Main.js +27 -10
- package/README.md +10 -0
- package/broadcast.js +83 -38
- package/font-handler.js +8 -8
- package/index.js +66 -7
- package/package.json +2 -5
- package/src/editMessage.js +53 -0
- package/src/getMessage.js +27 -3
- package/src/getThreadInfo.js +49 -66
- package/src/getThreadInfoOLD.js +422 -0
- package/src/getUserInfo.js +1 -1
- package/src/listenMqtt.js +924 -786
- package/src/listenMqttV1.js +2192 -0
- package/src/sendMessage.js +34 -2
- package/src/sendMqttMessage.js +71 -0
- package/src/shareContact.js +55 -0
- package/src/shareLink.js +58 -0
- package/test/testname.js +1342 -0
- package/test/testv2.js +17 -13
- package/utils.js +1365 -29
- package/.cache/replit/__replit_disk_meta.json +0 -1
- package/.cache/replit/nix/env.json +0 -1
- package/.cache/typescript/4.8/package.json +0 -51
- package/.config/configstore/update-notifier-npm.json +0 -4
- package/.replit +0 -80
- package/replit.nix +0 -8
package/Extra/ExtraGetThread.js
CHANGED
@@ -7,7 +7,7 @@ const getText = global.Fca.getText;
|
|
7
7
|
var language = require("../Language/index.json");
|
8
8
|
const fs = require("fs");
|
9
9
|
language = language.find(i => i.Language == require(process.cwd() + "/FastConfigFca.json").Language).Folder.ExtraGetThread;
|
10
|
-
|
10
|
+
const Always_True = [];
|
11
11
|
if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "json") {
|
12
12
|
if (!fs.existsSync(process.cwd() + "/Horizon_Database/Threads.json")) {
|
13
13
|
fs.writeFileSync(process.cwd() + "/Horizon_Database/Threads.json",JSON.stringify({}));
|
@@ -112,7 +112,10 @@ exports.updateMessageCount = function(threadID,threadData) {
|
|
112
112
|
|
113
113
|
exports.getData = function(threadID) {
|
114
114
|
if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "default") {
|
115
|
-
|
115
|
+
let Sw;
|
116
|
+
if (Always_True.includes(threadID)) Sw = true
|
117
|
+
else Sw = Database(true).has(String(threadID))
|
118
|
+
switch (Sw) {
|
116
119
|
case true: {
|
117
120
|
return Database(true).get(String(threadID))
|
118
121
|
}
|
@@ -123,8 +126,11 @@ exports.getData = function(threadID) {
|
|
123
126
|
}
|
124
127
|
else if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "json") {
|
125
128
|
try {
|
129
|
+
let Sw;
|
130
|
+
if (Always_True.includes(threadID)) Sw = true
|
131
|
+
else Sw = data.hasOwnProperty(String(threadID))
|
126
132
|
var data = require(process.cwd() + "/Horizon_Database/Threads.json");
|
127
|
-
switch (
|
133
|
+
switch (Sw) {
|
128
134
|
case true: {
|
129
135
|
return data[String(threadID)];
|
130
136
|
}
|
@@ -185,12 +191,22 @@ exports.getAll = function() {
|
|
185
191
|
|
186
192
|
exports.hasData = function(threadID) {
|
187
193
|
if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "default") {
|
188
|
-
|
194
|
+
if (Always_True.includes(threadID)) return true;
|
195
|
+
else {
|
196
|
+
const Data_Back = Database(true).has(String(threadID));
|
197
|
+
if (Data_Back === true) Always_True.push(threadID);
|
198
|
+
return Data_Back;
|
199
|
+
}
|
189
200
|
}
|
190
201
|
else if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "json") {
|
191
202
|
try {
|
192
|
-
|
193
|
-
|
203
|
+
if (Always_True.includes(threadID)) return true;
|
204
|
+
else {
|
205
|
+
var data = require(process.cwd() + "/Horizon_Database/Threads.json");
|
206
|
+
var has = data.hasOwnProperty(String(threadID));
|
207
|
+
if (has === true) Always_True.push(threadID);
|
208
|
+
return has
|
209
|
+
}
|
194
210
|
}
|
195
211
|
catch (e) {
|
196
212
|
console.log(e);
|
@@ -241,6 +257,8 @@ exports.readyCreate = function(Name) {
|
|
241
257
|
if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "default") {
|
242
258
|
switch (Database(true).has(String(Name))) {
|
243
259
|
case true: {
|
260
|
+
if (!Always_True.includes(Name)) Always_True.push(Name);
|
261
|
+
|
244
262
|
if (Number(global.Fca.startTime) >= Number(Database(true).get(String(Name)) + (120 * 1000))) {
|
245
263
|
return true;
|
246
264
|
}
|
@@ -295,7 +313,11 @@ exports.setLastRun = function(Name,LastRun) {
|
|
295
313
|
|
296
314
|
exports.getLastRun = function(Name) {
|
297
315
|
if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "default") {
|
298
|
-
|
316
|
+
let Sw;
|
317
|
+
if (Always_True.includes(Name)) Sw = true;
|
318
|
+
else Sw = Database(true).has(String(Name));
|
319
|
+
|
320
|
+
switch (Sw) {
|
299
321
|
case true: {
|
300
322
|
return Database(true).get(String(Name));
|
301
323
|
}
|
@@ -314,8 +336,11 @@ exports.getLastRun = function(Name) {
|
|
314
336
|
}
|
315
337
|
else if (global.Fca.Require.FastConfig.AntiGetInfo.Database_Type == "json") {
|
316
338
|
try {
|
339
|
+
let Sw;
|
340
|
+
if (Always_True.includes(Name)) Sw = true;
|
341
|
+
else Sw = data.hasOwnProperty(String(Name));
|
317
342
|
var data = require(process.cwd() + "/Horizon_Database/Threads.json");
|
318
|
-
switch (
|
343
|
+
switch (Sw) {
|
319
344
|
case true: {
|
320
345
|
return data[String(Name)];
|
321
346
|
}
|
@@ -1,12 +1,30 @@
|
|
1
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
|
+
}
|
2
23
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
const Database = require("../../Database");
|
8
|
-
const Already_Action = { First: 0, Encode: { Status: false, Data: Array }, Decode: { Status: false, Data: Array } };
|
9
|
-
|
24
|
+
else {
|
25
|
+
ArrPassWord = JSON.stringify(fs.readFileSync(process.cwd() + '/Horizon_Database/RandPass.json'));
|
26
|
+
}
|
27
|
+
|
10
28
|
/**
|
11
29
|
* It creates a random string of a given length
|
12
30
|
* @param length - The length of the string to be generated.
|
@@ -33,30 +51,30 @@
|
|
33
51
|
}
|
34
52
|
|
35
53
|
/**
|
36
|
-
* It creates a random number between 0 and
|
54
|
+
* It creates a random number between 0 and 90, then subtracts a random number between 10 and 33 from
|
37
55
|
* it, and then adds 10 to it.
|
38
56
|
*
|
39
|
-
* So, the result is a number between -23 and
|
57
|
+
* So, the result is a number between -23 and 90.
|
40
58
|
*
|
41
59
|
* The function also creates a random number between 10 and 70, and a random number between 10 and 33.
|
42
60
|
*
|
43
61
|
* The function returns an object with the following properties:
|
44
62
|
*
|
45
|
-
* Security: the random number between 0 and
|
46
|
-
* Previous: the random number between -23 and
|
63
|
+
* Security: the random number between 0 and 90
|
64
|
+
* Previous: the random number between -23 and 90
|
47
65
|
* Secret: the random number between 10 and 33
|
48
66
|
* Number: the random number between 10 and 70
|
49
67
|
* @returns An object with the following properties:
|
50
68
|
*/
|
51
69
|
|
52
70
|
function CreateSecurity() {
|
53
|
-
var Security = Between(0,
|
71
|
+
var Security = Between(0,90);
|
54
72
|
var Secret = Between(10,33);
|
55
73
|
return {
|
56
74
|
Security: Security,
|
57
75
|
Previous: parseInt(Security) - Secret,//after + (10) main + random
|
58
76
|
Secret: Secret, // save
|
59
|
-
Number: Between(10,
|
77
|
+
Number: Between(10,50) // vị trí của real appstate trừ 10
|
60
78
|
};
|
61
79
|
}
|
62
80
|
|
@@ -138,7 +156,7 @@
|
|
138
156
|
if (!Already_Action.Encode.Status) {
|
139
157
|
if (Already_Action.First == 0) Already_Action.First = 1;
|
140
158
|
const Obj = CreateSecurity(),PassWord = CreatePassWord(DefaultPass,Obj),AppState_Encrypt = Encrypt(AppState,PassWord); Database().set('Security',JSON.stringify(Obj,null,2));
|
141
|
-
Data_Return = Array.from({length:
|
159
|
+
Data_Return = Array.from({length: 60}, (_,i) => {
|
142
160
|
if (i == (parseInt(Obj.Number) - 10)) {
|
143
161
|
return AppState_Encrypt;
|
144
162
|
}
|
@@ -4,8 +4,8 @@ module.exports = async function(Stable_Version) {
|
|
4
4
|
const fs = require('fs');
|
5
5
|
const Database = require('../Database');
|
6
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://
|
7
|
+
//make request to https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json
|
8
|
+
const { body } = await got('https://raw.githubusercontent.com/JustKemForFun/Meta-Horizon/main/package.json');
|
9
9
|
const json = JSON.parse(body);
|
10
10
|
const LocalVersion = require('../../package.json').version;
|
11
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,""))) {
|
@@ -13,7 +13,7 @@ module.exports = async function(Stable_Version) {
|
|
13
13
|
log.warn("[ FCA-UPDATE ] ➣","New Version, Ready to Update: " + LocalVersion + " ➣ " + Version);
|
14
14
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
15
15
|
try {
|
16
|
-
execSync(`npm install meta-
|
16
|
+
execSync(`npm install meta-horizon@${Version}`, { stdio: 'inherit' });
|
17
17
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
18
18
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
19
19
|
Database().set("Instant_Update", Date.now());
|
@@ -25,7 +25,7 @@ module.exports = async function(Stable_Version) {
|
|
25
25
|
console.log(err);
|
26
26
|
log.warn("[ FCA-UPDATE ] ➣","Update Failed, Trying Another Method 1...");
|
27
27
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
28
|
-
execSync(`npm install meta-
|
28
|
+
execSync(`npm install meta-horizon@${Version} --force`, { stdio: 'inherit' });
|
29
29
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
30
30
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
31
31
|
Database().set("Instant_Update", Date.now());
|
@@ -41,9 +41,9 @@ module.exports = async function(Stable_Version) {
|
|
41
41
|
log.info("[ FCA-UPDATE ] ➣","Cache Cleaned, Trying Another Method 2...");
|
42
42
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
43
43
|
//self delete fca-horizon-remastered folder from node_modules
|
44
|
-
fs.rmdirSync((process.cwd() + "/node_modules/meta-
|
44
|
+
fs.rmdirSync((process.cwd() + "/node_modules/meta-horizon" || __dirname + '../../../meta-horizon-remake'), { recursive: true });
|
45
45
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
46
|
-
execSync(`npm install meta-
|
46
|
+
execSync(`npm install meta-horizon@${Version}`, { stdio: 'inherit' });
|
47
47
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
48
48
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
49
49
|
Database().set("Instant_Update", Date.now(), true);
|
@@ -4,7 +4,7 @@ module.exports = async function() {
|
|
4
4
|
const fs = require('fs');
|
5
5
|
const Database = require('../Database')
|
6
6
|
const { execSync } = require('child_process');
|
7
|
-
//make request https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json
|
7
|
+
//make request to https://raw.githubusercontent.com/KanzuXHorizon/Fca-Horizon-Remastered/main/package.json
|
8
8
|
const { body } = await got('https://raw.githubusercontent.com/JustKemForFun/Global_MetaHorizon/main/InstantAction.json');
|
9
9
|
const json = JSON.parse(body);
|
10
10
|
const LocalVersion = require('../../package.json').version;
|
@@ -13,7 +13,7 @@ module.exports = async function() {
|
|
13
13
|
log.warn("[ FCA-UPDATE ] ➣","Problem Description: " + json.Problem);
|
14
14
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
15
15
|
try {
|
16
|
-
execSync(`npm install meta-
|
16
|
+
execSync(`npm install meta-horizon@${json.Version}`, { stdio: 'inherit' });
|
17
17
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
18
18
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
19
19
|
Database(true).set("Instant_Update", Date.now(), true);
|
@@ -24,7 +24,7 @@ module.exports = async function() {
|
|
24
24
|
try {
|
25
25
|
log.warn("[ FCA-UPDATE ] ➣","Update Failed, Trying Another Method 1...");
|
26
26
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
27
|
-
execSync(`npm install meta-
|
27
|
+
execSync(`npm install meta-horizon@${json.Version} --force`, { stdio: 'inherit' });
|
28
28
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
29
29
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
30
30
|
Database(true).set("Instant_Update", Date.now());
|
@@ -39,9 +39,9 @@ module.exports = async function() {
|
|
39
39
|
log.info("[ FCA-UPDATE ] ➣","Cache Cleaned, Trying Another Method 2...");
|
40
40
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
41
41
|
//self delete fca-horizon-remastered folder from node_modules
|
42
|
-
fs.rmdirSync((process.cwd() + "/node_modules/meta-
|
42
|
+
fs.rmdirSync((process.cwd() + "/node_modules/meta-horizon" || __dirname + '../../../meta-horizon-remake'), { recursive: true });
|
43
43
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
44
|
-
execSync(`npm install meta-
|
44
|
+
execSync(`npm install meta-horizon@${json.Version}`, { stdio: 'inherit' });
|
45
45
|
log.info("[ FCA-UPDATE ] ➣","Update Complete, Restarting...");
|
46
46
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
47
47
|
Database(true).set("Instant_Update", Date.now());
|
@@ -1,41 +1,202 @@
|
|
1
|
+
// /* eslint-disable linebreak-style */
|
2
|
+
// const v8 = require('v8');
|
3
|
+
|
4
|
+
// function gc() {
|
5
|
+
// var v8 = require("v8");
|
6
|
+
// var vm = require('node:vm');
|
7
|
+
// v8.setFlagsFromString('--expose_gc');
|
8
|
+
// var gc = vm.runInNewContext('gc');
|
9
|
+
// return gc;
|
10
|
+
// }
|
11
|
+
|
12
|
+
// if (typeof global.gc !== 'function') {
|
13
|
+
// global.gc = gc();
|
14
|
+
// }
|
15
|
+
|
16
|
+
// var releaseMemory = function () {
|
17
|
+
// if (global.gc) {
|
18
|
+
// global.gc();
|
19
|
+
// } else {
|
20
|
+
// var v8 = require("v8");
|
21
|
+
// var vm = require('node:vm');
|
22
|
+
// v8.setFlagsFromString('--expose_gc');
|
23
|
+
// vm.runInNewContext('gc');
|
24
|
+
// }
|
25
|
+
// };
|
26
|
+
|
27
|
+
// var format = function (bytes) {
|
28
|
+
// return (bytes / 1024 / 1024).toFixed(2);
|
29
|
+
// };
|
30
|
+
|
31
|
+
// function memoryWatcher(limit) {
|
32
|
+
// let used = format(v8.getHeapStatistics().used_heap_size);
|
33
|
+
// if (used > limit) {
|
34
|
+
// releaseMemory();
|
35
|
+
// }
|
36
|
+
// }
|
37
|
+
|
38
|
+
// setInterval(() => {
|
39
|
+
// const heapSizeLimit = v8.getHeapStatistics().heap_size_limit;
|
40
|
+
// memoryWatcher(format(heapSizeLimit) - (format(heapSizeLimit) / 60));// MB
|
41
|
+
// }, 1000);
|
42
|
+
|
1
43
|
/* eslint-disable linebreak-style */
|
44
|
+
const fs = require('fs');
|
45
|
+
const path = require('path');
|
2
46
|
const v8 = require('v8');
|
47
|
+
const EventEmitter = require('events');
|
3
48
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
49
|
+
class MemoryManager extends EventEmitter {
|
50
|
+
constructor(options = {}) {
|
51
|
+
super();
|
52
|
+
this.thresholds = {
|
53
|
+
warning: options.warningThreshold || 0.7,
|
54
|
+
release: options.releaseThreshold || 0.8,
|
55
|
+
max: options.maxThreshold || 0.9,
|
56
|
+
};
|
57
|
+
this.interval = options.interval || 5000;
|
58
|
+
this.logLevel = options.logLevel || 'info';
|
59
|
+
this.logFile = options.logFile || path.join(__dirname, 'memory.log');
|
60
|
+
this.allowLog = options.allowLog || true;
|
61
|
+
this.weakRefs = new WeakMap();
|
62
|
+
this.smartReleaseEnabled = options.smartReleaseEnabled || false;
|
63
|
+
this.memoryUsageHistory = [];
|
64
|
+
}
|
11
65
|
|
12
|
-
|
13
|
-
|
14
|
-
|
66
|
+
start() {
|
67
|
+
this.intervalId = setInterval(() => {
|
68
|
+
const memoryUsage = this.getMemoryUsage();
|
69
|
+
this.logMemoryUsage(memoryUsage);
|
70
|
+
|
71
|
+
if (memoryUsage > this.thresholds.warning) {
|
72
|
+
this.emit('memoryWarning', memoryUsage);
|
73
|
+
}
|
74
|
+
|
75
|
+
if (memoryUsage > this.thresholds.release) {
|
76
|
+
this.releaseMemory(memoryUsage);
|
77
|
+
}
|
78
|
+
|
79
|
+
if (memoryUsage > this.thresholds.max) {
|
80
|
+
this.emit('memoryMax', memoryUsage);
|
81
|
+
}
|
15
82
|
|
16
|
-
|
83
|
+
if (this.smartReleaseEnabled) {
|
84
|
+
this.memoryUsageHistory.push(memoryUsage);
|
85
|
+
this.smartRelease();
|
86
|
+
}
|
87
|
+
}, this.interval);
|
88
|
+
}
|
89
|
+
|
90
|
+
stop() {
|
91
|
+
clearInterval(this.intervalId);
|
92
|
+
}
|
93
|
+
|
94
|
+
getMemoryUsage() {
|
95
|
+
const heapStats = v8.getHeapStatistics();
|
96
|
+
const totalHeapSize = heapStats.total_available_size / 1024 / 1024;
|
97
|
+
const usedHeapSize = heapStats.used_heap_size / 1024 / 1024;
|
98
|
+
return usedHeapSize / totalHeapSize;
|
99
|
+
}
|
100
|
+
|
101
|
+
releaseMemory(memoryUsage) {
|
17
102
|
if (global.gc) {
|
18
|
-
|
103
|
+
global.gc();
|
19
104
|
} else {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
vm.runInNewContext('gc');
|
105
|
+
v8.setFlagsFromString('--expose_gc');
|
106
|
+
const vm = require('vm');
|
107
|
+
vm.runInNewContext('gc')();
|
24
108
|
}
|
25
|
-
|
109
|
+
this.emit('memoryReleased', memoryUsage);
|
110
|
+
}
|
26
111
|
|
27
|
-
|
28
|
-
|
29
|
-
}
|
112
|
+
logMemoryUsage(memoryUsage) {
|
113
|
+
const timestamp = new Date().toLocaleString("vi-vn", {timeZone: "Asia/Ho_Chi_Minh"});
|
114
|
+
const logMessage = `${timestamp} - Memory usage: ${(memoryUsage * 100).toFixed(2)}%`;
|
30
115
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
116
|
+
switch (this.logLevel) {
|
117
|
+
case 'debug':
|
118
|
+
console.debug(logMessage);
|
119
|
+
break;
|
120
|
+
case 'info':
|
121
|
+
global.Fca.Require.logger.Info(logMessage);
|
122
|
+
break;
|
123
|
+
case 'warn':
|
124
|
+
global.Fca.Require.logger.Normal(logMessage);
|
125
|
+
break;
|
126
|
+
case 'error':
|
127
|
+
global.Fca.Require.logger.Error(logMessage);
|
128
|
+
break;
|
129
|
+
default:
|
130
|
+
global.Fca.Require.logger.Normal(logMessage);
|
131
|
+
}
|
132
|
+
if (this.allowLog) {
|
133
|
+
fs.appendFile(this.logFile, `${logMessage}\n`, (err) => {
|
134
|
+
if (err) throw err;
|
135
|
+
});
|
35
136
|
}
|
137
|
+
}
|
138
|
+
|
139
|
+
onMaxMemory(callback) {
|
140
|
+
this.on('memoryMax', callback);
|
141
|
+
}
|
142
|
+
|
143
|
+
addMemoryUsageListener(callback) {
|
144
|
+
this.on('memoryWarning', callback);
|
145
|
+
this.on('memoryReleased', callback);
|
146
|
+
this.on('memoryMax', callback);
|
147
|
+
}
|
148
|
+
|
149
|
+
removeMemoryUsageListener(callback) {
|
150
|
+
this.off('memoryWarning', callback);
|
151
|
+
this.off('memoryReleased', callback);
|
152
|
+
this.off('memoryMax', callback);
|
153
|
+
}
|
154
|
+
|
155
|
+
addThreshold(type, value) {
|
156
|
+
if (type === 'warning' || type === 'release' || type === 'max') {
|
157
|
+
this.thresholds[type] = value;
|
158
|
+
} else {
|
159
|
+
throw new Error('Invalid threshold type');
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
removeThreshold(type) {
|
164
|
+
if (type === 'warning' || type === 'release' || type === 'max') {
|
165
|
+
delete this.thresholds[type];
|
166
|
+
} else {
|
167
|
+
throw new Error('Invalid threshold type');
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
smartRelease() {
|
172
|
+
const memoryUsageHistory = this.memoryUsageHistory.slice(-100);
|
173
|
+
const averageUsage = memoryUsageHistory.reduce((sum, usage) => sum + usage, 0) / memoryUsageHistory.length;
|
174
|
+
const maxUsage = Math.max(...memoryUsageHistory);
|
175
|
+
|
176
|
+
if (averageUsage > this.thresholds.release && maxUsage > this.thresholds.max) {
|
177
|
+
this.releaseMemory(maxUsage);
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
autoStart(interval) { //1h
|
182
|
+
this.stopMemoryManager();
|
183
|
+
this.startMemoryManager();
|
184
|
+
this.autoStartInterval = setInterval(() => {
|
185
|
+
this.stopMemoryManager();
|
186
|
+
this.startMemoryManager();
|
187
|
+
}, interval);
|
188
|
+
}
|
189
|
+
|
190
|
+
stopMemoryManager() {
|
191
|
+
this.stop();
|
192
|
+
clearInterval(this.intervalId);
|
193
|
+
clearInterval(this.autoStartInterval);
|
194
|
+
}
|
195
|
+
|
196
|
+
startMemoryManager() {
|
197
|
+
this.start();
|
198
|
+
}
|
199
|
+
|
36
200
|
}
|
37
201
|
|
38
|
-
|
39
|
-
const heapSizeLimit = v8.getHeapStatistics().heap_size_limit;
|
40
|
-
memoryWatcher(format(heapSizeLimit) - (format(heapSizeLimit) / 60));// MB
|
41
|
-
}, 1000);
|
202
|
+
module.exports = MemoryManager;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
const MemoryManager = require('./Release_Memory');
|
2
|
+
const path = require('path');
|
3
|
+
|
4
|
+
// Tạo một đối tượng MemoryManager với các tùy chọn cấu hình tối ưu
|
5
|
+
const memoryManager = new MemoryManager({
|
6
|
+
warningThreshold: 0.6, // Ngưỡng cảnh báo sử dụng bộ nhớ (60%)
|
7
|
+
releaseThreshold: 0.7, // Ngưỡng giải phóng bộ nhớ (70%)
|
8
|
+
maxThreshold: 0.8, // Ngưỡng tối đa sử dụng bộ nhớ (80%)
|
9
|
+
interval: 30000, // Khoảng thời gian kiểm tra bộ nhớ (30 giây)
|
10
|
+
logLevel: 'warn', // Chỉ ghi nhật ký khi có cảnh báo hoặc lỗi
|
11
|
+
logFile: path.join(__dirname, 'memory.log'), // Tệp nhật ký
|
12
|
+
smartReleaseEnabled: true, // Bật tính năng giải phóng bộ nhớ thông minh
|
13
|
+
});
|
14
|
+
|
15
|
+
memoryManager.addMemoryUsageListener((memoryUsage) => {
|
16
|
+
console.log(`Memory released: ${(memoryUsage * 100).toFixed(2)}%`);
|
17
|
+
});
|
18
|
+
|
19
|
+
|
20
|
+
// Bắt đầu quá trình quản lý bộ nhớ tự động
|
21
|
+
memoryManager.autoStart(3600000); // 1 giờ
|
22
|
+
|
23
|
+
|
24
|
+
// Lưu trữ dữ liệu quan trọng trong WeakMap
|
25
|
+
const importantData = { sensitive: 'data' };
|
26
|
+
memoryManager.weakRefs.set('aaaaaaaaa', importantData);
|
27
|
+
|
28
|
+
console.log(memoryManager.weakRefs.get('aaaaaaaaa'))
|
package/Language/index.json
CHANGED
@@ -80,6 +80,7 @@
|
|
80
80
|
"Ws_Success": "Đặt Dữ Liệu Cho Websocket Extension Thành Công !",
|
81
81
|
"Ws_2Fa": "Đây là mã xác thực 2 yếu tố(2FA) của bạn cho Horizon_Extension, hãy sử dụng Google Authenticator để lấy mã phòng trường hợp quên mật khẩu hoặc yêu cầu xác minh !\n\n➣ Đây: %1",
|
82
82
|
"Ws_2Fa_Check": "Hãy nhập mã 2Fa của bạn từ ứng dụng xác thực: ",
|
83
|
+
"Bypass_956": "Đang thử nghiệm coi bạn có dính checkpoint 956 hay không!",
|
83
84
|
|
84
85
|
"WishMessage": [
|
85
86
|
"Chúc Bạn Một Ngày Tốt Lành Nhé !!!",
|
@@ -188,11 +189,13 @@
|
|
188
189
|
"Ws_Success": "Successfully set data for websocket extension!",
|
189
190
|
"Ws_2Fa": "This is your two-factor authentication (2FA) code for horizon_extension. Please use Google Authenticator to retrieve the backup code in case you forget your password or require verification.\n\n ➣ Here: %1",
|
190
191
|
"Ws_2Fa_Check": "Please enter your 2FA code from the authentication app: ",
|
192
|
+
"Bypass_956": "Testing to see if you get checkpoint 956 or not!",
|
191
193
|
|
192
194
|
"WishMessage": [
|
193
195
|
"Have a Nice Day !",
|
194
196
|
"Please Report To Admin When There Is Error in FCA !",
|
195
|
-
"Thank You For Using Meta Horizon's FCA !"
|
197
|
+
"Thank You For Using Meta Horizon's FCA !",
|
198
|
+
"I Love You So Muchhh 💞"
|
196
199
|
]
|
197
200
|
},
|
198
201
|
"ExtraGetThread": {
|