From 080b77bbcf27e3bd5e86a297106b582b53f25e2b Mon Sep 17 00:00:00 2001 From: chuan Date: Wed, 27 May 2026 01:56:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20direct=20=E5=9B=A0?= =?UTF-8?q?=E9=80=8F=E6=98=8E=E4=BB=A3=E7=90=86=E5=BE=AA=E7=8E=AF=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyxray/libs/xray_config/generator.py | 2 +- pyxray/libs/xray_config/outbound.py | 7 +++++-- tests/libs/test_xray_config.py | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pyxray/libs/xray_config/generator.py b/pyxray/libs/xray_config/generator.py index 87afbe2..26fe731 100644 --- a/pyxray/libs/xray_config/generator.py +++ b/pyxray/libs/xray_config/generator.py @@ -17,7 +17,7 @@ def generate_xray_config(node: Node, settings: XrayConfigSettings | None = None) "inbounds": _build_inbounds(settings), "outbounds": [ node_to_outbound(node, settings, tag="proxy"), - direct_outbound(), + direct_outbound(settings), block_outbound(), dns_outbound(), ], diff --git a/pyxray/libs/xray_config/outbound.py b/pyxray/libs/xray_config/outbound.py index 8ba2328..74996db 100644 --- a/pyxray/libs/xray_config/outbound.py +++ b/pyxray/libs/xray_config/outbound.py @@ -25,9 +25,12 @@ def node_to_outbound(node: Node, settings: XrayConfigSettings, tag: str = "proxy return outbound -def direct_outbound() -> dict[str, Any]: +def direct_outbound(settings: XrayConfigSettings | None = None) -> dict[str, Any]: """生成 v2rayA 使用的 direct outbound。""" - return {"tag": "direct", "protocol": "freedom", "settings": {"domainStrategy": "UseIP"}} + outbound: dict[str, Any] = {"tag": "direct", "protocol": "freedom", "settings": {"domainStrategy": "UseIP"}} + if settings is not None: + _apply_transparent_mark(outbound, settings) + return outbound def block_outbound() -> dict[str, Any]: diff --git a/tests/libs/test_xray_config.py b/tests/libs/test_xray_config.py index 9a8416e..74aae0e 100644 --- a/tests/libs/test_xray_config.py +++ b/tests/libs/test_xray_config.py @@ -136,6 +136,7 @@ def test_generate_redirect_dns_inbound_when_transparent_redirect_enabled() -> No assert _inbound(config, "dns-in")["listen"] == "127.2.0.17" assert {"type": "field", "inboundTag": ["dns-in"], "outboundTag": "dns-out"} in config["routing"]["rules"] assert _outbound(config, "proxy")["streamSettings"]["sockopt"]["mark"] == 128 + assert _outbound(config, "direct")["streamSettings"]["sockopt"]["mark"] == 128 def test_generate_redirect_transparent_inbound_stays_local_when_docker_transparent_disabled() -> None: