Skip to content

Commit 76e12bd

Browse files
committed
feat: Surge username password 逻辑优化
1 parent 3a33446 commit 76e12bd

4 files changed

Lines changed: 13 additions & 13 deletions

File tree

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.19.73",
3+
"version": "2.19.74",
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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ username = & {
179179
peg$currPos = end;
180180
return true;
181181
}
182-
} { proxy.username = $.username; }
183-
password = comma match:[^,]+ { proxy.password = match.join("").replace(/^"(.*)"$/, '$1'); }
182+
} { proxy.username = $.username.trim().replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
183+
password = comma match:[^,]+ { proxy.password = match.join("").replace(/^"(.*)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
184184
185185
tls = comma "tls" equals flag:bool { proxy.tls = flag; }
186186
sni = comma "sni" equals sni:("off"/domain) {
@@ -196,7 +196,7 @@ tls_fingerprint = comma "server-cert-fingerprint-sha256" equals tls_fingerprint:
196196
snell_psk = comma "psk" equals match:[^,]+ { proxy.psk = match.join(""); }
197197
snell_version = comma "version" equals match:$[0-9]+ { proxy.version = parseInt(match.trim()); }
198198
199-
usernamek = comma "username" equals match:[^,]+ { proxy.username = match.join(""); }
199+
usernamek = comma "username" equals match:[^,]+ { proxy.username = match.join("").replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
200200
passwordk = comma "password" equals match:[^,]+ { proxy.password = match.join("").replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
201201
vmess_uuid = comma "username" equals match:[^,]+ { proxy.uuid = match.join(""); }
202202
vmess_aead = comma "vmess-aead" equals flag:bool { proxy.aead = flag; }

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ username = & {
176176
peg$currPos = end;
177177
return true;
178178
}
179-
} { proxy.username = $.username; }
180-
password = comma match:[^,]+ { proxy.password = match.join("").replace(/^"(.*)"$/, '$1'); }
179+
} { proxy.username = $.username.trim().replace(/^"(.*?)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
180+
password = comma match:[^,]+ { proxy.password = match.join("").replace(/^"(.*)"$/, '$1').replace(/^'(.*?)'$/, '$1'); }
181181

182182
tls = comma "tls" equals flag:bool { proxy.tls = flag; }
183183
sni = comma "sni" equals sni:("off"/domain) {
@@ -193,7 +193,7 @@ tls_fingerprint = comma "server-cert-fingerprint-sha256" equals tls_fingerprint:
193193
snell_psk = comma "psk" equals match:[^,]+ { proxy.psk = match.join(""); }
194194
snell_version = comma "version" equals match:$[0-9]+ { proxy.version = parseInt(match.trim()); }
195195

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

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,9 @@ function vmess(proxy, includeUnsupportedProxy) {
370370
function ssh(proxy) {
371371
const result = new Result(proxy);
372372
result.append(`${proxy.name}=ssh,${proxy.server},${proxy.port}`);
373-
result.appendIfPresent(`,${proxy.username}`, 'username');
373+
result.appendIfPresent(`,username="${proxy.username}"`, 'username');
374374
// 所有的类似的字段都有双引号的问题 暂不处理
375-
result.appendIfPresent(`,"${proxy.password}"`, 'password');
375+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
376376

377377
// https://manual.nssurge.com/policy/ssh.html
378378
// 需配合 Keystore
@@ -439,8 +439,8 @@ function http(proxy) {
439439
const result = new Result(proxy);
440440
const type = proxy.tls ? 'https' : 'http';
441441
result.append(`${proxy.name}=${type},${proxy.server},${proxy.port}`);
442-
result.appendIfPresent(`,${proxy.username}`, 'username');
443-
result.appendIfPresent(`,"${proxy.password}"`, 'password');
442+
result.appendIfPresent(`,username="${proxy.username}"`, 'username');
443+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
444444

445445
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
446446
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');
@@ -565,8 +565,8 @@ function socks5(proxy) {
565565
const result = new Result(proxy);
566566
const type = proxy.tls ? 'socks5-tls' : 'socks5';
567567
result.append(`${proxy.name}=${type},${proxy.server},${proxy.port}`);
568-
result.appendIfPresent(`,${proxy.username}`, 'username');
569-
result.appendIfPresent(`,"${proxy.password}"`, 'password');
568+
result.appendIfPresent(`,username="${proxy.username}"`, 'username');
569+
result.appendIfPresent(`,password="${proxy.password}"`, 'password');
570570

571571
const ip_version = ipVersions[proxy['ip-version']] || proxy['ip-version'];
572572
result.appendIfPresent(`,ip-version=${ip_version}`, 'ip-version');

0 commit comments

Comments
 (0)