Compare commits

...

3 Commits

Author SHA1 Message Date
xream
9c5d6e9a10 feat: 单条订阅和文件支持链接参数 produceType raw, 此时返回原始数据的数组
Some checks failed
build / build (push) Has been cancelled
2025-05-22 16:09:35 +08:00
xream
ef2d6be8eb feat: 预处理支持 Base64 兜底 2025-05-22 15:17:38 +08:00
xream
04e12a4836 fix: 修复 SOCKS5 URI
Some checks failed
build / build (push) Has been cancelled
2025-05-21 01:39:30 +08:00
4 changed files with 34 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "sub-store",
"version": "2.19.44",
"version": "2.19.47",
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket.",
"main": "src/main.js",
"scripts": {

View File

@@ -50,6 +50,26 @@ function Base64Encoded() {
return { name, test, parse };
}
function fallbackBase64Encoded() {
const name = 'Fallback Base64 Pre-processor';
const test = function (raw) {
return true;
};
const parse = function (raw) {
const decoded = Base64.decode(raw);
if (!/^\w+(:\/\/|\s*?=\s*?)\w+/m.test(decoded)) {
$.error(
`Fallback Base64 Pre-processor error: decoded line does not start with protocol`,
);
return raw;
}
return decoded;
};
return { name, test, parse };
}
function Clash() {
const name = 'Clash Pre-processor';
const test = function (raw) {
@@ -163,4 +183,11 @@ function FullConfig() {
return { name, test, parse };
}
export default [HTML(), Clash(), Base64Encoded(), SSD(), FullConfig()];
export default [
HTML(),
Clash(),
Base64Encoded(),
SSD(),
FullConfig(),
fallbackBase64Encoded(),
];

View File

@@ -33,7 +33,9 @@ export default function URI_Producer() {
switch (proxy.type) {
case 'socks5':
result = `socks://${encodeURIComponent(
Base64.encode(`${proxy.username}:${proxy.password}`),
Base64.encode(
`${proxy.username ?? ''}:${proxy.password ?? ''}`,
),
)}@${proxy.server}:${proxy.port}#${proxy.name}`;
break;
case 'ss':

View File

@@ -174,7 +174,7 @@ async function produceArtifact({
}
}
if (produceType === 'raw') {
return (Array.isArray(raw) ? raw : [raw]).flat();
return JSON.stringify((Array.isArray(raw) ? raw : [raw]).flat());
}
// parse proxies
let proxies = (Array.isArray(raw) ? raw : [raw])
@@ -574,7 +574,7 @@ async function produceArtifact({
}
}
if (produceType === 'raw') {
return (Array.isArray(raw) ? raw : [raw]).flat();
return JSON.stringify((Array.isArray(raw) ? raw : [raw]).flat());
}
const files = (Array.isArray(raw) ? raw : [raw]).flat();
let filesContent = files