diff --git a/Netch/Servers/VMess/VMessForm.cs b/Netch/Servers/VMess/VMessForm.cs
index 956d7ba9..3d08e197 100644
--- a/Netch/Servers/VMess/VMessForm.cs
+++ b/Netch/Servers/VMess/VMessForm.cs
@@ -18,6 +18,12 @@ public class VMessForm : ServerForm
VMessGlobal.TransferProtocols,
s => server.TransferProtocol = s,
server.TransferProtocol);
+ CreateComboBox("PacketEncoding",
+ "Packet Encoding",
+ VMessGlobal.TransferProtocols,
+ s => server.TransferProtocol = s,
+ server.TransferProtocol);
+
CreateComboBox("FakeType", "Fake Type", VMessGlobal.FakeTypes, s => server.FakeType = s, server.FakeType);
CreateTextBox("Host", "Host", s => true, s => server.Host = s, server.Host);
diff --git a/Netch/Servers/VMess/VMessServer.cs b/Netch/Servers/VMess/VMessServer.cs
index 4bc9f36a..00e355fd 100644
--- a/Netch/Servers/VMess/VMessServer.cs
+++ b/Netch/Servers/VMess/VMessServer.cs
@@ -10,7 +10,7 @@ public class VMessServer : Server
public override string MaskedData()
{
- var maskedData = $"{EncryptMethod} + {TransferProtocol} + {FakeType}";
+ var maskedData = $"{EncryptMethod} + {TransferProtocol} + {PacketEncoding} + {FakeType}";
switch (TransferProtocol)
{
case "tcp":
@@ -49,6 +49,11 @@ public class VMessServer : Server
///
public virtual string TransferProtocol { get; set; } = VMessGlobal.TransferProtocols[0];
+ ///
+ /// 包传输格式
+ ///
+ public virtual string PacketEncoding { get; set; } = VMessGlobal.PacketEncodings[2];
+
///
/// 伪装类型
///
@@ -115,6 +120,13 @@ public class VMessGlobal
"chacha20-poly1305"
};
+ public static readonly List PacketEncodings = new()
+ {
+ "none",
+ "packet", // requires v2fly/v2ray-core v5.0.2+ or SagerNet/v2ray-core
+ "xudp" // requires XTLS/Xray-core or SagerNet/v2ray-core
+ }
+
///
/// V2Ray 传输协议
///