From df1c7cc8b453027aa485df5874836b0e952fa035 Mon Sep 17 00:00:00 2001 From: HystericalDragon <138737572+HystericalDragon@users.noreply.github.com> Date: Tue, 8 Aug 2023 14:14:39 +0800 Subject: [PATCH] fix packet encoding (#774) * feat(sub): get packet encoding from Clash.Meta's sub * fix: use "packetaddr" instead of "packet" * fix * fix --------- Co-authored-by: 2022-blake3-chacha8-poly1305 <139959885+xchacha20-ietf-poly1305@users.noreply.github.com> --- fmt/Bean2CoreObj_box.cpp | 8 ++------ sub/GroupUpdater.cpp | 12 ++++++++---- ui/edit/dialog_edit_profile.ui | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/fmt/Bean2CoreObj_box.cpp b/fmt/Bean2CoreObj_box.cpp index 4f6203b..8c563c6 100644 --- a/fmt/Bean2CoreObj_box.cpp +++ b/fmt/Bean2CoreObj_box.cpp @@ -70,12 +70,8 @@ namespace NekoGui_fmt { outbound->insert("tls", tls); } - if (!packet_encoding.isEmpty()) { - auto pkt = packet_encoding; - if (pkt == "packet") pkt = "packetaddr"; - outbound->insert("packet_encoding", pkt); - } else if (outbound->value("type").toString() == "vless") { - outbound->insert("packet_encoding", ""); + if (outbound->value("type").toString() == "vmess" || outbound->value("type").toString() == "vless") { + outbound->insert("packet_encoding", packet_encoding); } } diff --git a/sub/GroupUpdater.cpp b/sub/GroupUpdater.cpp index 5d71e2f..d0efba1 100644 --- a/sub/GroupUpdater.cpp +++ b/sub/GroupUpdater.cpp @@ -270,11 +270,11 @@ namespace NekoGui_sub { if (type == "vless") { bean->flow = Node2QString(proxy["flow"]); bean->password = Node2QString(proxy["uuid"]); - // meta vless xudp - auto xudp = proxy["xudp"]; - if (xudp.IsDefined() && !xudp.IsNull() && Node2Bool(xudp) == false) { - bean->stream->packet_encoding = ""; + // meta packet encoding + if (Node2Bool(proxy["packet-addr"])) { + bean->stream->packet_encoding = "packetaddr"; } else { + // For VLESS, default to use xudp bean->stream->packet_encoding = "xudp"; } } else { @@ -323,6 +323,10 @@ namespace NekoGui_sub { if (Node2Bool(proxy["tls"])) bean->stream->security = "tls"; if (Node2Bool(proxy["skip-cert-verify"])) bean->stream->allow_insecure = true; + // meta packet encoding + if (Node2Bool(proxy["xudp"])) bean->stream->packet_encoding = "xudp"; + if (Node2Bool(proxy["packet-addr"])) bean->stream->packet_encoding = "packetaddr"; + // opts auto ws = NodeChild(proxy, {"ws-opts", "ws-opt"}); if (ws.IsMap()) { diff --git a/ui/edit/dialog_edit_profile.ui b/ui/edit/dialog_edit_profile.ui index 8e19b24..d4e1005 100644 --- a/ui/edit/dialog_edit_profile.ui +++ b/ui/edit/dialog_edit_profile.ui @@ -271,7 +271,7 @@ - packet + packetaddr