mirror of
https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-10 00:52:40 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17b12711b4 | ||
|
|
c266635ba1 | ||
|
|
f34eac9568 | ||
|
|
aa5b51a3cc |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sub-store",
|
"name": "sub-store",
|
||||||
"version": "2.19.68",
|
"version": "2.19.73",
|
||||||
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket.",
|
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket.",
|
||||||
"main": "src/main.js",
|
"main": "src/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import getLoonParser from './peggy/loon';
|
|||||||
import getQXParser from './peggy/qx';
|
import getQXParser from './peggy/qx';
|
||||||
import getTrojanURIParser from './peggy/trojan-uri';
|
import getTrojanURIParser from './peggy/trojan-uri';
|
||||||
import $ from '@/core/app';
|
import $ from '@/core/app';
|
||||||
|
import JSON5 from 'json5';
|
||||||
|
|
||||||
import { Base64 } from 'js-base64';
|
import { Base64 } from 'js-base64';
|
||||||
|
|
||||||
@@ -1130,14 +1131,14 @@ function Clash_All() {
|
|||||||
const name = 'Clash Parser';
|
const name = 'Clash Parser';
|
||||||
const test = (line) => {
|
const test = (line) => {
|
||||||
try {
|
try {
|
||||||
JSON.parse(line);
|
JSON5.parse(line);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
const parse = (line) => {
|
const parse = (line) => {
|
||||||
const proxy = JSON.parse(line);
|
const proxy = JSON5.parse(line);
|
||||||
if (
|
if (
|
||||||
![
|
![
|
||||||
'anytls',
|
'anytls',
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
import { isPresent } from '@/core/proxy-utils/producers/utils';
|
import { isPresent } from '@/core/proxy-utils/producers/utils';
|
||||||
|
|
||||||
|
const ipVersions = {
|
||||||
|
dual: 'dual',
|
||||||
|
'v4-only': 'ipv4',
|
||||||
|
'v6-only': 'ipv6',
|
||||||
|
'prefer-v4': 'ipv4-prefer',
|
||||||
|
'prefer-v6': 'ipv6-prefer',
|
||||||
|
};
|
||||||
|
|
||||||
export default function ClashMeta_Producer() {
|
export default function ClashMeta_Producer() {
|
||||||
const type = 'ALL';
|
const type = 'ALL';
|
||||||
const produce = (proxies, type, opts = {}) => {
|
const produce = (proxies, type, opts = {}) => {
|
||||||
@@ -242,6 +250,11 @@ export default function ClashMeta_Producer() {
|
|||||||
delete proxy[`${proxy.network}-opts`]['_grpc-type'];
|
delete proxy[`${proxy.network}-opts`]['_grpc-type'];
|
||||||
delete proxy[`${proxy.network}-opts`]['_grpc-authority'];
|
delete proxy[`${proxy.network}-opts`]['_grpc-authority'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (proxy['ip-version']) {
|
||||||
|
proxy['ip-version'] =
|
||||||
|
ipVersions[proxy['ip-version']] || proxy['ip-version'];
|
||||||
|
}
|
||||||
return proxy;
|
return proxy;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,26 @@ import ClashMeta_Producer from './clashmeta';
|
|||||||
import $ from '@/core/app';
|
import $ from '@/core/app';
|
||||||
import { isIPv4, isIPv6 } from '@/utils';
|
import { isIPv4, isIPv6 } from '@/utils';
|
||||||
|
|
||||||
|
const ipVersions = {
|
||||||
|
ipv4: 'ipv4_only',
|
||||||
|
ipv6: 'ipv6_only',
|
||||||
|
'v4-only': 'ipv4_only',
|
||||||
|
'v6-only': 'ipv6_only',
|
||||||
|
'ipv4-prefer': 'prefer_ipv4',
|
||||||
|
'ipv6-prefer': 'prefer_ipv6',
|
||||||
|
'prefer-v4': 'prefer_ipv4',
|
||||||
|
'prefer-v6': 'prefer_ipv6',
|
||||||
|
};
|
||||||
|
|
||||||
|
const ipVersionParser = (proxy, parsedProxy) => {
|
||||||
|
const strategy = ipVersions[proxy['ip-version']];
|
||||||
|
if (proxy._dns_server && strategy) {
|
||||||
|
parsedProxy.domain_resolver = {
|
||||||
|
server: proxy._dns_server,
|
||||||
|
strategy,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
const detourParser = (proxy, parsedProxy) => {
|
const detourParser = (proxy, parsedProxy) => {
|
||||||
parsedProxy.detour = proxy['dialer-proxy'] || proxy.detour;
|
parsedProxy.detour = proxy['dialer-proxy'] || proxy.detour;
|
||||||
};
|
};
|
||||||
@@ -278,6 +298,7 @@ const sshParser = (proxy = {}) => {
|
|||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -305,6 +326,7 @@ const httpParser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -327,6 +349,7 @@ const socks5Parser = (proxy = {}) => {
|
|||||||
networkParser(proxy, parsedProxy);
|
networkParser(proxy, parsedProxy);
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -338,6 +361,17 @@ const shadowTLSParser = (proxy = {}) => {
|
|||||||
password: proxy.password,
|
password: proxy.password,
|
||||||
detour: `${proxy.name}_shadowtls`,
|
detour: `${proxy.name}_shadowtls`,
|
||||||
};
|
};
|
||||||
|
if (proxy.uot) ssPart.udp_over_tcp = true;
|
||||||
|
if (proxy['udp-over-tcp']) {
|
||||||
|
ssPart.udp_over_tcp = {
|
||||||
|
enabled: true,
|
||||||
|
version:
|
||||||
|
!proxy['udp-over-tcp-version'] ||
|
||||||
|
proxy['udp-over-tcp-version'] === 1
|
||||||
|
? 1
|
||||||
|
: 2,
|
||||||
|
};
|
||||||
|
}
|
||||||
const stPart = {
|
const stPart = {
|
||||||
tag: `${proxy.name}_shadowtls`,
|
tag: `${proxy.name}_shadowtls`,
|
||||||
type: 'shadowtls',
|
type: 'shadowtls',
|
||||||
@@ -360,6 +394,7 @@ const shadowTLSParser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, stPart);
|
tfoParser(proxy, stPart);
|
||||||
detourParser(proxy, stPart);
|
detourParser(proxy, stPart);
|
||||||
smuxParser(proxy.smux, ssPart);
|
smuxParser(proxy.smux, ssPart);
|
||||||
|
ipVersionParser(proxy, stPart);
|
||||||
return { type: 'ss-with-st', ssPart, stPart };
|
return { type: 'ss-with-st', ssPart, stPart };
|
||||||
};
|
};
|
||||||
const ssParser = (proxy = {}) => {
|
const ssParser = (proxy = {}) => {
|
||||||
@@ -389,6 +424,7 @@ const ssParser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
if (proxy.plugin) {
|
if (proxy.plugin) {
|
||||||
const optArr = [];
|
const optArr = [];
|
||||||
if (proxy.plugin === 'obfs') {
|
if (proxy.plugin === 'obfs') {
|
||||||
@@ -467,6 +503,7 @@ const ssrParser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -505,6 +542,7 @@ const vmessParser = (proxy = {}) => {
|
|||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -521,7 +559,8 @@ const vlessParser = (proxy = {}) => {
|
|||||||
throw 'invalid port';
|
throw 'invalid port';
|
||||||
if (proxy.xudp) parsedProxy.packet_encoding = 'xudp';
|
if (proxy.xudp) parsedProxy.packet_encoding = 'xudp';
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
if (proxy.flow === 'xtls-rprx-vision') parsedProxy.flow = proxy.flow;
|
// if (['xtls-rprx-vision', ''].includes(proxy.flow)) parsedProxy.flow = proxy.flow;
|
||||||
|
if (proxy.flow != null) parsedProxy.flow = proxy.flow;
|
||||||
if (proxy.network === 'ws') wsParser(proxy, parsedProxy);
|
if (proxy.network === 'ws') wsParser(proxy, parsedProxy);
|
||||||
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
||||||
networkParser(proxy, parsedProxy);
|
networkParser(proxy, parsedProxy);
|
||||||
@@ -529,6 +568,7 @@ const vlessParser = (proxy = {}) => {
|
|||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
const trojanParser = (proxy = {}) => {
|
const trojanParser = (proxy = {}) => {
|
||||||
@@ -550,6 +590,7 @@ const trojanParser = (proxy = {}) => {
|
|||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
const hysteriaParser = (proxy = {}) => {
|
const hysteriaParser = (proxy = {}) => {
|
||||||
@@ -599,6 +640,7 @@ const hysteriaParser = (proxy = {}) => {
|
|||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
const hysteria2Parser = (proxy = {}) => {
|
const hysteria2Parser = (proxy = {}) => {
|
||||||
@@ -632,6 +674,7 @@ const hysteria2Parser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
const tuic5Parser = (proxy = {}) => {
|
const tuic5Parser = (proxy = {}) => {
|
||||||
@@ -663,6 +706,7 @@ const tuic5Parser = (proxy = {}) => {
|
|||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
const anytlsParser = (proxy = {}) => {
|
const anytlsParser = (proxy = {}) => {
|
||||||
@@ -685,6 +729,7 @@ const anytlsParser = (proxy = {}) => {
|
|||||||
);
|
);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -742,6 +787,7 @@ const wireguardParser = (proxy = {}) => {
|
|||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
detourParser(proxy, parsedProxy);
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
|
ipVersionParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user