@@ -63,15 +63,21 @@ fn decode_surge_proxy_line(line: &str, parents: &mut BTreeMap<String, String>) -
63
63
} ) ) ;
64
64
kv_args. remove ( "group" ) ;
65
65
kv_args. remove ( "no-error-alert" ) ;
66
+ kv_args. remove ( "tls13" ) ;
67
+
68
+ if kv_args. remove ( "tfo" ) == Some ( "true" ) {
69
+ return None ;
70
+ }
66
71
67
72
let sni = kv_args. remove ( "sni" ) . filter ( |& sni| sni != "off" ) ;
73
+ let skip_cert_check = kv_args. remove ( "skip-cert-verify" ) . map ( |v| v == "true" ) ;
68
74
let tls = if kv_args. remove ( "tls" ) == Some ( "true" )
69
75
|| [ "https" , "trojan" , "socks5-tls" ] . contains ( & protocol)
70
76
{
71
77
Some ( ProxyTlsLayer {
72
78
alpn : vec ! [ ] ,
73
79
sni : sni. map ( String :: from) ,
74
- skip_cert_check : kv_args . remove ( "skip-cert-verify" ) . map ( |v| v == "true" ) ,
80
+ skip_cert_check,
75
81
} )
76
82
} else {
77
83
None
@@ -143,9 +149,12 @@ fn decode_surge_proxy_line(line: &str, parents: &mut BTreeMap<String, String>) -
143
149
parents. insert ( name. into ( ) , underlying_proxy. into ( ) ) ;
144
150
}
145
151
146
- if !kv_args. is_empty ( ) {
147
- return None ;
148
- }
152
+ kv_args
153
+ . into_values ( )
154
+ . filter ( |extra_value| !matches ! ( * extra_value, "" | "none" | "false" | "off" ) )
155
+ . map ( |_| None )
156
+ . next ( )
157
+ . unwrap_or ( Some ( ( ) ) ) ?;
149
158
150
159
Some ( Proxy {
151
160
name : name. into ( ) ,
@@ -202,7 +211,7 @@ mod tests {
202
211
fn test_decode_surge_proxy_list ( ) {
203
212
let data = b"
204
213
// # aa = ss , a.com , 11451 , group = g , no-error-alert = t , encrypt-method = aes-256-cfb , password = abc , udp-relay = true
205
- aa = ss , a.com , 11451 , group = g , no-error-alert = t , encrypt-method = aes-256-cfb , password = abc , udp-relay = true , kk
214
+ aa = ss , a.com , 11451 , group = g , no-error-alert = t , encrypt-method = aes-256-cfb , password = abc , udp-relay = true , tfo = false , kk
206
215
" ;
207
216
let sub = decode_surge_proxy_list ( data) . unwrap ( ) ;
208
217
assert_eq ! (
@@ -232,7 +241,7 @@ mod tests {
232
241
fn test_decode_surge_proxy_list_tls ( ) {
233
242
let cases = [
234
243
(
235
- "aa = ss, a.com, 114, encrypt-method=aes-256-cfb, password=abc, tls=true, sni=b.com, skip-cert-verify=false" ,
244
+ "aa = ss, a.com, 114, encrypt-method=aes-256-cfb, password=abc, tls=true, sni=b.com, skip-cert-verify=false, tls13=true " ,
236
245
ProxyTlsLayer {
237
246
alpn : vec ! [ ] ,
238
247
sni : Some ( "b.com" . into ( ) ) ,
0 commit comments