Skip to content

Commit 4790bf4

Browse files
committed
feat: Surge 密码解析支持首尾成对的单引号双引号, 输出时增加双引号
1 parent 56fd495 commit 4790bf4

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sub-store",
3-
"version": "2.14.417",
3+
"version": "2.14.418",
44
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
55
"main": "src/main.js",
66
"scripts": {

backend/src/core/proxy-utils/parsers/peggy/surge.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ snell_psk = comma "psk" equals match:[^,]+ { proxy.psk = match.join(""); }
193193
snell_version = comma "version" equals match:$[0-9]+ { proxy.version = parseInt(match.trim()); }
194194
195195
usernamek = comma "username" equals match:[^,]+ { proxy.username = match.join(""); }
196-
passwordk = comma "password" equals match:[^,]+ { proxy.password = match.join(""); }
196+
passwordk = comma "password" equals match:[^,]+ { proxy.password = match.join("").replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
197197
vmess_uuid = comma "username" equals match:[^,]+ { proxy.uuid = match.join(""); }
198198
vmess_aead = comma "vmess-aead" equals flag:bool { proxy.aead = flag; }
199199

backend/src/core/proxy-utils/parsers/peggy/surge.peg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ snell_psk = comma "psk" equals match:[^,]+ { proxy.psk = match.join(""); }
191191
snell_version = comma "version" equals match:$[0-9]+ { proxy.version = parseInt(match.trim()); }
192192

193193
usernamek = comma "username" equals match:[^,]+ { proxy.username = match.join(""); }
194-
passwordk = comma "password" equals match:[^,]+ { proxy.password = match.join(""); }
194+
passwordk = comma "password" equals match:[^,]+ { proxy.password = match.join("").replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
195195
vmess_uuid = comma "username" equals match:[^,]+ { proxy.uuid = match.join(""); }
196196
vmess_aead = comma "vmess-aead" equals flag:bool { proxy.aead = flag; }
197197

backend/src/core/proxy-utils/producers/surge.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function shadowsocks(proxy, includeUnsupportedProxy) {
9393
throw new Error(`cipher ${proxy.cipher} is not supported`);
9494
}
9595
result.append(`,encrypt-method=${proxy.cipher}`);
96-
result.appendIfPresent(`,password=${proxy.password}`, 'password');
96+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
9797

9898
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
9999
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');
@@ -193,7 +193,7 @@ function shadowsocks(proxy, includeUnsupportedProxy) {
193193
function trojan(proxy) {
194194
const result = new Result(proxy);
195195
result.append(`${proxy.name}=${proxy.type},${proxy.server},${proxy.port}`);
196-
result.appendIfPresent(`,password=${proxy.password}`, 'password');
196+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
197197

198198
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
199199
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');
@@ -366,7 +366,7 @@ function ssh(proxy) {
366366
result.append(`${proxy.name}=ssh,${proxy.server},${proxy.port}`);
367367
result.appendIfPresent(`,${proxy.username}`, 'username');
368368
// 所有的类似的字段都有双引号的问题 暂不处理
369-
result.appendIfPresent(`,${proxy.password}`, 'password');
369+
result.appendIfPresent(`,"${proxy.password}"`, 'password');
370370

371371
// https://manual.nssurge.com/policy/ssh.html
372372
// 需配合 Keystore
@@ -431,7 +431,7 @@ function http(proxy) {
431431
const type = proxy.tls ? 'https' : 'http';
432432
result.append(`${proxy.name}=${type},${proxy.server},${proxy.port}`);
433433
result.appendIfPresent(`,${proxy.username}`, 'username');
434-
result.appendIfPresent(`,${proxy.password}`, 'password');
434+
result.appendIfPresent(`,"${proxy.password}"`, 'password');
435435

436436
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
437437
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');
@@ -509,7 +509,7 @@ function socks5(proxy) {
509509
const type = proxy.tls ? 'socks5-tls' : 'socks5';
510510
result.append(`${proxy.name}=${type},${proxy.server},${proxy.port}`);
511511
result.appendIfPresent(`,${proxy.username}`, 'username');
512-
result.appendIfPresent(`,${proxy.password}`, 'password');
512+
result.appendIfPresent(`,"${proxy.password}"`, 'password');
513513

514514
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
515515
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');
@@ -675,7 +675,7 @@ function tuic(proxy) {
675675
result.append(`${proxy.name}=${type},${proxy.server},${proxy.port}`);
676676

677677
result.appendIfPresent(`,uuid=${proxy.uuid}`, 'uuid');
678-
result.appendIfPresent(`,password=${proxy.password}`, 'password');
678+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
679679
result.appendIfPresent(`,token=${proxy.token}`, 'token');
680680

681681
result.appendIfPresent(
@@ -950,7 +950,7 @@ function hysteria2(proxy) {
950950
const result = new Result(proxy);
951951
result.append(`${proxy.name}=hysteria2,${proxy.server},${proxy.port}`);
952952

953-
result.appendIfPresent(`,password=${proxy.password}`, 'password');
953+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
954954

955955
if (isPresent(proxy, 'ports')) {
956956
result.append(`,port-hopping="${proxy.ports.replace(/,/g, ';')}"`);

0 commit comments

Comments
 (0)