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
-