mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-10 22:19:00 +08:00
Fixed Clash config memory issue
This commit is contained in:
parent
ad660da24b
commit
34474c193b
@ -146,8 +146,16 @@ async function parseSub(sub, platform) {
|
|||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
});
|
});
|
||||||
|
// trim Clash config to save memory
|
||||||
|
const start = raw.indexOf("proxies:");
|
||||||
|
if (start !== -1) {
|
||||||
|
const end = raw.lastIndexOf("}") + 1;
|
||||||
|
raw = raw.substring(start, end);
|
||||||
|
}
|
||||||
$.write(raw, `#${key}`);
|
$.write(raw, `#${key}`);
|
||||||
} else {
|
} else {
|
||||||
|
// 我也不知道这里为什么要等10ms,不加Surge报错。
|
||||||
|
await $.wait(10);
|
||||||
raw = cache;
|
raw = cache;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -158,6 +166,12 @@ async function parseSub(sub, platform) {
|
|||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
});
|
});
|
||||||
|
// trim Clash config to save memory
|
||||||
|
const start = raw.indexOf("proxies:");
|
||||||
|
if (start !== -1) {
|
||||||
|
const end = raw.lastIndexOf("}") + 1;
|
||||||
|
raw = raw.substring(start, end);
|
||||||
|
}
|
||||||
$.write(raw, `#${sub.url}`);
|
$.write(raw, `#${sub.url}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,6 +662,7 @@ function ProxyParser(targetPlatform) {
|
|||||||
// HTML format, maybe a wrong URL!
|
// HTML format, maybe a wrong URL!
|
||||||
throw new Error("Invalid format HTML!");
|
throw new Error("Invalid format HTML!");
|
||||||
} else if (raw.indexOf("proxies") !== -1) {
|
} else if (raw.indexOf("proxies") !== -1) {
|
||||||
|
console.log(`Preprocessing Clash config...`);
|
||||||
// Clash YAML format
|
// Clash YAML format
|
||||||
// codes are modified from @KOP-XIAO
|
// codes are modified from @KOP-XIAO
|
||||||
// https://github.com/KOP-XIAO/QuantumultX
|
// https://github.com/KOP-XIAO/QuantumultX
|
||||||
@ -664,6 +679,7 @@ function ProxyParser(targetPlatform) {
|
|||||||
.replace(/,/g, "\n ")
|
.replace(/,/g, "\n ")
|
||||||
}
|
}
|
||||||
raw = raw.replace(/ -\n.*name/g, " - name").replace(/\$|\`/g, "").split("proxy-providers:")[0].split("proxy-groups:")[0].replace(/\"(name|type|server|port|cipher|password|)\"/g, "$1")
|
raw = raw.replace(/ -\n.*name/g, " - name").replace(/\$|\`/g, "").split("proxy-providers:")[0].split("proxy-groups:")[0].replace(/\"(name|type|server|port|cipher|password|)\"/g, "$1")
|
||||||
|
console.log(raw);
|
||||||
const proxies = YAML.eval(raw).proxies;
|
const proxies = YAML.eval(raw).proxies;
|
||||||
output = proxies.map((p) => JSON.stringify(p));
|
output = proxies.map((p) => JSON.stringify(p));
|
||||||
} else if (raw.indexOf("ssd://") === 0) {
|
} else if (raw.indexOf("ssd://") === 0) {
|
||||||
@ -1774,6 +1790,7 @@ function URI_Producer() {
|
|||||||
result += encodeURIComponent(`v2ray-plugin;obfs=${opts.mode}${opts.host ? ";obfs-host" + opts.host : ""}${opts.tls ? ";tls" : ""}`);
|
result += encodeURIComponent(`v2ray-plugin;obfs=${opts.mode}${opts.host ? ";obfs-host" + opts.host : ""}${opts.tls ? ";tls" : ""}`);
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
|
console.log(`FUCK`);
|
||||||
throw new Error(`Unsupported plugin option: ${proxy.plugin}`);
|
throw new Error(`Unsupported plugin option: ${proxy.plugin}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2461,7 +2478,7 @@ function HTTP(defaultOptions = {}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function API(name = "untitled", debug = false) {
|
function API(name = "untitled", debug = false) {
|
||||||
const {isQX, isLoon, isSurge, isNode, isJSBox} = ENV();
|
const {isQX, isLoon, isSurge, isNode, isJSBox, isScriptable} = ENV();
|
||||||
return new (class {
|
return new (class {
|
||||||
constructor(name, debug) {
|
constructor(name, debug) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -2495,8 +2512,7 @@ function API(name = "untitled", debug = false) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// persistance
|
// persistent
|
||||||
|
|
||||||
// initialize cache
|
// initialize cache
|
||||||
initCache() {
|
initCache() {
|
||||||
if (isQX) this.cache = JSON.parse($prefs.valueForKey(this.name) || "{}");
|
if (isQX) this.cache = JSON.parse($prefs.valueForKey(this.name) || "{}");
|
||||||
@ -2559,7 +2575,7 @@ function API(name = "untitled", debug = false) {
|
|||||||
this.log(`SET ${key}`);
|
this.log(`SET ${key}`);
|
||||||
if (key.indexOf("#") !== -1) {
|
if (key.indexOf("#") !== -1) {
|
||||||
key = key.substr(1);
|
key = key.substr(1);
|
||||||
if (isSurge || isLoon) {
|
if (isSurge & isLoon) {
|
||||||
$persistentStore.write(data, key);
|
$persistentStore.write(data, key);
|
||||||
}
|
}
|
||||||
if (isQX) {
|
if (isQX) {
|
||||||
@ -2578,7 +2594,7 @@ function API(name = "untitled", debug = false) {
|
|||||||
this.log(`READ ${key}`);
|
this.log(`READ ${key}`);
|
||||||
if (key.indexOf("#") !== -1) {
|
if (key.indexOf("#") !== -1) {
|
||||||
key = key.substr(1);
|
key = key.substr(1);
|
||||||
if (isSurge || isLoon) {
|
if (isSurge & isLoon) {
|
||||||
return $persistentStore.read(key);
|
return $persistentStore.read(key);
|
||||||
}
|
}
|
||||||
if (isQX) {
|
if (isQX) {
|
||||||
@ -2623,8 +2639,17 @@ function API(name = "untitled", debug = false) {
|
|||||||
|
|
||||||
if (isQX) $notify(title, subtitle, content, options);
|
if (isQX) $notify(title, subtitle, content, options);
|
||||||
if (isSurge) $notification.post(title, subtitle, content_);
|
if (isSurge) $notification.post(title, subtitle, content_);
|
||||||
if (isLoon) $notification.post(title, subtitle, content, openURL);
|
if (isLoon) {
|
||||||
if (isNode) {
|
let opts = {};
|
||||||
|
if (openURL) opts["openUrl"] = openURL;
|
||||||
|
if (mediaURL) opts["mediaUrl"] = mediaURL;
|
||||||
|
if (JSON.stringify(opts) === '{}') {
|
||||||
|
$notification.post(title, subtitle, content);
|
||||||
|
} else {
|
||||||
|
$notification.post(title, subtitle, content, opts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isNode || isScriptable) {
|
||||||
if (isJSBox) {
|
if (isJSBox) {
|
||||||
const push = require("push");
|
const push = require("push");
|
||||||
push.schedule({
|
push.schedule({
|
||||||
@ -2649,6 +2674,22 @@ function API(name = "untitled", debug = false) {
|
|||||||
error(msg) {
|
error(msg) {
|
||||||
console.log("ERROR: " + msg);
|
console.log("ERROR: " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wait(millisec) {
|
||||||
|
return new Promise((resolve) => setTimeout(resolve, millisec));
|
||||||
|
}
|
||||||
|
|
||||||
|
done(value = {}) {
|
||||||
|
if (isQX || isLoon || isSurge) {
|
||||||
|
$done(value);
|
||||||
|
} else if (isNode && !isJSBox) {
|
||||||
|
if (typeof $context !== "undefined") {
|
||||||
|
$context.headers = value.headers;
|
||||||
|
$context.statusCode = value.statusCode;
|
||||||
|
$context.body = value.body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
})(name, debug);
|
})(name, debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,4 +4,4 @@
|
|||||||
hostname=%APPEND% sub.store
|
hostname=%APPEND% sub.store
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
Sub-Store = type=http-request,pattern=^https?:\/\/sub\.store,script-path=https://raw.githubusercontent.com/Peng-YM/Sub-Store/master/backend/sub-store.js,requires-body=true,timeout=120
|
Sub-Store = type=http-request,pattern=^https?:\/\/sub\.store,script-path=https://raw.githubusercontent.com/Peng-YM/Sub-Store/master/backend/sub-store.js,requires-body=true,timeout=120,max-size=131072
|
||||||
|
@ -69,7 +69,9 @@
|
|||||||
<v-card-title>
|
<v-card-title>
|
||||||
{{ info.name }}
|
{{ info.name }}
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
<vue-q-r-code-component
|
<vue-q-r-code-component
|
||||||
:text="qr"
|
:text="qr"
|
||||||
/>
|
/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user