using System.Text.Json.Serialization; namespace ServiceLib.Models { public class V2rayConfig { public string? remarks { get; set; } public Log4Ray log { get; set; } public List inbounds { get; set; } public List outbounds { get; set; } public Stats4Ray? stats { get; set; } public Metrics4Ray? metrics { get; set; } public Policy4Ray? policy { get; set; } public object dns { get; set; } public Routing4Ray routing { get; set; } } public class Stats4Ray { } public class Metrics4Ray { public string tag { get; set; } } public class Policy4Ray { public SystemPolicy4Ray system { get; set; } } public class SystemPolicy4Ray { public bool statsOutboundUplink { get; set; } public bool statsOutboundDownlink { get; set; } } public class Log4Ray { public string? access { get; set; } public string? error { get; set; } public string? loglevel { get; set; } } public class Inbounds4Ray { public string tag { get; set; } public int port { get; set; } public string listen { get; set; } public string protocol { get; set; } public Sniffing4Ray sniffing { get; set; } public Inboundsettings4Ray settings { get; set; } } public class Inboundsettings4Ray { public string? auth { get; set; } public bool? udp { get; set; } public string? ip { get; set; } public string? address { get; set; } public List? clients { get; set; } public string? decryption { get; set; } public bool? allowTransparent { get; set; } public List? accounts { get; set; } } public class UsersItem4Ray { public string? id { get; set; } public int? alterId { get; set; } public string? email { get; set; } public string? security { get; set; } public string? encryption { get; set; } public string? flow { get; set; } } public class Sniffing4Ray { public bool enabled { get; set; } public List? destOverride { get; set; } public bool routeOnly { get; set; } } public class Outbounds4Ray { public string tag { get; set; } public string protocol { get; set; } public Outboundsettings4Ray settings { get; set; } public StreamSettings4Ray streamSettings { get; set; } public Mux4Ray mux { get; set; } } public class Outboundsettings4Ray { public List? vnext { get; set; } public List? servers { get; set; } public Response4Ray? response { get; set; } public string domainStrategy { get; set; } public int? userLevel { get; set; } public FragmentItem4Ray? fragment { get; set; } } public class VnextItem4Ray { public string address { get; set; } public int port { get; set; } public List users { get; set; } } public class ServersItem4Ray { public string email { get; set; } public string address { get; set; } public string? method { get; set; } public bool? ota { get; set; } public string? password { get; set; } public int port { get; set; } public int? level { get; set; } public string flow { get; set; } public List users { get; set; } } public class SocksUsersItem4Ray { public string user { get; set; } public string pass { get; set; } public int? level { get; set; } } public class Mux4Ray { public bool enabled { get; set; } public int? concurrency { get; set; } public int? xudpConcurrency { get; set; } public string? xudpProxyUDP443 { get; set; } } public class Response4Ray { public string type { get; set; } } public class Dns4Ray { public List servers { get; set; } } public class DnsServer4Ray { public string? address { get; set; } public List? domains { get; set; } } public class Routing4Ray { public string domainStrategy { get; set; } public string? domainMatcher { get; set; } public List rules { get; set; } public List? balancers { get; set; } } [Serializable] public class RulesItem4Ray { public string? type { get; set; } public string? port { get; set; } public string? network { get; set; } public List? inboundTag { get; set; } public string? outboundTag { get; set; } public string? balancerTag { get; set; } public List? ip { get; set; } public List? domain { get; set; } public List? protocol { get; set; } } public class BalancersItem4Ray { public List? selector { get; set; } public BalancersStrategy4Ray? strategy { get; set; } public string? tag { get; set; } } public class BalancersStrategy4Ray { public string? type { get; set; } } public class StreamSettings4Ray { public string network { get; set; } public string security { get; set; } public TlsSettings4Ray? tlsSettings { get; set; } public TcpSettings4Ray? tcpSettings { get; set; } public KcpSettings4Ray? kcpSettings { get; set; } public WsSettings4Ray? wsSettings { get; set; } public HttpupgradeSettings4Ray? httpupgradeSettings { get; set; } public XhttpSettings4Ray? xhttpSettings { get; set; } public HttpSettings4Ray? httpSettings { get; set; } public QuicSettings4Ray? quicSettings { get; set; } public TlsSettings4Ray? realitySettings { get; set; } public GrpcSettings4Ray? grpcSettings { get; set; } public Sockopt4Ray? sockopt { get; set; } } public class TlsSettings4Ray { public bool? allowInsecure { get; set; } public string? serverName { get; set; } public List? alpn { get; set; } public string? fingerprint { get; set; } public bool? show { get; set; } public string? publicKey { get; set; } public string? shortId { get; set; } public string? spiderX { get; set; } } public class TcpSettings4Ray { public Header4Ray header { get; set; } } public class Header4Ray { public string type { get; set; } public object request { get; set; } public object response { get; set; } } public class KcpSettings4Ray { public int mtu { get; set; } public int tti { get; set; } public int uplinkCapacity { get; set; } public int downlinkCapacity { get; set; } public bool congestion { get; set; } public int readBufferSize { get; set; } public int writeBufferSize { get; set; } public Header4Ray header { get; set; } public string seed { get; set; } } public class WsSettings4Ray { public string path { get; set; } public Headers4Ray headers { get; set; } } public class Headers4Ray { public string Host { get; set; } [JsonPropertyName("User-Agent")] public string UserAgent { get; set; } } public class HttpupgradeSettings4Ray { public string? path { get; set; } public string? host { get; set; } } public class XhttpSettings4Ray { public string? path { get; set; } public string? host { get; set; } public string? mode { get; set; } public object? scMaxEachPostBytes { get; set; } public object? scMaxConcurrentPosts { get; set; } public object? scMinPostsIntervalMs { get; set; } //public Xmux4Ray? xmux { get; set; } public object? extra { get; set; } } //public class Xmux4Ray //{ // public object? maxConcurrency { get; set; } // public object? maxConnections { get; set; } // public object? cMaxReuseTimes { get; set; } // public object? cMaxLifetimeMs { get; set; } //} public class HttpSettings4Ray { public string? path { get; set; } public List? host { get; set; } } public class QuicSettings4Ray { public string security { get; set; } public string key { get; set; } public Header4Ray header { get; set; } } public class GrpcSettings4Ray { public string? authority { get; set; } public string? serviceName { get; set; } public bool multiMode { get; set; } public int? idle_timeout { get; set; } public int? health_check_timeout { get; set; } public bool? permit_without_stream { get; set; } public int? initial_windows_size { get; set; } } public class AccountsItem4Ray { public string user { get; set; } public string pass { get; set; } } public class Sockopt4Ray { public string? dialerProxy { get; set; } } public class FragmentItem4Ray { public string? packets { get; set; } public string? length { get; set; } public string? interval { get; set; } } }