diff --git a/backend/package.json b/backend/package.json index cd6a73c..860dfa1 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.271", + "version": "2.14.272", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/core/proxy-utils/producers/clash.js b/backend/src/core/proxy-utils/producers/clash.js index 5348bab..45ff222 100644 --- a/backend/src/core/proxy-utils/producers/clash.js +++ b/backend/src/core/proxy-utils/producers/clash.js @@ -150,6 +150,13 @@ export default function Clash_Producer() { delete proxy.subName; delete proxy.collectionName; + delete proxy.id; + delete proxy.resolved; + for (const key in proxy) { + if (proxy[key] == null) { + delete proxy[key]; + } + } if ( ['grpc'].includes(proxy.network) && proxy[`${proxy.network}-opts`] diff --git a/backend/src/core/proxy-utils/producers/clashmeta.js b/backend/src/core/proxy-utils/producers/clashmeta.js index 882bb7e..a0594d1 100644 --- a/backend/src/core/proxy-utils/producers/clashmeta.js +++ b/backend/src/core/proxy-utils/producers/clashmeta.js @@ -165,6 +165,13 @@ export default function ClashMeta_Producer() { } delete proxy.subName; delete proxy.collectionName; + delete proxy.id; + delete proxy.resolved; + for (const key in proxy) { + if (proxy[key] == null) { + delete proxy[key]; + } + } if ( ['grpc'].includes(proxy.network) && proxy[`${proxy.network}-opts`] diff --git a/backend/src/core/proxy-utils/producers/shadowrocket.js b/backend/src/core/proxy-utils/producers/shadowrocket.js index 20e17f4..ce48ff6 100644 --- a/backend/src/core/proxy-utils/producers/shadowrocket.js +++ b/backend/src/core/proxy-utils/producers/shadowrocket.js @@ -168,6 +168,13 @@ export default function ShadowRocket_Producer() { } delete proxy.subName; delete proxy.collectionName; + delete proxy.id; + delete proxy.resolved; + for (const key in proxy) { + if (proxy[key] == null) { + delete proxy[key]; + } + } if ( ['grpc'].includes(proxy.network) && proxy[`${proxy.network}-opts`] diff --git a/backend/src/core/proxy-utils/producers/sing-box.js b/backend/src/core/proxy-utils/producers/sing-box.js index 1164865..dcc8103 100644 --- a/backend/src/core/proxy-utils/producers/sing-box.js +++ b/backend/src/core/proxy-utils/producers/sing-box.js @@ -789,7 +789,9 @@ export default function singbox_Producer() { $.error(e.message ?? e); } }); - return type === 'internal' ? list : JSON.stringify(list, null, 2); + return type === 'internal' + ? list + : JSON.stringify({ outbounds: list }, null, 2); }; return { type, produce }; } diff --git a/backend/src/core/proxy-utils/producers/stash.js b/backend/src/core/proxy-utils/producers/stash.js index 27f8995..7435a8e 100644 --- a/backend/src/core/proxy-utils/producers/stash.js +++ b/backend/src/core/proxy-utils/producers/stash.js @@ -257,6 +257,13 @@ export default function Stash_Producer() { delete proxy.subName; delete proxy.collectionName; + delete proxy.id; + delete proxy.resolved; + for (const key in proxy) { + if (proxy[key] == null) { + delete proxy[key]; + } + } if ( ['grpc'].includes(proxy.network) && proxy[`${proxy.network}-opts`] diff --git a/backend/src/core/proxy-utils/producers/uri.js b/backend/src/core/proxy-utils/producers/uri.js index 9ef86d0..da93b6a 100644 --- a/backend/src/core/proxy-utils/producers/uri.js +++ b/backend/src/core/proxy-utils/producers/uri.js @@ -8,6 +8,13 @@ export default function URI_Producer() { let result = ''; delete proxy.subName; delete proxy.collectionName; + delete proxy.id; + delete proxy.resolved; + for (const key in proxy) { + if (proxy[key] == null) { + delete proxy[key]; + } + } if (['trojan', 'tuic', 'hysteria', 'hysteria2'].includes(proxy.type)) { delete proxy.tls; } diff --git a/scripts/demo.js b/scripts/demo.js index 282b383..3ab3ae8 100644 --- a/scripts/demo.js +++ b/scripts/demo.js @@ -36,8 +36,13 @@ function operator(proxies = [], targetPlatform, context) { // isIPv6, // isIP, // yaml, // yaml 解析和生成 + // getFlag, // 获取 emoji 旗帜 + // getISO, // 获取 ISO 3166-1 alpha-2 代码 // } + // 示例: 给节点名添加前缀 + // $server.name = `[${ProxyUtils.getISO($server.name)}] ${$server.name}` + // 示例: 从 sni 文件中读取内容并进行节点操作 // const sni = await produceArtifact({ // type: 'file',