mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-11 01:09:01 +08:00
Bug fixes
1. 当 VMess 的 alterId 为 0 时,AEAD 会自动开启。 2. 更新了 Clash 的 VMess Websocket 参数写法,旧版本的写法(如 ws-path, ws-headers 等)已不被支持。
This commit is contained in:
parent
991bedd663
commit
0a96cb9df1
@ -873,8 +873,7 @@ function service() {
|
|||||||
return "Loon";
|
return "Loon";
|
||||||
} else if (UA.indexOf("Stash") !== -1) {
|
} else if (UA.indexOf("Stash") !== -1) {
|
||||||
return "Clash";
|
return "Clash";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1305,14 +1304,14 @@ var ProxyUtils = (function () {
|
|||||||
// handle ws headers
|
// handle ws headers
|
||||||
if (params.obfs === "ws" || params.obfs === "wss") {
|
if (params.obfs === "ws" || params.obfs === "wss") {
|
||||||
proxy.network = "ws";
|
proxy.network = "ws";
|
||||||
proxy["ws-path"] = (params["obfs-path"] || '"/"').match(
|
proxy["ws-opts"].path = (params["obfs-path"] || '"/"').match(
|
||||||
/^"(.*)"$/
|
/^"(.*)"$/
|
||||||
)[1];
|
)[1];
|
||||||
let obfs_host = params["obfs-header"];
|
let obfs_host = params["obfs-header"];
|
||||||
if (obfs_host && obfs_host.indexOf("Host") !== -1) {
|
if (obfs_host && obfs_host.indexOf("Host") !== -1) {
|
||||||
obfs_host = obfs_host.match(/Host:\s*([a-zA-Z0-9-.]*)/)[1];
|
obfs_host = obfs_host.match(/Host:\s*([a-zA-Z0-9-.]*)/)[1];
|
||||||
}
|
}
|
||||||
proxy["ws-headers"] = {
|
proxy["ws-opts"].headers = {
|
||||||
Host: obfs_host || proxy.server, // if no host provided, use the same as server
|
Host: obfs_host || proxy.server, // if no host provided, use the same as server
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -1345,10 +1344,10 @@ var ProxyUtils = (function () {
|
|||||||
// handle obfs
|
// handle obfs
|
||||||
if (params.net === "ws") {
|
if (params.net === "ws") {
|
||||||
proxy.network = "ws";
|
proxy.network = "ws";
|
||||||
proxy["ws-path"] = params.path;
|
proxy["ws-opts"] = {
|
||||||
proxy["ws-headers"] = {
|
path: params.path,
|
||||||
Host: params.host || params.add,
|
headers: {Host: params.host || params.add}
|
||||||
};
|
}
|
||||||
if (proxy.tls && params.host) {
|
if (proxy.tls && params.host) {
|
||||||
proxy.sni = params.host;
|
proxy.sni = params.host;
|
||||||
}
|
}
|
||||||
@ -1538,9 +1537,11 @@ var ProxyUtils = (function () {
|
|||||||
// handle ws headers
|
// handle ws headers
|
||||||
if (params.obfs === "ws" || params.obfs === "wss") {
|
if (params.obfs === "ws" || params.obfs === "wss") {
|
||||||
proxy.network = "ws";
|
proxy.network = "ws";
|
||||||
proxy["ws-path"] = params["obfs-uri"];
|
proxy["ws-opts"] = {
|
||||||
proxy["ws-headers"] = {
|
path: params["obfs-uri"],
|
||||||
Host: params["obfs-host"] || params.server, // if no host provided, use the same as server
|
headers: {
|
||||||
|
Host: params["obfs-host"] || params.server, // if no host provided, use the same as server
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return proxy;
|
return proxy;
|
||||||
@ -1725,9 +1726,11 @@ var ProxyUtils = (function () {
|
|||||||
break;
|
break;
|
||||||
case "ws":
|
case "ws":
|
||||||
proxy.network = params.transport;
|
proxy.network = params.transport;
|
||||||
proxy["ws-path"] = params.path;
|
proxy["ws-opts"] = {
|
||||||
proxy["ws-headers"] = {
|
path: params.path,
|
||||||
Host: params.host,
|
headers: {
|
||||||
|
Host: params.host,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (proxy.tls) {
|
if (proxy.tls) {
|
||||||
@ -1869,10 +1872,13 @@ var ProxyUtils = (function () {
|
|||||||
// use websocket
|
// use websocket
|
||||||
if (JSON.parse(params.ws || "false")) {
|
if (JSON.parse(params.ws || "false")) {
|
||||||
proxy.network = "ws";
|
proxy.network = "ws";
|
||||||
proxy["ws-path"] = params["ws-path"];
|
proxy["ws-opts"] = {
|
||||||
|
path: params["ws-path"]
|
||||||
|
};
|
||||||
|
|
||||||
const res = params["ws-headers"].match(/(,|^|\s)*HOST:\s*(.*?)(,|$)/);
|
const res = params["ws-headers"].match(/(,|^|\s)*HOST:\s*(.*?)(,|$)/);
|
||||||
const host = res ? res[2] : proxy.server;
|
const host = res ? res[2] : proxy.server;
|
||||||
proxy["ws-headers"] = {
|
proxy["ws-opts"].headers = {
|
||||||
Host: host || params.server,
|
Host: host || params.server,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -2477,15 +2483,15 @@ var ProxyUtils = (function () {
|
|||||||
if (proxy.tls) {
|
if (proxy.tls) {
|
||||||
// ws-tls
|
// ws-tls
|
||||||
obfs_opts = `,obfs=wss${proxy.sni ? ",obfs-host=" + proxy.sni : ""
|
obfs_opts = `,obfs=wss${proxy.sni ? ",obfs-host=" + proxy.sni : ""
|
||||||
}${proxy["ws-path"] ? ",obfs-uri=" + proxy["ws-path"] : ""
|
}${proxy["ws-opts"].path ? ",obfs-uri=" + proxy["ws-opts"].path : ""
|
||||||
},tls-verification=${proxy["skip-cert-verify"] ? "false" : "true"
|
},tls-verification=${proxy["skip-cert-verify"] ? "false" : "true"
|
||||||
}`;
|
}`;
|
||||||
} else {
|
} else {
|
||||||
// ws
|
// ws
|
||||||
obfs_opts = `,obfs=ws${proxy["ws-headers"].Host
|
obfs_opts = `,obfs=ws${proxy["ws-opts"].headers.Host
|
||||||
? ",obfs-host=" + proxy["ws-headers"].Host
|
? ",obfs-host=" + proxy["ws-opts"].headers.Host
|
||||||
: ""
|
: ""
|
||||||
}${proxy["ws-path"] ? ",obfs-uri=" + proxy["ws-path"] : ""}`;
|
}${proxy["ws-opts"].path ? ",obfs-uri=" + proxy["ws-opts"].path : ""}`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// tcp
|
// tcp
|
||||||
@ -2498,6 +2504,7 @@ var ProxyUtils = (function () {
|
|||||||
let result = `vmess=${proxy.server}:${proxy.port},method=${proxy.cipher === "auto" ? "none" : proxy.cipher
|
let result = `vmess=${proxy.server}:${proxy.port},method=${proxy.cipher === "auto" ? "none" : proxy.cipher
|
||||||
},password=${proxy.uuid}${obfs_opts}${proxy.tfo ? ",fast-open=true" : ",fast-open=false"
|
},password=${proxy.uuid}${obfs_opts}${proxy.tfo ? ",fast-open=true" : ",fast-open=false"
|
||||||
}${proxy.udp ? ",udp-relay=true" : ",udp-relay=false"}`;
|
}${proxy.udp ? ",udp-relay=true" : ",udp-relay=false"}`;
|
||||||
|
if (proxy.alterId === 0) proxy['vmess-aead'] = true;
|
||||||
if (typeof proxy['vmess-aead'] !== "undefined") {
|
if (typeof proxy['vmess-aead'] !== "undefined") {
|
||||||
result += `,aead=${proxy['vmess-aead']}`;
|
result += `,aead=${proxy['vmess-aead']}`;
|
||||||
}
|
}
|
||||||
@ -2529,7 +2536,7 @@ var ProxyUtils = (function () {
|
|||||||
function Loon_Producer() {
|
function Loon_Producer() {
|
||||||
const targetPlatform = "Loon";
|
const targetPlatform = "Loon";
|
||||||
const produce = (proxy) => {
|
const produce = (proxy) => {
|
||||||
let obfs_opts, tls_opts, udp_opts, tfo_opts;
|
let obfs_opts = "", tls_opts = "", udp_opts = "", tfo_opts = "";
|
||||||
if (typeof proxy.udp !== "undefined") {
|
if (typeof proxy.udp !== "undefined") {
|
||||||
udp_opts = proxy.udp ? ",udp=true" : ",udp=false";
|
udp_opts = proxy.udp ? ",udp=true" : ",udp=false";
|
||||||
}
|
}
|
||||||
@ -2559,8 +2566,8 @@ var ProxyUtils = (function () {
|
|||||||
case "vmess":
|
case "vmess":
|
||||||
obfs_opts = "";
|
obfs_opts = "";
|
||||||
if (proxy.network === "ws") {
|
if (proxy.network === "ws") {
|
||||||
const host = proxy["ws-headers"].Host || proxy.server;
|
const host = proxy["ws-opts"].headers.Host || proxy.server;
|
||||||
obfs_opts = `,transport:ws,host:${host},path:${proxy["ws-path"] || "/"
|
obfs_opts = `,transport:ws,host:${host},path:${proxy["ws-opts"].path || "/"
|
||||||
}`;
|
}`;
|
||||||
} else {
|
} else {
|
||||||
obfs_opts = `,transport:tcp`;
|
obfs_opts = `,transport:tcp`;
|
||||||
@ -2571,6 +2578,7 @@ var ProxyUtils = (function () {
|
|||||||
}
|
}
|
||||||
let result = `${proxy.name}=vmess,${proxy.server},${proxy.port},${proxy.cipher === "auto" ? "none" : proxy.cipher
|
let result = `${proxy.name}=vmess,${proxy.server},${proxy.port},${proxy.cipher === "auto" ? "none" : proxy.cipher
|
||||||
},"${proxy.uuid}",over-tls:${proxy.tls || "false"}${obfs_opts}`;
|
},"${proxy.uuid}",over-tls:${proxy.tls || "false"}${obfs_opts}`;
|
||||||
|
if (proxy.alterId === 0) proxy['vmess-aead'] = true;
|
||||||
if (typeof proxy['vmess-aead'] !== "undefined") {
|
if (typeof proxy['vmess-aead'] !== "undefined") {
|
||||||
result += `,vmess-aead=${proxy['vmess-aead']}`;
|
result += `,vmess-aead=${proxy['vmess-aead']}`;
|
||||||
}
|
}
|
||||||
@ -2625,12 +2633,14 @@ var ProxyUtils = (function () {
|
|||||||
result = `${proxy.name}=vmess,${proxy.server},${proxy.port
|
result = `${proxy.name}=vmess,${proxy.server},${proxy.port
|
||||||
},username=${proxy.uuid},tls=${proxy.tls || "false"},tfo=${proxy.tfo || "false"
|
},username=${proxy.uuid},tls=${proxy.tls || "false"},tfo=${proxy.tfo || "false"
|
||||||
}`;
|
}`;
|
||||||
|
|
||||||
|
if (proxy.alterId === 0) proxy['vmess-aead'] = true;
|
||||||
if (typeof proxy['vmess-aead'] !== "undefined") {
|
if (typeof proxy['vmess-aead'] !== "undefined") {
|
||||||
result += `,vmess-aead=${proxy['vmess-aead']}`;
|
result += `,vmess-aead=${proxy['vmess-aead']}`;
|
||||||
}
|
}
|
||||||
if (proxy.network === "ws") {
|
if (proxy.network === "ws") {
|
||||||
const path = proxy["ws-path"] || "/";
|
const path = proxy["ws-opts"].path || "/";
|
||||||
const wsHeaders = Object.entries(proxy["ws-headers"]).map(
|
const wsHeaders = Object.entries(proxy["ws-opts"].headers).map(
|
||||||
([key, value]) => (`${key}:"${value}"`))
|
([key, value]) => (`${key}:"${value}"`))
|
||||||
.join('|');
|
.join('|');
|
||||||
result += `,ws=true${path ? ",ws-path=" + path : ""}${wsHeaders ? ",ws-headers=" + wsHeaders : ""}`;
|
result += `,ws=true${path ? ",ws-path=" + path : ""}${wsHeaders ? ",ws-headers=" + wsHeaders : ""}`;
|
||||||
@ -2746,8 +2756,8 @@ var ProxyUtils = (function () {
|
|||||||
};
|
};
|
||||||
// obfs
|
// obfs
|
||||||
if (proxy.network === "ws") {
|
if (proxy.network === "ws") {
|
||||||
result.path = proxy["ws-path"] || "/";
|
result.path = proxy["ws-opts"].path || "/";
|
||||||
result.host = proxy["ws-headers"].Host || proxy.server;
|
result.host = proxy["ws-opts"].headers.Host || proxy.server;
|
||||||
}
|
}
|
||||||
result = "vmess://" + Base64.safeEncode(JSON.stringify(result));
|
result = "vmess://" + Base64.safeEncode(JSON.stringify(result));
|
||||||
break;
|
break;
|
||||||
|
4
backend/sub-store.min.js
vendored
4
backend/sub-store.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user