Skip to content
This repository was archived by the owner on Apr 6, 2024. It is now read-only.

Commit 4e1df87

Browse files
committed
New cache system for autofix lavalink
1 parent 0cf5806 commit 4e1df87

File tree

6 files changed

+130
-42
lines changed

6 files changed

+130
-42
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,6 @@ dist
105105

106106
application.yml
107107

108-
cylane.database.json
108+
cylane.database.json
109+
110+
.cylane/

package-lock.json

+67
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"express-rate-limit": "^6.7.0",
2323
"express-session": "^1.17.3",
2424
"express-status-monitor": "^1.3.4",
25+
"fs-extra": "^11.1.1",
2526
"humanize-duration": "^3.27.3",
2627
"js-yaml": "^4.1.0",
2728
"jsonwebtoken": "^9.0.0",

src/handlers/loadCheck.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
const cron = require('node-cron')
2-
31
module.exports = async (client) => {
4-
if (client.config.get.features.AUTOFIX_LAVALINK && !client.has_run) {
2+
if (client.config.get.features.AUTOFIX_LAVALINK) {
53
require("../lava_scrap/check_lavalink_server")(client)
6-
cron.schedule('* 30 * * * *', async () => {
7-
require("../lava_scrap/check_lavalink_server")(client)
8-
})
9-
client.has_run = true
4+
setInterval(async () => {
5+
require("../lava_scrap/check_lavalink_server")(client)
6+
}, 1800000);
107
}
118
}

src/lava_scrap/check_lavalink_server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ module.exports = async (client) => {
7070
name: `${config.host}:${config.port}`,
7171
online: false
7272
})
73-
client.logger.error(`Server: ${url}`)
73+
client.logger.offline(`Server: ${url}`)
7474
});
7575

7676
}

src/lava_scrap/get_lavalink_server.js

+54-33
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,67 @@
11
const axios = require("axios")
22
var MarkdownIt = require('markdown-it');
33
var md = new MarkdownIt();
4-
4+
const fse = require('fs-extra');
5+
const logger = require("../plugins/logger")
56
module.exports = async () => {
67
let filter_data = []
78
let filter_data_2 = []
89
let final_data = []
910

10-
const res = await axios.get("https://raw.githubusercontent.com/DarrenOfficial/lavalink-list/master/docs/NoSSL/lavalink-without-ssl.md")
11-
var result = md.parse(res.data);
12-
13-
result.filter(async data => {
14-
if (data.tag == "code") {
15-
filter_data.push(data.content)
11+
function getLavalinkServerInfo(data) {
12+
var result = md.parse(data);
13+
14+
result.filter(async data => {
15+
if (data.tag == "code") {
16+
filter_data.push(data.content)
17+
}
18+
})
19+
20+
for (let i = 0; i < filter_data.length; i++) {
21+
const element = filter_data[i];
22+
// Phrase data
23+
const res = element.replace(/\n/g, "");
24+
const res2 = res.replace(/\s+/g, "")
25+
const res3 = res2.replace(/Host/g, "")
26+
const res4 = res3.replace(/Port/g, "")
27+
const res5 = res4.replace(/Password/g, "")
28+
const res6 = res5.replace(/Secure/g, "")
29+
const res7 = res6.replace(/[&\/\\#,+()$~%'"*?<>{}]/g, "")
30+
filter_data_2.push(res7)
1631
}
17-
})
18-
19-
for (let i = 0; i < filter_data.length; i++) {
20-
const element = filter_data[i];
21-
// Phrase data
22-
const res = element.replace(/\n/g, "");
23-
const res2 = res.replace(/\s+/g, "")
24-
const res3 = res2.replace(/Host/g, "")
25-
const res4 = res3.replace(/Port/g, "")
26-
const res5 = res4.replace(/Password/g, "")
27-
const res6 = res5.replace(/Secure/g, "")
28-
const res7 = res6.replace(/[&\/\\#,+()$~%'"*?<>{}]/g, "")
29-
filter_data_2.push(res7)
32+
33+
for (let i = 0; i < filter_data_2.length; i++) {
34+
const regex_extract = /:(.{0,99999}):([0-9]{0,99999}):(.{0,99999}):(false|true)/
35+
const element = filter_data_2[i];
36+
const res = regex_extract.exec(element)
37+
final_data.push({
38+
host: res[1],
39+
port: res[2],
40+
pass: res[3],
41+
secure: res[4] == "false" || res[4] == "False" ? false : true,
42+
online: false
43+
})
44+
}
45+
46+
return final_data
3047
}
3148

32-
for (let i = 0; i < filter_data_2.length; i++) {
33-
const regex_extract = /:(.{0,99999}):([0-9]{0,99999}):(.{0,99999}):(false|true)/
34-
const element = filter_data_2[i];
35-
const res = regex_extract.exec(element)
36-
final_data.push({
37-
host: res[1],
38-
port: res[2],
39-
pass: res[3],
40-
secure: res[4] == "false" || res[4] == "False" ? false : true,
41-
online: false
42-
})
43-
}
49+
if (!fse.existsSync("./.cylane")) {
50+
const res = await axios.get("https://raw.githubusercontent.com/DarrenOfficial/lavalink-list/master/docs/NoSSL/lavalink-without-ssl.md")
4451

45-
return final_data
52+
fse.outputFile('.cylane/lavalink_no_ssl.md', res.data)
53+
.then(() => {
54+
logger.info('New cache has been created!');
55+
})
56+
.catch(err => {
57+
logger.error(err)
58+
});
59+
60+
return getLavalinkServerInfo(res.data)
61+
62+
} else if (fse.existsSync("./.cylane")) {
63+
logger.info('Cache found. Now using for speed up');
64+
const data = await fse.readFile('./.cylane/lavalink_no_ssl.md', { encoding: 'utf8' });
65+
return getLavalinkServerInfo(data)
66+
}
4667
}

0 commit comments

Comments
 (0)