mirror of
				https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
				synced 2025-10-31 08:51:04 +08:00 
			
		
		
		
	feat: 补全 Surge 全协议的 no-error-alert 和 ip-version 字段
This commit is contained in:
		
							parent
							
								
									53925518b4
								
							
						
					
					
						commit
						1ae1ec40ca
					
				| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "sub-store", |   "name": "sub-store", | ||||||
|   "version": "2.14.91", |   "version": "2.14.92", | ||||||
|   "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", |   "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", | ||||||
|   "main": "src/main.js", |   "main": "src/main.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ start = (shadowsocks/vmess/trojan/https/http/snell/socks5/socks5_tls/tuic/tuic_v | |||||||
|     return proxy; |     return proxy; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/ip_version/no_error_alert/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "ss"; |     proxy.type = "ss"; | ||||||
|     // handle obfs
 |     // handle obfs
 | ||||||
|     if (obfs.type == "http" || obfs.type === "tls") { |     if (obfs.type == "http" || obfs.type === "tls") { | ||||||
| @ -46,7 +46,7 @@ shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/ | |||||||
|         $set(proxy, "plugin-opts.path", obfs.path); |         $set(proxy, "plugin-opts.path", obfs.path); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/method/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/method/ip_version/no_error_alert/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "vmess"; |     proxy.type = "vmess"; | ||||||
|     proxy.cipher = proxy.cipher || "none"; |     proxy.cipher = proxy.cipher || "none"; | ||||||
|     if (proxy.aead) { |     if (proxy.aead) { | ||||||
| @ -56,18 +56,18 @@ vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/ | |||||||
|     } |     } | ||||||
|     handleWebsocket(); |     handleWebsocket(); | ||||||
| } | } | ||||||
| trojan = tag equals "trojan" address (passwordk/ws/ws_path/ws_headers/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | trojan = tag equals "trojan" address (passwordk/ws/ws_path/ws_headers/tls/sni/tls_fingerprint/tls_verification/ip_version/no_error_alert/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "trojan"; |     proxy.type = "trojan"; | ||||||
|     handleWebsocket(); |     handleWebsocket(); | ||||||
| } | } | ||||||
| https = tag equals "https" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | https = tag equals "https" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/ip_version/no_error_alert/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "http"; |     proxy.type = "http"; | ||||||
|     proxy.tls = true; |     proxy.tls = true; | ||||||
| } | } | ||||||
| http = tag equals "http" address (username password)? (usernamek passwordk)? (fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | http = tag equals "http" address (username password)? (usernamek passwordk)? (ip_version/no_error_alert/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "http"; |     proxy.type = "http"; | ||||||
| } | } | ||||||
| snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_uri/fast_open/udp_relay/reuse/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_uri/ip_version/no_error_alert/fast_open/udp_relay/reuse/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "snell"; |     proxy.type = "snell"; | ||||||
|     // handle obfs
 |     // handle obfs
 | ||||||
|     if (obfs.type == "http" || obfs.type === "tls") { |     if (obfs.type == "http" || obfs.type === "tls") { | ||||||
| @ -76,10 +76,10 @@ snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_ | |||||||
|         $set(proxy, "obfs-opts.path", obfs.path); |         $set(proxy, "obfs-opts.path", obfs.path); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| tuic = tag equals "tuic" address (alpn/token/ip_version/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | tuic = tag equals "tuic" address (alpn/token/ip_version/no_error_alert/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "tuic"; |     proxy.type = "tuic"; | ||||||
| } | } | ||||||
| tuic_v5 = tag equals "tuic-v5" address (alpn/passwordk/uuidk/ip_version/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | tuic_v5 = tag equals "tuic-v5" address (alpn/passwordk/uuidk/ip_version/no_error_alert/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "tuic"; |     proxy.type = "tuic"; | ||||||
|     proxy.version = 5; |     proxy.version = 5; | ||||||
| } | } | ||||||
| @ -89,10 +89,10 @@ wireguard = tag equals "wireguard" (section_name/no_error_alert/ip_version/under | |||||||
| hysteria2 = tag equals "hysteria2" address (no_error_alert/ip_version/underlying_proxy/test_url/sni/tls_verification/passwordk/tls_fingerprint/download_bandwidth/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | hysteria2 = tag equals "hysteria2" address (no_error_alert/ip_version/underlying_proxy/test_url/sni/tls_verification/passwordk/tls_fingerprint/download_bandwidth/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "hysteria2"; |     proxy.type = "hysteria2"; | ||||||
| } | } | ||||||
| socks5 = tag equals "socks5" address (username password)? (usernamek passwordk)? (fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | socks5 = tag equals "socks5" address (username password)? (usernamek passwordk)? (no_error_alert/ip_version/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "socks5"; |     proxy.type = "socks5"; | ||||||
| } | } | ||||||
| socks5_tls = tag equals "socks5-tls" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | socks5_tls = tag equals "socks5-tls" address (username password)? (usernamek passwordk)? (no_error_alert/ip_version/sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "socks5"; |     proxy.type = "socks5"; | ||||||
|     proxy.tls = true; |     proxy.tls = true; | ||||||
| } | } | ||||||
|  | |||||||
| @ -34,7 +34,7 @@ start = (shadowsocks/vmess/trojan/https/http/snell/socks5/socks5_tls/tuic/tuic_v | |||||||
|     return proxy; |     return proxy; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/ip_version/no_error_alert/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "ss"; |     proxy.type = "ss"; | ||||||
|     // handle obfs |     // handle obfs | ||||||
|     if (obfs.type == "http" || obfs.type === "tls") { |     if (obfs.type == "http" || obfs.type === "tls") { | ||||||
| @ -44,7 +44,7 @@ shadowsocks = tag equals "ss" address (method/passwordk/obfs/obfs_host/obfs_uri/ | |||||||
|         $set(proxy, "plugin-opts.path", obfs.path); |         $set(proxy, "plugin-opts.path", obfs.path); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/method/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/method/ip_version/no_error_alert/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "vmess"; |     proxy.type = "vmess"; | ||||||
|     proxy.cipher = proxy.cipher || "none"; |     proxy.cipher = proxy.cipher || "none"; | ||||||
|     if (proxy.aead) { |     if (proxy.aead) { | ||||||
| @ -54,18 +54,18 @@ vmess = tag equals "vmess" address (vmess_uuid/vmess_aead/ws/ws_path/ws_headers/ | |||||||
|     } |     } | ||||||
|     handleWebsocket(); |     handleWebsocket(); | ||||||
| } | } | ||||||
| trojan = tag equals "trojan" address (passwordk/ws/ws_path/ws_headers/tls/sni/tls_fingerprint/tls_verification/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | trojan = tag equals "trojan" address (passwordk/ws/ws_path/ws_headers/tls/sni/tls_fingerprint/tls_verification/ip_version/no_error_alert/fast_open/udp_relay/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "trojan"; |     proxy.type = "trojan"; | ||||||
|     handleWebsocket(); |     handleWebsocket(); | ||||||
| } | } | ||||||
| https = tag equals "https" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | https = tag equals "https" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/ip_version/no_error_alert/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "http"; |     proxy.type = "http"; | ||||||
|     proxy.tls = true; |     proxy.tls = true; | ||||||
| } | } | ||||||
| http = tag equals "http" address (username password)? (usernamek passwordk)? (fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | http = tag equals "http" address (username password)? (usernamek passwordk)? (ip_version/no_error_alert/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "http"; |     proxy.type = "http"; | ||||||
| } | } | ||||||
| snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_uri/fast_open/udp_relay/reuse/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_uri/ip_version/no_error_alert/fast_open/udp_relay/reuse/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "snell"; |     proxy.type = "snell"; | ||||||
|     // handle obfs |     // handle obfs | ||||||
|     if (obfs.type == "http" || obfs.type === "tls") { |     if (obfs.type == "http" || obfs.type === "tls") { | ||||||
| @ -74,10 +74,10 @@ snell = tag equals "snell" address (snell_version/snell_psk/obfs/obfs_host/obfs_ | |||||||
|         $set(proxy, "obfs-opts.path", obfs.path); |         $set(proxy, "obfs-opts.path", obfs.path); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| tuic = tag equals "tuic" address (alpn/token/ip_version/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | tuic = tag equals "tuic" address (alpn/token/ip_version/no_error_alert/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "tuic"; |     proxy.type = "tuic"; | ||||||
| } | } | ||||||
| tuic_v5 = tag equals "tuic-v5" address (alpn/passwordk/uuidk/ip_version/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | tuic_v5 = tag equals "tuic-v5" address (alpn/passwordk/uuidk/ip_version/no_error_alert/tls_verification/sni/fast_open/tfo/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "tuic"; |     proxy.type = "tuic"; | ||||||
|     proxy.version = 5; |     proxy.version = 5; | ||||||
| } | } | ||||||
| @ -87,10 +87,10 @@ wireguard = tag equals "wireguard" (section_name/no_error_alert/ip_version/under | |||||||
| hysteria2 = tag equals "hysteria2" address (no_error_alert/ip_version/underlying_proxy/test_url/sni/tls_verification/passwordk/tls_fingerprint/download_bandwidth/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | hysteria2 = tag equals "hysteria2" address (no_error_alert/ip_version/underlying_proxy/test_url/sni/tls_verification/passwordk/tls_fingerprint/download_bandwidth/ecn/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "hysteria2"; |     proxy.type = "hysteria2"; | ||||||
| } | } | ||||||
| socks5 = tag equals "socks5" address (username password)? (usernamek passwordk)? (fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | socks5 = tag equals "socks5" address (username password)? (usernamek passwordk)? (no_error_alert/ip_version/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "socks5"; |     proxy.type = "socks5"; | ||||||
| } | } | ||||||
| socks5_tls = tag equals "socks5-tls" address (username password)? (usernamek passwordk)? (sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | socks5_tls = tag equals "socks5-tls" address (username password)? (usernamek passwordk)? (no_error_alert/ip_version/sni/tls_fingerprint/tls_verification/fast_open/shadow_tls_version/shadow_tls_sni/shadow_tls_password/block_quic/others)* { | ||||||
|     proxy.type = "socks5"; |     proxy.type = "socks5"; | ||||||
|     proxy.tls = true; |     proxy.tls = true; | ||||||
| } | } | ||||||
|  | |||||||
| @ -47,6 +47,16 @@ function shadowsocks(proxy) { | |||||||
|     result.append(`,encrypt-method=${proxy.cipher}`); |     result.append(`,encrypt-method=${proxy.cipher}`); | ||||||
|     result.appendIfPresent(`,password=${proxy.password}`, 'password'); |     result.appendIfPresent(`,password=${proxy.password}`, 'password'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // obfs
 |     // obfs
 | ||||||
|     if (isPresent(proxy, 'plugin')) { |     if (isPresent(proxy, 'plugin')) { | ||||||
|         if (proxy.plugin === 'obfs') { |         if (proxy.plugin === 'obfs') { | ||||||
| @ -104,6 +114,16 @@ function trojan(proxy) { | |||||||
|     result.append(`${proxy.name}=${proxy.type},${proxy.server},${proxy.port}`); |     result.append(`${proxy.name}=${proxy.type},${proxy.server},${proxy.port}`); | ||||||
|     result.appendIfPresent(`,password=${proxy.password}`, 'password'); |     result.appendIfPresent(`,password=${proxy.password}`, 'password'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // transport
 |     // transport
 | ||||||
|     handleTransport(result, proxy); |     handleTransport(result, proxy); | ||||||
| 
 | 
 | ||||||
| @ -163,6 +183,16 @@ function vmess(proxy) { | |||||||
|     result.append(`${proxy.name}=${proxy.type},${proxy.server},${proxy.port}`); |     result.append(`${proxy.name}=${proxy.type},${proxy.server},${proxy.port}`); | ||||||
|     result.appendIfPresent(`,username=${proxy.uuid}`, 'uuid'); |     result.appendIfPresent(`,username=${proxy.uuid}`, 'uuid'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // transport
 |     // transport
 | ||||||
|     handleTransport(result, proxy); |     handleTransport(result, proxy); | ||||||
| 
 | 
 | ||||||
| @ -231,6 +261,16 @@ function http(proxy) { | |||||||
|     result.appendIfPresent(`,${proxy.username}`, 'username'); |     result.appendIfPresent(`,${proxy.username}`, 'username'); | ||||||
|     result.appendIfPresent(`,${proxy.password}`, 'password'); |     result.appendIfPresent(`,${proxy.password}`, 'password'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // tls fingerprint
 |     // tls fingerprint
 | ||||||
|     result.appendIfPresent( |     result.appendIfPresent( | ||||||
|         `,server-cert-fingerprint-sha256=${proxy['tls-fingerprint']}`, |         `,server-cert-fingerprint-sha256=${proxy['tls-fingerprint']}`, | ||||||
| @ -286,6 +326,16 @@ function socks5(proxy) { | |||||||
|     result.appendIfPresent(`,${proxy.username}`, 'username'); |     result.appendIfPresent(`,${proxy.username}`, 'username'); | ||||||
|     result.appendIfPresent(`,${proxy.password}`, 'password'); |     result.appendIfPresent(`,${proxy.password}`, 'password'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // tls fingerprint
 |     // tls fingerprint
 | ||||||
|     result.appendIfPresent( |     result.appendIfPresent( | ||||||
|         `,server-cert-fingerprint-sha256=${proxy['tls-fingerprint']}`, |         `,server-cert-fingerprint-sha256=${proxy['tls-fingerprint']}`, | ||||||
| @ -342,6 +392,16 @@ function snell(proxy) { | |||||||
|     result.appendIfPresent(`,version=${proxy.version}`, 'version'); |     result.appendIfPresent(`,version=${proxy.version}`, 'version'); | ||||||
|     result.appendIfPresent(`,psk=${proxy.psk}`, 'psk'); |     result.appendIfPresent(`,psk=${proxy.psk}`, 'psk'); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,ip-version=${ipVersions[proxy['ip-version']] || proxy['ip-version']}`, | ||||||
|  |         'ip-version', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // obfs
 |     // obfs
 | ||||||
|     result.appendIfPresent( |     result.appendIfPresent( | ||||||
|         `,obfs=${proxy['obfs-opts']?.mode}`, |         `,obfs=${proxy['obfs-opts']?.mode}`, | ||||||
| @ -414,6 +474,11 @@ function tuic(proxy) { | |||||||
|         'ip-version', |         'ip-version', | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  |     result.appendIfPresent( | ||||||
|  |         `,no-error-alert=${proxy['no-error-alert']}`, | ||||||
|  |         'no-error-alert', | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     // tls verification
 |     // tls verification
 | ||||||
|     result.appendIfPresent(`,sni=${proxy.sni}`, 'sni'); |     result.appendIfPresent(`,sni=${proxy.sni}`, 'sni'); | ||||||
|     result.appendIfPresent( |     result.appendIfPresent( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 xream
						xream