feat(lite): add opt-in tun ipv6 mode

This commit is contained in:
RoyirinRosmontis
2026-09-19 04:20:34 +08:00
parent 2315735979
commit 9d5bc527d3
4 changed files with 80 additions and 19 deletions
+13
View File
@@ -1312,6 +1312,15 @@ def _set_tun_dns_servers(value):
data["tun_dns"] = list(parsed)
_settings_save(data)
def _tun_ipv6_enabled():
"""TUN IPv6 默认关闭,避免未验证的 IPv6 路径接管系统流量。"""
return bool(_settings_load().get("tun_ipv6_enabled", False))
def _set_tun_ipv6_enabled(value):
data = _settings_load()
data["tun_ipv6_enabled"] = bool(value)
_settings_save(data)
def _use_system_pac():
"""只决定 Windows 系统代理是否使用 PAC;旧设置按原行为读取。"""
data = _settings_load()
@@ -2632,6 +2641,7 @@ def _settings_services():
get_port=lambda: _TLS_LOCAL_PORT,
get_system_pac=_use_system_pac,
get_dns=_tun_dns_servers,
get_ipv6_enabled=_tun_ipv6_enabled,
get_update_via_proxy=_update_via_proxy,
get_skip_update_check=_skip_update_check,
get_node_display_mode=_node_display_mode,
@@ -2640,6 +2650,7 @@ def _settings_services():
set_port=_set_local_port,
set_system_pac=_set_use_system_pac,
set_dns=_set_tun_dns_servers,
set_ipv6_enabled=_set_tun_ipv6_enabled,
set_update_via_proxy=_set_update_via_proxy,
set_skip_update_check=_set_skip_update_check,
set_node_display_mode=_set_node_display_mode,
@@ -2722,6 +2733,7 @@ def _start_tun_backend(backend, payload):
bypass_lan=bypass_lan,
route_rules=rules,
dns_servers=payload["dns_servers"],
ipv6_enabled=bool(payload.get("ipv6_enabled", False)),
direct_target_resolver=direct_target,
route_rule_resolver=user_rule,
route_node_resolver=route_node,
@@ -2748,6 +2760,7 @@ def _tun_start_payload(use_pac, bypass_lan):
"route_rules": _route_rules(),
"route_nodes": route_nodes,
"dns_servers": _tun_dns_servers(),
"ipv6_enabled": _tun_ipv6_enabled(),
"bypass_lan": bool(bypass_lan),
"smart": bool(use_pac),
}