mirror of https://github.com/NobyDa/Script.git
Fix benchmark domain issues.
This commit is contained in:
parent
b929f67523
commit
be728727d1
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Surge规则自动生成脚本
|
Surge规则自动生成脚本
|
||||||
更新时间:2024/02/24
|
更新时间:2024/05/07
|
||||||
|
|
||||||
需按照博客内教程配合使用:
|
需按照博客内教程配合使用:
|
||||||
https://nobyda.github.io/2024/02/24/Surge_Rule_Storage
|
https://nobyda.github.io/2024/02/24/Surge_Rule_Storage
|
||||||
|
@ -19,12 +19,13 @@ args.key = args.key || 'Rule-Storage';
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
const host = $request.hostname.toLowerCase();
|
const host = $request.hostname.toLowerCase();
|
||||||
if (['127.0.0.1', '0.0.0.0'].filter((v) => [...$request.dnsResult.v4Addresses].includes(v)).length) {
|
const inHost = $request.listenPort == 6152 && !$request.sourcePort && !$request.processPath && /^[a-z0-9]{10}\.[a-z]+$/.test(host); //Prevent benchmark
|
||||||
|
if (['127.0.0.1', '0.0.0.0'].filter((v) => [...($request.dnsResult || {}).v4Addresses || []].includes(v)).length) {
|
||||||
// DNS poisoning
|
// DNS poisoning
|
||||||
args.matched = false;
|
args.matched = false;
|
||||||
args.region = 'global';
|
args.region = 'global';
|
||||||
}
|
}
|
||||||
if (!/\d$|:/.test(host) && host.includes('.')) {
|
if (!/\d$|:/.test(host) && host.includes('.') && !inHost) {
|
||||||
const data = JSON.parse($persistentStore.read(args.key) || '{}');
|
const data = JSON.parse($persistentStore.read(args.key) || '{}');
|
||||||
const saved_rules = $persistentStore.read(`${args.key}-${args.region}`);
|
const saved_rules = $persistentStore.read(`${args.key}-${args.region}`);
|
||||||
if (!evalRules(host, saved_rules)) {
|
if (!evalRules(host, saved_rules)) {
|
||||||
|
@ -38,14 +39,14 @@ args.key = args.key || 'Rule-Storage';
|
||||||
$persistentStore.write(text, `${args.key}-${args.region}`)
|
$persistentStore.write(text, `${args.key}-${args.region}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $persistentStore.write(JSON.stringify(data, null, 2), args.key)
|
return $persistentStore.write(JSON.stringify(data), args.key)
|
||||||
}
|
}
|
||||||
})().catch((e) => $notification.post(args.key, ``, e.message || e))
|
})().catch((e) => $notification.post(args.key, ``, e.message || e))
|
||||||
.finally(() => $done({ matched: Boolean(args.matched) }));
|
.finally(() => $done({ matched: Boolean(args.matched) }));
|
||||||
|
|
||||||
function saveDecision(host_name, content = {}) {
|
function saveDecision(host_name, content = {}) {
|
||||||
for (const i in content) {
|
for (const i in content) {
|
||||||
if (Date.now() - content[i].update_time > 86400000 * 30) {
|
if (Date.now() - content[i].update_time > 86400000 * (args.cacheDays || 30)) {
|
||||||
delete content[i];
|
delete content[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue