using Netch.Models; namespace Netch.Servers; public class VMessServer : Server { private string _tlsSecureType = VMessGlobal.TLSSecure[0]; public override string Type { get; } = "VMess"; public override string MaskedData() { var maskedData = $"{EncryptMethod} + {TransferProtocol} + {PacketEncoding} + {FakeType}"; switch (TransferProtocol) { case "tcp": case "ws": maskedData += $" + {TLSSecureType}"; break; case "quic": maskedData += $" + {QUICSecure}"; break; case "grpc": break; case "kcp": break; } return maskedData; } /// /// 用户 ID /// public string UserID { get; set; } = string.Empty; /// /// 额外 ID /// public int AlterID { get; set; } /// /// 加密方式 /// public virtual string EncryptMethod { get; set; } = VMessGlobal.EncryptMethods[0]; /// /// 传输协议 /// public virtual string TransferProtocol { get; set; } = VMessGlobal.TransferProtocols[0]; /// /// 包传输格式 /// public virtual string PacketEncoding { get; set; } = VMessGlobal.PacketEncodings[2]; /// /// 伪装类型 /// public virtual string FakeType { get; set; } = VMessGlobal.FakeTypes[0]; /// /// 伪装域名 /// public string? Host { get; set; } /// /// 传输路径 /// public string? Path { get; set; } /// /// QUIC 加密方式 /// public string? QUICSecure { get; set; } = VMessGlobal.QUIC[0]; /// /// QUIC 加密密钥 /// public string? QUICSecret { get; set; } = string.Empty; /// /// TLS 底层传输安全 /// public string TLSSecureType { get => _tlsSecureType; set { if (value == "") value = "none"; _tlsSecureType = value; } } /// /// Mux 多路复用 /// public bool? UseMux { get; set; } public string? ServerName { get; set; } = string.Empty; } public class VMessGlobal { public static readonly List EncryptMethods = new() { "auto", "none", "aes-128-gcm", "chacha20-poly1305", "zero" }; public static readonly List QUIC = new() { "none", "aes-128-gcm", "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 传输协议 /// public static readonly List TransferProtocols = new() { "tcp", "kcp", "ws", "h2", "quic", "grpc" }; /// /// V2Ray 伪装类型 /// public static readonly List FakeTypes = new() { "none", "http", "srtp", "utp", "wechat-video", "dtls", "wireguard", "gun", "multi" }; /// /// TLS 安全类型 /// public static readonly List TLSSecure = new() { "none", "tls" }; }