option

package
v1.11.0-beta.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2024 License: GPL-2.0 Imports: 27 Imported by: 232

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DNSQueryTypeToString added in v1.2.0

func DNSQueryTypeToString(queryType uint16) string

Types

type ACMEDNS01AliDNSOptions added in v1.5.0

type ACMEDNS01AliDNSOptions struct {
	AccessKeyID     string `json:"access_key_id,omitempty"`
	AccessKeySecret string `json:"access_key_secret,omitempty"`
	RegionID        string `json:"region_id,omitempty"`
}

type ACMEDNS01ChallengeOptions added in v1.5.0

type ACMEDNS01ChallengeOptions _ACMEDNS01ChallengeOptions

func (ACMEDNS01ChallengeOptions) MarshalJSON added in v1.5.0

func (o ACMEDNS01ChallengeOptions) MarshalJSON() ([]byte, error)

func (*ACMEDNS01ChallengeOptions) UnmarshalJSON added in v1.5.0

func (o *ACMEDNS01ChallengeOptions) UnmarshalJSON(bytes []byte) error

type ACMEDNS01CloudflareOptions added in v1.5.0

type ACMEDNS01CloudflareOptions struct {
	APIToken string `json:"api_token,omitempty"`
}

type ACMEExternalAccountOptions added in v1.0.1

type ACMEExternalAccountOptions struct {
	KeyID  string `json:"key_id,omitempty"`
	MACKey string `json:"mac_key,omitempty"`
}

type BrutalOptions added in v1.7.0

type BrutalOptions struct {
	Enabled  bool `json:"enabled,omitempty"`
	UpMbps   int  `json:"up_mbps,omitempty"`
	DownMbps int  `json:"down_mbps,omitempty"`
}

type CacheFileOptions added in v1.8.0

type CacheFileOptions struct {
	Enabled     bool               `json:"enabled,omitempty"`
	Path        string             `json:"path,omitempty"`
	CacheID     string             `json:"cache_id,omitempty"`
	StoreFakeIP bool               `json:"store_fakeip,omitempty"`
	StoreRDRC   bool               `json:"store_rdrc,omitempty"`
	RDRCTimeout badoption.Duration `json:"rdrc_timeout,omitempty"`
}

type ClashAPIOptions

type ClashAPIOptions struct {
	ExternalController               string                     `json:"external_controller,omitempty"`
	ExternalUI                       string                     `json:"external_ui,omitempty"`
	ExternalUIDownloadURL            string                     `json:"external_ui_download_url,omitempty"`
	ExternalUIDownloadDetour         string                     `json:"external_ui_download_detour,omitempty"`
	Secret                           string                     `json:"secret,omitempty"`
	DefaultMode                      string                     `json:"default_mode,omitempty"`
	ModeList                         []string                   `json:"-"`
	AccessControlAllowOrigin         badoption.Listable[string] `json:"access_control_allow_origin,omitempty"`
	AccessControlAllowPrivateNetwork bool                       `json:"access_control_allow_private_network,omitempty"`

	// Deprecated: migrated to global cache file
	CacheFile string `json:"cache_file,omitempty"`
	// Deprecated: migrated to global cache file
	CacheID string `json:"cache_id,omitempty"`
	// Deprecated: migrated to global cache file
	StoreMode bool `json:"store_mode,omitempty"`
	// Deprecated: migrated to global cache file
	StoreSelected bool `json:"store_selected,omitempty"`
	// Deprecated: migrated to global cache file
	StoreFakeIP bool `json:"store_fakeip,omitempty"`
}

type DNSClientOptions

type DNSClientOptions struct {
	Strategy         DomainStrategy        `json:"strategy,omitempty"`
	DisableCache     bool                  `json:"disable_cache,omitempty"`
	DisableExpire    bool                  `json:"disable_expire,omitempty"`
	IndependentCache bool                  `json:"independent_cache,omitempty"`
	CacheCapacity    uint32                `json:"cache_capacity,omitempty"`
	ClientSubnet     *badoption.Prefixable `json:"client_subnet,omitempty"`
}

type DNSFakeIPOptions added in v1.3.0

type DNSFakeIPOptions struct {
	Enabled    bool          `json:"enabled,omitempty"`
	Inet4Range *netip.Prefix `json:"inet4_range,omitempty"`
	Inet6Range *netip.Prefix `json:"inet6_range,omitempty"`
}

type DNSOptions

type DNSOptions struct {
	Servers        []DNSServerOptions `json:"servers,omitempty"`
	Rules          []DNSRule          `json:"rules,omitempty"`
	Final          string             `json:"final,omitempty"`
	ReverseMapping bool               `json:"reverse_mapping,omitempty"`
	FakeIP         *DNSFakeIPOptions  `json:"fakeip,omitempty"`
	DNSClientOptions
}

type DNSQueryType added in v1.2.0

type DNSQueryType uint16

func (DNSQueryType) MarshalJSON added in v1.2.0

func (t DNSQueryType) MarshalJSON() ([]byte, error)

func (DNSQueryType) String added in v1.8.0

func (t DNSQueryType) String() string

func (*DNSQueryType) UnmarshalJSON added in v1.2.0

func (t *DNSQueryType) UnmarshalJSON(bytes []byte) error

type DNSRouteActionOptions

type DNSRouteActionOptions struct {
	Server       string                `json:"server,omitempty"`
	DisableCache bool                  `json:"disable_cache,omitempty"`
	RewriteTTL   *uint32               `json:"rewrite_ttl,omitempty"`
	ClientSubnet *badoption.Prefixable `json:"client_subnet,omitempty"`
}

type DNSRouteOptionsActionOptions

type DNSRouteOptionsActionOptions _DNSRouteOptionsActionOptions

func (*DNSRouteOptionsActionOptions) UnmarshalJSON

func (r *DNSRouteOptionsActionOptions) UnmarshalJSON(data []byte) error

type DNSRule

type DNSRule _DNSRule

func (DNSRule) IsValid added in v1.8.0

func (r DNSRule) IsValid() bool

func (DNSRule) MarshalJSON

func (r DNSRule) MarshalJSON() ([]byte, error)

func (*DNSRule) UnmarshalJSONContext

func (r *DNSRule) UnmarshalJSONContext(ctx context.Context, bytes []byte) error

type DNSRuleAction

type DNSRuleAction _DNSRuleAction

func (DNSRuleAction) MarshalJSON

func (r DNSRuleAction) MarshalJSON() ([]byte, error)

func (*DNSRuleAction) UnmarshalJSONContext

func (r *DNSRuleAction) UnmarshalJSONContext(ctx context.Context, data []byte) error

type DNSServerOptions

type DNSServerOptions struct {
	Tag                  string                `json:"tag,omitempty"`
	Address              string                `json:"address"`
	AddressResolver      string                `json:"address_resolver,omitempty"`
	AddressStrategy      DomainStrategy        `json:"address_strategy,omitempty"`
	AddressFallbackDelay badoption.Duration    `json:"address_fallback_delay,omitempty"`
	Strategy             DomainStrategy        `json:"strategy,omitempty"`
	Detour               string                `json:"detour,omitempty"`
	ClientSubnet         *badoption.Prefixable `json:"client_subnet,omitempty"`
}

type DebugOptions added in v1.2.0

type DebugOptions struct {
	Listen       string      `json:"listen,omitempty"`
	GCPercent    *int        `json:"gc_percent,omitempty"`
	MaxStack     *int        `json:"max_stack,omitempty"`
	MaxThreads   *int        `json:"max_threads,omitempty"`
	PanicOnFault *bool       `json:"panic_on_fault,omitempty"`
	TraceBack    string      `json:"trace_back,omitempty"`
	MemoryLimit  MemoryBytes `json:"memory_limit,omitempty"`
	OOMKiller    *bool       `json:"oom_killer,omitempty"`
}

type DefaultDNSRule

type DefaultDNSRule struct {
	RawDefaultDNSRule
	DNSRuleAction
}

func (DefaultDNSRule) IsValid

func (r DefaultDNSRule) IsValid() bool

func (DefaultDNSRule) MarshalJSON

func (r DefaultDNSRule) MarshalJSON() ([]byte, error)

func (*DefaultDNSRule) UnmarshalJSONContext

func (r *DefaultDNSRule) UnmarshalJSONContext(ctx context.Context, data []byte) error

type DefaultHeadlessRule added in v1.8.0

type DefaultHeadlessRule struct {
	QueryType            badoption.Listable[DNSQueryType]  `json:"query_type,omitempty"`
	Network              badoption.Listable[string]        `json:"network,omitempty"`
	Domain               badoption.Listable[string]        `json:"domain,omitempty"`
	DomainSuffix         badoption.Listable[string]        `json:"domain_suffix,omitempty"`
	DomainKeyword        badoption.Listable[string]        `json:"domain_keyword,omitempty"`
	DomainRegex          badoption.Listable[string]        `json:"domain_regex,omitempty"`
	SourceIPCIDR         badoption.Listable[string]        `json:"source_ip_cidr,omitempty"`
	IPCIDR               badoption.Listable[string]        `json:"ip_cidr,omitempty"`
	SourcePort           badoption.Listable[uint16]        `json:"source_port,omitempty"`
	SourcePortRange      badoption.Listable[string]        `json:"source_port_range,omitempty"`
	Port                 badoption.Listable[uint16]        `json:"port,omitempty"`
	PortRange            badoption.Listable[string]        `json:"port_range,omitempty"`
	ProcessName          badoption.Listable[string]        `json:"process_name,omitempty"`
	ProcessPath          badoption.Listable[string]        `json:"process_path,omitempty"`
	ProcessPathRegex     badoption.Listable[string]        `json:"process_path_regex,omitempty"`
	PackageName          badoption.Listable[string]        `json:"package_name,omitempty"`
	NetworkType          badoption.Listable[InterfaceType] `json:"network_type,omitempty"`
	NetworkIsExpensive   bool                              `json:"network_is_expensive,omitempty"`
	NetworkIsConstrained bool                              `json:"network_is_constrained,omitempty"`
	WIFISSID             badoption.Listable[string]        `json:"wifi_ssid,omitempty"`
	WIFIBSSID            badoption.Listable[string]        `json:"wifi_bssid,omitempty"`
	Invert               bool                              `json:"invert,omitempty"`

	DomainMatcher *domain.Matcher `json:"-"`
	SourceIPSet   *netipx.IPSet   `json:"-"`
	IPSet         *netipx.IPSet   `json:"-"`

	AdGuardDomain        badoption.Listable[string] `json:"-"`
	AdGuardDomainMatcher *domain.AdGuardMatcher     `json:"-"`
}

func (DefaultHeadlessRule) IsValid added in v1.8.0

func (r DefaultHeadlessRule) IsValid() bool

type DefaultRule

type DefaultRule struct {
	RawDefaultRule
	RuleAction
}

func (*DefaultRule) IsValid

func (r *DefaultRule) IsValid() bool

func (DefaultRule) MarshalJSON

func (r DefaultRule) MarshalJSON() ([]byte, error)

func (*DefaultRule) UnmarshalJSON added in v1.10.0

func (r *DefaultRule) UnmarshalJSON(data []byte) error

type DialerOptions

type DialerOptions struct {
	Detour              string                            `json:"detour,omitempty"`
	BindInterface       string                            `json:"bind_interface,omitempty"`
	Inet4BindAddress    *badoption.Addr                   `json:"inet4_bind_address,omitempty"`
	Inet6BindAddress    *badoption.Addr                   `json:"inet6_bind_address,omitempty"`
	ProtectPath         string                            `json:"protect_path,omitempty"`
	RoutingMark         FwMark                            `json:"routing_mark,omitempty"`
	ReuseAddr           bool                              `json:"reuse_addr,omitempty"`
	ConnectTimeout      badoption.Duration                `json:"connect_timeout,omitempty"`
	TCPFastOpen         bool                              `json:"tcp_fast_open,omitempty"`
	TCPMultiPath        bool                              `json:"tcp_multi_path,omitempty"`
	UDPFragment         *bool                             `json:"udp_fragment,omitempty"`
	UDPFragmentDefault  bool                              `json:"-"`
	DomainStrategy      DomainStrategy                    `json:"domain_strategy,omitempty"`
	NetworkStrategy     *NetworkStrategy                  `json:"network_strategy,omitempty"`
	NetworkType         badoption.Listable[InterfaceType] `json:"network_type,omitempty"`
	FallbackNetworkType badoption.Listable[InterfaceType] `json:"fallback_network_type,omitempty"`
	FallbackDelay       badoption.Duration                `json:"fallback_delay,omitempty"`
	IsWireGuardListener bool                              `json:"-"`
}

func (*DialerOptions) ReplaceDialerOptions added in v1.8.0

func (o *DialerOptions) ReplaceDialerOptions(options DialerOptions)

func (*DialerOptions) TakeDialerOptions added in v1.8.0

func (o *DialerOptions) TakeDialerOptions() DialerOptions

type DialerOptionsWrapper added in v1.8.0

type DialerOptionsWrapper interface {
	TakeDialerOptions() DialerOptions
	ReplaceDialerOptions(options DialerOptions)
}

type DirectActionOptions

type DirectActionOptions _DirectActionOptions

func (DirectActionOptions) Descriptions

func (d DirectActionOptions) Descriptions() []string

func (*DirectActionOptions) UnmarshalJSON

func (d *DirectActionOptions) UnmarshalJSON(data []byte) error

type DirectInboundOptions

type DirectInboundOptions struct {
	ListenOptions
	Network         NetworkList `json:"network,omitempty"`
	OverrideAddress string      `json:"override_address,omitempty"`
	OverridePort    uint16      `json:"override_port,omitempty"`
}

type DirectOutboundOptions

type DirectOutboundOptions _DirectOutboundOptions

func (*DirectOutboundOptions) UnmarshalJSONContext

func (d *DirectOutboundOptions) UnmarshalJSONContext(ctx context.Context, content []byte) error

type DomainStrategy

type DomainStrategy dns.DomainStrategy

func (DomainStrategy) MarshalJSON

func (s DomainStrategy) MarshalJSON() ([]byte, error)

func (DomainStrategy) String

func (s DomainStrategy) String() string

func (*DomainStrategy) UnmarshalJSON

func (s *DomainStrategy) UnmarshalJSON(bytes []byte) error

type Endpoint

type Endpoint _Endpoint

func (*Endpoint) MarshalJSONContext

func (h *Endpoint) MarshalJSONContext(ctx context.Context) ([]byte, error)

func (*Endpoint) UnmarshalJSONContext

func (h *Endpoint) UnmarshalJSONContext(ctx context.Context, content []byte) error

type EndpointOptionsRegistry

type EndpointOptionsRegistry interface {
	CreateOptions(endpointType string) (any, bool)
}

type ExperimentalOptions

type ExperimentalOptions struct {
	CacheFile *CacheFileOptions `json:"cache_file,omitempty"`
	ClashAPI  *ClashAPIOptions  `json:"clash_api,omitempty"`
	V2RayAPI  *V2RayAPIOptions  `json:"v2ray_api,omitempty"`
	Debug     *DebugOptions     `json:"debug,omitempty"`
}

type FwMark added in v1.10.0

type FwMark uint32

func (FwMark) MarshalJSON added in v1.10.0

func (f FwMark) MarshalJSON() ([]byte, error)

func (*FwMark) UnmarshalJSON added in v1.10.0

func (f *FwMark) UnmarshalJSON(bytes []byte) error

type GeoIPOptions

type GeoIPOptions struct {
	Path           string `json:"path,omitempty"`
	DownloadURL    string `json:"download_url,omitempty"`
	DownloadDetour string `json:"download_detour,omitempty"`
}

type GeositeOptions

type GeositeOptions struct {
	Path           string `json:"path,omitempty"`
	DownloadURL    string `json:"download_url,omitempty"`
	DownloadDetour string `json:"download_detour,omitempty"`
}

type HTTPMixedInboundOptions

type HTTPMixedInboundOptions struct {
	ListenOptions
	Users          []auth.User `json:"users,omitempty"`
	SetSystemProxy bool        `json:"set_system_proxy,omitempty"`
	InboundTLSOptionsContainer
}

type HTTPOutboundOptions

type HTTPOutboundOptions struct {
	DialerOptions
	ServerOptions
	Username string `json:"username,omitempty"`
	Password string `json:"password,omitempty"`
	OutboundTLSOptionsContainer
	Path    string               `json:"path,omitempty"`
	Headers badoption.HTTPHeader `json:"headers,omitempty"`
}

type HTTPProxyOptions added in v1.2.0

type HTTPProxyOptions struct {
	Enabled bool `json:"enabled,omitempty"`
	ServerOptions
	BypassDomain badoption.Listable[string] `json:"bypass_domain,omitempty"`
	MatchDomain  badoption.Listable[string] `json:"match_domain,omitempty"`
}

type HeadlessRule added in v1.8.0

type HeadlessRule _HeadlessRule

func (HeadlessRule) IsValid added in v1.8.0

func (r HeadlessRule) IsValid() bool

func (HeadlessRule) MarshalJSON added in v1.8.0

func (r HeadlessRule) MarshalJSON() ([]byte, error)

func (*HeadlessRule) UnmarshalJSON added in v1.8.0

func (r *HeadlessRule) UnmarshalJSON(bytes []byte) error

type Hysteria2InboundOptions added in v1.4.3

type Hysteria2InboundOptions struct {
	ListenOptions
	UpMbps                int             `json:"up_mbps,omitempty"`
	DownMbps              int             `json:"down_mbps,omitempty"`
	Obfs                  *Hysteria2Obfs  `json:"obfs,omitempty"`
	Users                 []Hysteria2User `json:"users,omitempty"`
	IgnoreClientBandwidth bool            `json:"ignore_client_bandwidth,omitempty"`
	InboundTLSOptionsContainer
	Masquerade  *Hysteria2Masquerade `json:"masquerade,omitempty"`
	BrutalDebug bool                 `json:"brutal_debug,omitempty"`
}

type Hysteria2Masquerade

type Hysteria2Masquerade _Hysteria2Masquerade

func (Hysteria2Masquerade) MarshalJSON

func (m Hysteria2Masquerade) MarshalJSON() ([]byte, error)

func (*Hysteria2Masquerade) UnmarshalJSON

func (m *Hysteria2Masquerade) UnmarshalJSON(bytes []byte) error

type Hysteria2MasqueradeFile

type Hysteria2MasqueradeFile struct {
	Directory string `json:"directory"`
}

type Hysteria2MasqueradeProxy

type Hysteria2MasqueradeProxy struct {
	URL         string `json:"url"`
	RewriteHost bool   `json:"rewrite_host,omitempty"`
}

type Hysteria2MasqueradeString

type Hysteria2MasqueradeString struct {
	StatusCode int                  `json:"status_code,omitempty"`
	Headers    badoption.HTTPHeader `json:"headers,omitempty"`
	Content    string               `json:"content"`
}

type Hysteria2Obfs added in v1.4.3

type Hysteria2Obfs struct {
	Type     string `json:"type,omitempty"`
	Password string `json:"password,omitempty"`
}

type Hysteria2OutboundOptions added in v1.4.3

type Hysteria2OutboundOptions struct {
	DialerOptions
	ServerOptions
	UpMbps   int            `json:"up_mbps,omitempty"`
	DownMbps int            `json:"down_mbps,omitempty"`
	Obfs     *Hysteria2Obfs `json:"obfs,omitempty"`
	Password string         `json:"password,omitempty"`
	Network  NetworkList    `json:"network,omitempty"`
	OutboundTLSOptionsContainer
	BrutalDebug bool `json:"brutal_debug,omitempty"`
}

type Hysteria2User added in v1.4.3

type Hysteria2User struct {
	Name     string `json:"name,omitempty"`
	Password string `json:"password,omitempty"`
}

type HysteriaInboundOptions added in v1.0.1

type HysteriaInboundOptions struct {
	ListenOptions
	Up                  string         `json:"up,omitempty"`
	UpMbps              int            `json:"up_mbps,omitempty"`
	Down                string         `json:"down,omitempty"`
	DownMbps            int            `json:"down_mbps,omitempty"`
	Obfs                string         `json:"obfs,omitempty"`
	Users               []HysteriaUser `json:"users,omitempty"`
	ReceiveWindowConn   uint64         `json:"recv_window_conn,omitempty"`
	ReceiveWindowClient uint64         `json:"recv_window_client,omitempty"`
	MaxConnClient       int            `json:"max_conn_client,omitempty"`
	DisableMTUDiscovery bool           `json:"disable_mtu_discovery,omitempty"`
	InboundTLSOptionsContainer
}

type HysteriaOutboundOptions added in v1.0.1

type HysteriaOutboundOptions struct {
	DialerOptions
	ServerOptions
	Up                  string      `json:"up,omitempty"`
	UpMbps              int         `json:"up_mbps,omitempty"`
	Down                string      `json:"down,omitempty"`
	DownMbps            int         `json:"down_mbps,omitempty"`
	Obfs                string      `json:"obfs,omitempty"`
	Auth                []byte      `json:"auth,omitempty"`
	AuthString          string      `json:"auth_str,omitempty"`
	ReceiveWindowConn   uint64      `json:"recv_window_conn,omitempty"`
	ReceiveWindow       uint64      `json:"recv_window,omitempty"`
	DisableMTUDiscovery bool        `json:"disable_mtu_discovery,omitempty"`
	Network             NetworkList `json:"network,omitempty"`
	OutboundTLSOptionsContainer
}

type HysteriaUser added in v1.1.0

type HysteriaUser struct {
	Name       string `json:"name,omitempty"`
	Auth       []byte `json:"auth,omitempty"`
	AuthString string `json:"auth_str,omitempty"`
}

type Inbound

type Inbound _Inbound

func (*Inbound) MarshalJSONContext

func (h *Inbound) MarshalJSONContext(ctx context.Context) ([]byte, error)

func (*Inbound) UnmarshalJSONContext

func (h *Inbound) UnmarshalJSONContext(ctx context.Context, content []byte) error

type InboundACMEOptions added in v1.0.1

type InboundACMEOptions struct {
	Domain                  badoption.Listable[string]  `json:"domain,omitempty"`
	DataDirectory           string                      `json:"data_directory,omitempty"`
	DefaultServerName       string                      `json:"default_server_name,omitempty"`
	Email                   string                      `json:"email,omitempty"`
	Provider                string                      `json:"provider,omitempty"`
	DisableHTTPChallenge    bool                        `json:"disable_http_challenge,omitempty"`
	DisableTLSALPNChallenge bool                        `json:"disable_tls_alpn_challenge,omitempty"`
	AlternativeHTTPPort     uint16                      `json:"alternative_http_port,omitempty"`
	AlternativeTLSPort      uint16                      `json:"alternative_tls_port,omitempty"`
	ExternalAccount         *ACMEExternalAccountOptions `json:"external_account,omitempty"`
	DNS01Challenge          *ACMEDNS01ChallengeOptions  `json:"dns01_challenge,omitempty"`
}

type InboundECHOptions added in v1.4.3

type InboundECHOptions struct {
	Enabled                     bool                       `json:"enabled,omitempty"`
	PQSignatureSchemesEnabled   bool                       `json:"pq_signature_schemes_enabled,omitempty"`
	DynamicRecordSizingDisabled bool                       `json:"dynamic_record_sizing_disabled,omitempty"`
	Key                         badoption.Listable[string] `json:"key,omitempty"`
	KeyPath                     string                     `json:"key_path,omitempty"`
}

type InboundMultiplexOptions added in v1.7.0

type InboundMultiplexOptions struct {
	Enabled bool           `json:"enabled,omitempty"`
	Padding bool           `json:"padding,omitempty"`
	Brutal  *BrutalOptions `json:"brutal,omitempty"`
}

type InboundOptions deprecated

type InboundOptions struct {
	SniffEnabled              bool               `json:"sniff,omitempty"`
	SniffOverrideDestination  bool               `json:"sniff_override_destination,omitempty"`
	SniffTimeout              badoption.Duration `json:"sniff_timeout,omitempty"`
	DomainStrategy            DomainStrategy     `json:"domain_strategy,omitempty"`
	UDPDisableDomainUnmapping bool               `json:"udp_disable_domain_unmapping,omitempty"`
	Detour                    string             `json:"detour,omitempty"`
}

Deprecated: Use rule action instead

type InboundOptionsRegistry

type InboundOptionsRegistry interface {
	CreateOptions(outboundType string) (any, bool)
}

type InboundRealityHandshakeOptions added in v1.2.0

type InboundRealityHandshakeOptions struct {
	ServerOptions
	DialerOptions
}

type InboundRealityOptions added in v1.2.0

type InboundRealityOptions struct {
	Enabled           bool                           `json:"enabled,omitempty"`
	Handshake         InboundRealityHandshakeOptions `json:"handshake,omitempty"`
	PrivateKey        string                         `json:"private_key,omitempty"`
	ShortID           badoption.Listable[string]     `json:"short_id,omitempty"`
	MaxTimeDifference badoption.Duration             `json:"max_time_difference,omitempty"`
}

type InboundTLSOptions

type InboundTLSOptions struct {
	Enabled         bool                       `json:"enabled,omitempty"`
	ServerName      string                     `json:"server_name,omitempty"`
	Insecure        bool                       `json:"insecure,omitempty"`
	ALPN            badoption.Listable[string] `json:"alpn,omitempty"`
	MinVersion      string                     `json:"min_version,omitempty"`
	MaxVersion      string                     `json:"max_version,omitempty"`
	CipherSuites    badoption.Listable[string] `json:"cipher_suites,omitempty"`
	Certificate     badoption.Listable[string] `json:"certificate,omitempty"`
	CertificatePath string                     `json:"certificate_path,omitempty"`
	Key             badoption.Listable[string] `json:"key,omitempty"`
	KeyPath         string                     `json:"key_path,omitempty"`
	ACME            *InboundACMEOptions        `json:"acme,omitempty"`
	ECH             *InboundECHOptions         `json:"ech,omitempty"`
	Reality         *InboundRealityOptions     `json:"reality,omitempty"`
}

type InboundTLSOptionsContainer added in v1.8.0

type InboundTLSOptionsContainer struct {
	TLS *InboundTLSOptions `json:"tls,omitempty"`
}

func (*InboundTLSOptionsContainer) ReplaceInboundTLSOptions added in v1.8.0

func (o *InboundTLSOptionsContainer) ReplaceInboundTLSOptions(options *InboundTLSOptions)

func (*InboundTLSOptionsContainer) TakeInboundTLSOptions added in v1.8.0

func (o *InboundTLSOptionsContainer) TakeInboundTLSOptions() *InboundTLSOptions

type InboundTLSOptionsWrapper added in v1.8.0

type InboundTLSOptionsWrapper interface {
	TakeInboundTLSOptions() *InboundTLSOptions
	ReplaceInboundTLSOptions(options *InboundTLSOptions)
}

type InterfaceType

type InterfaceType C.InterfaceType

func (InterfaceType) Build

func (t InterfaceType) Build() C.InterfaceType

func (InterfaceType) MarshalJSON

func (t InterfaceType) MarshalJSON() ([]byte, error)

func (*InterfaceType) UnmarshalJSON

func (t *InterfaceType) UnmarshalJSON(content []byte) error

type LegacyWireGuardOutboundOptions

type LegacyWireGuardOutboundOptions struct {
	DialerOptions
	SystemInterface bool                             `json:"system_interface,omitempty"`
	GSO             bool                             `json:"gso,omitempty"`
	InterfaceName   string                           `json:"interface_name,omitempty"`
	LocalAddress    badoption.Listable[netip.Prefix] `json:"local_address"`
	PrivateKey      string                           `json:"private_key"`
	Peers           []LegacyWireGuardPeer            `json:"peers,omitempty"`
	ServerOptions
	PeerPublicKey string      `json:"peer_public_key"`
	PreSharedKey  string      `json:"pre_shared_key,omitempty"`
	Reserved      []uint8     `json:"reserved,omitempty"`
	Workers       int         `json:"workers,omitempty"`
	MTU           uint32      `json:"mtu,omitempty"`
	Network       NetworkList `json:"network,omitempty"`
}

type LegacyWireGuardPeer

type LegacyWireGuardPeer struct {
	ServerOptions
	PublicKey    string                           `json:"public_key,omitempty"`
	PreSharedKey string                           `json:"pre_shared_key,omitempty"`
	AllowedIPs   badoption.Listable[netip.Prefix] `json:"allowed_ips,omitempty"`
	Reserved     []uint8                          `json:"reserved,omitempty"`
}

type ListenOptions

type ListenOptions struct {
	Listen               *badoption.Addr    `json:"listen,omitempty"`
	ListenPort           uint16             `json:"listen_port,omitempty"`
	TCPKeepAlive         badoption.Duration `json:"tcp_keep_alive,omitempty"`
	TCPKeepAliveInterval badoption.Duration `json:"tcp_keep_alive_interval,omitempty"`
	TCPFastOpen          bool               `json:"tcp_fast_open,omitempty"`
	TCPMultiPath         bool               `json:"tcp_multi_path,omitempty"`
	UDPFragment          *bool              `json:"udp_fragment,omitempty"`
	UDPFragmentDefault   bool               `json:"-"`
	UDPTimeout           UDPTimeoutCompat   `json:"udp_timeout,omitempty"`

	// Deprecated: removed
	ProxyProtocol bool `json:"proxy_protocol,omitempty"`
	// Deprecated: removed
	ProxyProtocolAcceptNoHeader bool `json:"proxy_protocol_accept_no_header,omitempty"`
	InboundOptions
}

func (*ListenOptions) ReplaceListenOptions added in v1.8.0

func (o *ListenOptions) ReplaceListenOptions(options ListenOptions)

func (*ListenOptions) TakeListenOptions added in v1.8.0

func (o *ListenOptions) TakeListenOptions() ListenOptions

type ListenOptionsWrapper added in v1.8.0

type ListenOptionsWrapper interface {
	TakeListenOptions() ListenOptions
	ReplaceListenOptions(options ListenOptions)
}

type LocalRuleSet added in v1.8.0

type LocalRuleSet struct {
	Path string `json:"path,omitempty"`
}

type LogOptions

type LogOptions struct {
	Disabled     bool   `json:"disabled,omitempty"`
	Level        string `json:"level,omitempty"`
	Output       string `json:"output,omitempty"`
	Timestamp    bool   `json:"timestamp,omitempty"`
	DisableColor bool   `json:"-"`
}

type LogicalDNSRule

type LogicalDNSRule struct {
	RawLogicalDNSRule
	DNSRuleAction
}

func (*LogicalDNSRule) IsValid

func (r *LogicalDNSRule) IsValid() bool

func (LogicalDNSRule) MarshalJSON

func (r LogicalDNSRule) MarshalJSON() ([]byte, error)

func (*LogicalDNSRule) UnmarshalJSONContext

func (r *LogicalDNSRule) UnmarshalJSONContext(ctx context.Context, data []byte) error

type LogicalHeadlessRule added in v1.8.0

type LogicalHeadlessRule struct {
	Mode   string         `json:"mode"`
	Rules  []HeadlessRule `json:"rules,omitempty"`
	Invert bool           `json:"invert,omitempty"`
}

func (LogicalHeadlessRule) IsValid added in v1.8.0

func (r LogicalHeadlessRule) IsValid() bool

type LogicalRule

type LogicalRule struct {
	RawLogicalRule
	RuleAction
}

func (*LogicalRule) IsValid

func (r *LogicalRule) IsValid() bool

func (LogicalRule) MarshalJSON

func (r LogicalRule) MarshalJSON() ([]byte, error)

func (*LogicalRule) UnmarshalJSON

func (r *LogicalRule) UnmarshalJSON(data []byte) error

type MemoryBytes added in v1.4.4

type MemoryBytes uint64

func (MemoryBytes) MarshalJSON added in v1.4.4

func (l MemoryBytes) MarshalJSON() ([]byte, error)

func (*MemoryBytes) UnmarshalJSON added in v1.4.4

func (l *MemoryBytes) UnmarshalJSON(bytes []byte) error

type NTPOptions added in v1.2.0

type NTPOptions struct {
	Enabled       bool               `json:"enabled,omitempty"`
	Interval      badoption.Duration `json:"interval,omitempty"`
	WriteToSystem bool               `json:"write_to_system,omitempty"`
	ServerOptions
	DialerOptions
}

type NaiveInboundOptions

type NaiveInboundOptions struct {
	ListenOptions
	Users   []auth.User `json:"users,omitempty"`
	Network NetworkList `json:"network,omitempty"`
	InboundTLSOptionsContainer
}

type NetworkList

type NetworkList string

func (NetworkList) Build

func (v NetworkList) Build() []string

func (*NetworkList) UnmarshalJSON

func (v *NetworkList) UnmarshalJSON(content []byte) error

type NetworkStrategy

type NetworkStrategy C.NetworkStrategy

func (NetworkStrategy) MarshalJSON

func (n NetworkStrategy) MarshalJSON() ([]byte, error)

func (*NetworkStrategy) UnmarshalJSON

func (n *NetworkStrategy) UnmarshalJSON(content []byte) error

type OnDemandOptions added in v1.2.0

type OnDemandOptions struct {
	Enabled bool           `json:"enabled,omitempty"`
	Rules   []OnDemandRule `json:"rules,omitempty"`
}

type OnDemandRule added in v1.2.0

type OnDemandRule struct {
	Action                *OnDemandRuleAction        `json:"action,omitempty"`
	DNSSearchDomainMatch  badoption.Listable[string] `json:"dns_search_domain_match,omitempty"`
	DNSServerAddressMatch badoption.Listable[string] `json:"dns_server_address_match,omitempty"`
	InterfaceTypeMatch    *OnDemandRuleInterfaceType `json:"interface_type_match,omitempty"`
	SSIDMatch             badoption.Listable[string] `json:"ssid_match,omitempty"`
	ProbeURL              string                     `json:"probe_url,omitempty"`
}

type OnDemandRuleAction added in v1.2.0

type OnDemandRuleAction int

func (*OnDemandRuleAction) MarshalJSON added in v1.2.0

func (r *OnDemandRuleAction) MarshalJSON() ([]byte, error)

func (*OnDemandRuleAction) UnmarshalJSON added in v1.2.0

func (r *OnDemandRuleAction) UnmarshalJSON(bytes []byte) error

type OnDemandRuleInterfaceType added in v1.2.0

type OnDemandRuleInterfaceType int

func (*OnDemandRuleInterfaceType) MarshalJSON added in v1.2.0

func (r *OnDemandRuleInterfaceType) MarshalJSON() ([]byte, error)

func (*OnDemandRuleInterfaceType) UnmarshalJSON added in v1.2.0

func (r *OnDemandRuleInterfaceType) UnmarshalJSON(bytes []byte) error

type Options

type Options _Options

func (*Options) UnmarshalJSONContext

func (o *Options) UnmarshalJSONContext(ctx context.Context, content []byte) error

type Outbound

type Outbound _Outbound

func (*Outbound) MarshalJSONContext

func (h *Outbound) MarshalJSONContext(ctx context.Context) ([]byte, error)

func (*Outbound) UnmarshalJSONContext

func (h *Outbound) UnmarshalJSONContext(ctx context.Context, content []byte) error

type OutboundECHOptions added in v1.1.0

type OutboundECHOptions struct {
	Enabled                     bool                       `json:"enabled,omitempty"`
	PQSignatureSchemesEnabled   bool                       `json:"pq_signature_schemes_enabled,omitempty"`
	DynamicRecordSizingDisabled bool                       `json:"dynamic_record_sizing_disabled,omitempty"`
	Config                      badoption.Listable[string] `json:"config,omitempty"`
	ConfigPath                  string                     `json:"config_path,omitempty"`
}

type OutboundMultiplexOptions added in v1.7.0

type OutboundMultiplexOptions struct {
	Enabled        bool           `json:"enabled,omitempty"`
	Protocol       string         `json:"protocol,omitempty"`
	MaxConnections int            `json:"max_connections,omitempty"`
	MinStreams     int            `json:"min_streams,omitempty"`
	MaxStreams     int            `json:"max_streams,omitempty"`
	Padding        bool           `json:"padding,omitempty"`
	Brutal         *BrutalOptions `json:"brutal,omitempty"`
}

type OutboundOptionsRegistry

type OutboundOptionsRegistry interface {
	CreateOptions(outboundType string) (any, bool)
}

type OutboundRealityOptions added in v1.2.0

type OutboundRealityOptions struct {
	Enabled   bool   `json:"enabled,omitempty"`
	PublicKey string `json:"public_key,omitempty"`
	ShortID   string `json:"short_id,omitempty"`
}

type OutboundTLSOptions

type OutboundTLSOptions struct {
	Enabled         bool                       `json:"enabled,omitempty"`
	DisableSNI      bool                       `json:"disable_sni,omitempty"`
	ServerName      string                     `json:"server_name,omitempty"`
	Insecure        bool                       `json:"insecure,omitempty"`
	ALPN            badoption.Listable[string] `json:"alpn,omitempty"`
	MinVersion      string                     `json:"min_version,omitempty"`
	MaxVersion      string                     `json:"max_version,omitempty"`
	CipherSuites    badoption.Listable[string] `json:"cipher_suites,omitempty"`
	Certificate     badoption.Listable[string] `json:"certificate,omitempty"`
	CertificatePath string                     `json:"certificate_path,omitempty"`
	ECH             *OutboundECHOptions        `json:"ech,omitempty"`
	UTLS            *OutboundUTLSOptions       `json:"utls,omitempty"`
	Reality         *OutboundRealityOptions    `json:"reality,omitempty"`
}

type OutboundTLSOptionsContainer added in v1.8.0

type OutboundTLSOptionsContainer struct {
	TLS *OutboundTLSOptions `json:"tls,omitempty"`
}

func (*OutboundTLSOptionsContainer) ReplaceOutboundTLSOptions added in v1.8.0

func (o *OutboundTLSOptionsContainer) ReplaceOutboundTLSOptions(options *OutboundTLSOptions)

func (*OutboundTLSOptionsContainer) TakeOutboundTLSOptions added in v1.8.0

func (o *OutboundTLSOptionsContainer) TakeOutboundTLSOptions() *OutboundTLSOptions

type OutboundTLSOptionsWrapper added in v1.8.0

type OutboundTLSOptionsWrapper interface {
	TakeOutboundTLSOptions() *OutboundTLSOptions
	ReplaceOutboundTLSOptions(options *OutboundTLSOptions)
}

type OutboundUTLSOptions added in v1.1.0

type OutboundUTLSOptions struct {
	Enabled     bool   `json:"enabled,omitempty"`
	Fingerprint string `json:"fingerprint,omitempty"`
}

type PlainRuleSet added in v1.8.0

type PlainRuleSet struct {
	Rules []HeadlessRule `json:"rules,omitempty"`
}

type PlainRuleSetCompat added in v1.8.0

type PlainRuleSetCompat _PlainRuleSetCompat

func (PlainRuleSetCompat) MarshalJSON added in v1.8.0

func (r PlainRuleSetCompat) MarshalJSON() ([]byte, error)

func (*PlainRuleSetCompat) UnmarshalJSON added in v1.8.0

func (r *PlainRuleSetCompat) UnmarshalJSON(bytes []byte) error

func (PlainRuleSetCompat) Upgrade added in v1.8.0

func (r PlainRuleSetCompat) Upgrade() (PlainRuleSet, error)

type RawDefaultDNSRule

type RawDefaultDNSRule struct {
	Inbound                  badoption.Listable[string]        `json:"inbound,omitempty"`
	IPVersion                int                               `json:"ip_version,omitempty"`
	QueryType                badoption.Listable[DNSQueryType]  `json:"query_type,omitempty"`
	Network                  badoption.Listable[string]        `json:"network,omitempty"`
	AuthUser                 badoption.Listable[string]        `json:"auth_user,omitempty"`
	Protocol                 badoption.Listable[string]        `json:"protocol,omitempty"`
	Domain                   badoption.Listable[string]        `json:"domain,omitempty"`
	DomainSuffix             badoption.Listable[string]        `json:"domain_suffix,omitempty"`
	DomainKeyword            badoption.Listable[string]        `json:"domain_keyword,omitempty"`
	DomainRegex              badoption.Listable[string]        `json:"domain_regex,omitempty"`
	Geosite                  badoption.Listable[string]        `json:"geosite,omitempty"`
	SourceGeoIP              badoption.Listable[string]        `json:"source_geoip,omitempty"`
	GeoIP                    badoption.Listable[string]        `json:"geoip,omitempty"`
	IPCIDR                   badoption.Listable[string]        `json:"ip_cidr,omitempty"`
	IPIsPrivate              bool                              `json:"ip_is_private,omitempty"`
	SourceIPCIDR             badoption.Listable[string]        `json:"source_ip_cidr,omitempty"`
	SourceIPIsPrivate        bool                              `json:"source_ip_is_private,omitempty"`
	SourcePort               badoption.Listable[uint16]        `json:"source_port,omitempty"`
	SourcePortRange          badoption.Listable[string]        `json:"source_port_range,omitempty"`
	Port                     badoption.Listable[uint16]        `json:"port,omitempty"`
	PortRange                badoption.Listable[string]        `json:"port_range,omitempty"`
	ProcessName              badoption.Listable[string]        `json:"process_name,omitempty"`
	ProcessPath              badoption.Listable[string]        `json:"process_path,omitempty"`
	ProcessPathRegex         badoption.Listable[string]        `json:"process_path_regex,omitempty"`
	PackageName              badoption.Listable[string]        `json:"package_name,omitempty"`
	User                     badoption.Listable[string]        `json:"user,omitempty"`
	UserID                   badoption.Listable[int32]         `json:"user_id,omitempty"`
	Outbound                 badoption.Listable[string]        `json:"outbound,omitempty"`
	ClashMode                string                            `json:"clash_mode,omitempty"`
	NetworkType              badoption.Listable[InterfaceType] `json:"network_type,omitempty"`
	NetworkIsExpensive       bool                              `json:"network_is_expensive,omitempty"`
	NetworkIsConstrained     bool                              `json:"network_is_constrained,omitempty"`
	WIFISSID                 badoption.Listable[string]        `json:"wifi_ssid,omitempty"`
	WIFIBSSID                badoption.Listable[string]        `json:"wifi_bssid,omitempty"`
	RuleSet                  badoption.Listable[string]        `json:"rule_set,omitempty"`
	RuleSetIPCIDRMatchSource bool                              `json:"rule_set_ip_cidr_match_source,omitempty"`
	RuleSetIPCIDRAcceptEmpty bool                              `json:"rule_set_ip_cidr_accept_empty,omitempty"`
	Invert                   bool                              `json:"invert,omitempty"`

	// Deprecated: renamed to rule_set_ip_cidr_match_source
	Deprecated_RulesetIPCIDRMatchSource bool `json:"rule_set_ipcidr_match_source,omitempty"`
}

type RawDefaultRule

type RawDefaultRule struct {
	Inbound                  badoption.Listable[string]        `json:"inbound,omitempty"`
	IPVersion                int                               `json:"ip_version,omitempty"`
	Network                  badoption.Listable[string]        `json:"network,omitempty"`
	AuthUser                 badoption.Listable[string]        `json:"auth_user,omitempty"`
	Protocol                 badoption.Listable[string]        `json:"protocol,omitempty"`
	Client                   badoption.Listable[string]        `json:"client,omitempty"`
	Domain                   badoption.Listable[string]        `json:"domain,omitempty"`
	DomainSuffix             badoption.Listable[string]        `json:"domain_suffix,omitempty"`
	DomainKeyword            badoption.Listable[string]        `json:"domain_keyword,omitempty"`
	DomainRegex              badoption.Listable[string]        `json:"domain_regex,omitempty"`
	Geosite                  badoption.Listable[string]        `json:"geosite,omitempty"`
	SourceGeoIP              badoption.Listable[string]        `json:"source_geoip,omitempty"`
	GeoIP                    badoption.Listable[string]        `json:"geoip,omitempty"`
	SourceIPCIDR             badoption.Listable[string]        `json:"source_ip_cidr,omitempty"`
	SourceIPIsPrivate        bool                              `json:"source_ip_is_private,omitempty"`
	IPCIDR                   badoption.Listable[string]        `json:"ip_cidr,omitempty"`
	IPIsPrivate              bool                              `json:"ip_is_private,omitempty"`
	SourcePort               badoption.Listable[uint16]        `json:"source_port,omitempty"`
	SourcePortRange          badoption.Listable[string]        `json:"source_port_range,omitempty"`
	Port                     badoption.Listable[uint16]        `json:"port,omitempty"`
	PortRange                badoption.Listable[string]        `json:"port_range,omitempty"`
	ProcessName              badoption.Listable[string]        `json:"process_name,omitempty"`
	ProcessPath              badoption.Listable[string]        `json:"process_path,omitempty"`
	ProcessPathRegex         badoption.Listable[string]        `json:"process_path_regex,omitempty"`
	PackageName              badoption.Listable[string]        `json:"package_name,omitempty"`
	User                     badoption.Listable[string]        `json:"user,omitempty"`
	UserID                   badoption.Listable[int32]         `json:"user_id,omitempty"`
	ClashMode                string                            `json:"clash_mode,omitempty"`
	NetworkType              badoption.Listable[InterfaceType] `json:"network_type,omitempty"`
	NetworkIsExpensive       bool                              `json:"network_is_expensive,omitempty"`
	NetworkIsConstrained     bool                              `json:"network_is_constrained,omitempty"`
	WIFISSID                 badoption.Listable[string]        `json:"wifi_ssid,omitempty"`
	WIFIBSSID                badoption.Listable[string]        `json:"wifi_bssid,omitempty"`
	RuleSet                  badoption.Listable[string]        `json:"rule_set,omitempty"`
	RuleSetIPCIDRMatchSource bool                              `json:"rule_set_ip_cidr_match_source,omitempty"`
	Invert                   bool                              `json:"invert,omitempty"`

	// Deprecated: renamed to rule_set_ip_cidr_match_source
	Deprecated_RulesetIPCIDRMatchSource bool `json:"rule_set_ipcidr_match_source,omitempty"`
}

type RawLogicalDNSRule

type RawLogicalDNSRule struct {
	Mode   string    `json:"mode"`
	Rules  []DNSRule `json:"rules,omitempty"`
	Invert bool      `json:"invert,omitempty"`
}

type RawLogicalRule

type RawLogicalRule struct {
	Mode   string `json:"mode"`
	Rules  []Rule `json:"rules,omitempty"`
	Invert bool   `json:"invert,omitempty"`
}

type RawRouteOptionsActionOptions

type RawRouteOptionsActionOptions struct {
	OverrideAddress string `json:"override_address,omitempty"`
	OverridePort    uint16 `json:"override_port,omitempty"`

	NetworkStrategy *NetworkStrategy `json:"network_strategy,omitempty"`
	FallbackDelay   uint32           `json:"fallback_delay,omitempty"`

	UDPDisableDomainUnmapping bool               `json:"udp_disable_domain_unmapping,omitempty"`
	UDPConnect                bool               `json:"udp_connect,omitempty"`
	UDPTimeout                badoption.Duration `json:"udp_timeout,omitempty"`
}

type RedirectInboundOptions

type RedirectInboundOptions struct {
	ListenOptions
}

type RejectActionOptions

type RejectActionOptions _RejectActionOptions

func (*RejectActionOptions) UnmarshalJSON

func (r *RejectActionOptions) UnmarshalJSON(bytes []byte) error

type RemoteRuleSet added in v1.8.0

type RemoteRuleSet struct {
	URL            string             `json:"url"`
	DownloadDetour string             `json:"download_detour,omitempty"`
	UpdateInterval badoption.Duration `json:"update_interval,omitempty"`
}

type RouteActionOptions

type RouteActionOptions struct {
	Outbound string `json:"outbound,omitempty"`
	RawRouteOptionsActionOptions
}

type RouteActionResolve

type RouteActionResolve struct {
	Strategy DomainStrategy `json:"strategy,omitempty"`
	Server   string         `json:"server,omitempty"`
}

type RouteActionSniff

type RouteActionSniff struct {
	Sniffer badoption.Listable[string] `json:"sniffer,omitempty"`
	Timeout badoption.Duration         `json:"timeout,omitempty"`
}

type RouteOptions

type RouteOptions struct {
	GeoIP                      *GeoIPOptions                     `json:"geoip,omitempty"`
	Geosite                    *GeositeOptions                   `json:"geosite,omitempty"`
	Rules                      []Rule                            `json:"rules,omitempty"`
	RuleSet                    []RuleSet                         `json:"rule_set,omitempty"`
	Final                      string                            `json:"final,omitempty"`
	FindProcess                bool                              `json:"find_process,omitempty"`
	AutoDetectInterface        bool                              `json:"auto_detect_interface,omitempty"`
	OverrideAndroidVPN         bool                              `json:"override_android_vpn,omitempty"`
	DefaultInterface           string                            `json:"default_interface,omitempty"`
	DefaultMark                FwMark                            `json:"default_mark,omitempty"`
	DefaultNetworkStrategy     *NetworkStrategy                  `json:"default_network_strategy,omitempty"`
	DefaultNetworkType         badoption.Listable[InterfaceType] `json:"default_network_type,omitempty"`
	DefaultFallbackNetworkType badoption.Listable[InterfaceType] `json:"default_fallback_network_type,omitempty"`
	DefaultFallbackDelay       badoption.Duration                `json:"default_fallback_delay,omitempty"`
}

type RouteOptionsActionOptions

type RouteOptionsActionOptions RawRouteOptionsActionOptions

func (*RouteOptionsActionOptions) UnmarshalJSON

func (r *RouteOptionsActionOptions) UnmarshalJSON(data []byte) error

type Rule

type Rule _Rule

func (Rule) IsValid added in v1.8.0

func (r Rule) IsValid() bool

func (Rule) MarshalJSON

func (r Rule) MarshalJSON() ([]byte, error)

func (*Rule) UnmarshalJSON

func (r *Rule) UnmarshalJSON(bytes []byte) error

type RuleAction

type RuleAction _RuleAction

func (RuleAction) MarshalJSON

func (r RuleAction) MarshalJSON() ([]byte, error)

func (*RuleAction) UnmarshalJSON

func (r *RuleAction) UnmarshalJSON(data []byte) error

type RuleSet added in v1.8.0

type RuleSet _RuleSet

func (RuleSet) MarshalJSON added in v1.8.0

func (r RuleSet) MarshalJSON() ([]byte, error)

func (*RuleSet) UnmarshalJSON added in v1.8.0

func (r *RuleSet) UnmarshalJSON(bytes []byte) error

type SOCKSOutboundOptions

type SOCKSOutboundOptions struct {
	DialerOptions
	ServerOptions
	Version    string             `json:"version,omitempty"`
	Username   string             `json:"username,omitempty"`
	Password   string             `json:"password,omitempty"`
	Network    NetworkList        `json:"network,omitempty"`
	UDPOverTCP *UDPOverTCPOptions `json:"udp_over_tcp,omitempty"`
}

type SSHOutboundOptions added in v1.0.1

type SSHOutboundOptions struct {
	DialerOptions
	ServerOptions
	User                 string                     `json:"user,omitempty"`
	Password             string                     `json:"password,omitempty"`
	PrivateKey           badoption.Listable[string] `json:"private_key,omitempty"`
	PrivateKeyPath       string                     `json:"private_key_path,omitempty"`
	PrivateKeyPassphrase string                     `json:"private_key_passphrase,omitempty"`
	HostKey              badoption.Listable[string] `json:"host_key,omitempty"`
	HostKeyAlgorithms    badoption.Listable[string] `json:"host_key_algorithms,omitempty"`
	ClientVersion        string                     `json:"client_version,omitempty"`
}

type SelectorOutboundOptions

type SelectorOutboundOptions struct {
	Outbounds                 []string `json:"outbounds"`
	Default                   string   `json:"default,omitempty"`
	InterruptExistConnections bool     `json:"interrupt_exist_connections,omitempty"`
}

type ServerOptions

type ServerOptions struct {
	Server     string `json:"server"`
	ServerPort uint16 `json:"server_port"`
}

func (ServerOptions) Build

func (o ServerOptions) Build() M.Socksaddr

func (*ServerOptions) ReplaceServerOptions added in v1.8.0

func (o *ServerOptions) ReplaceServerOptions(options ServerOptions)

func (*ServerOptions) TakeServerOptions added in v1.8.0

func (o *ServerOptions) TakeServerOptions() ServerOptions

type ServerOptionsWrapper added in v1.8.0

type ServerOptionsWrapper interface {
	TakeServerOptions() ServerOptions
	ReplaceServerOptions(options ServerOptions)
}

type ShadowTLSHandshakeOptions added in v1.0.1

type ShadowTLSHandshakeOptions struct {
	ServerOptions
	DialerOptions
}

type ShadowTLSInboundOptions added in v1.0.1

type ShadowTLSInboundOptions struct {
	ListenOptions
	Version                int                                  `json:"version,omitempty"`
	Password               string                               `json:"password,omitempty"`
	Users                  []ShadowTLSUser                      `json:"users,omitempty"`
	Handshake              ShadowTLSHandshakeOptions            `json:"handshake,omitempty"`
	HandshakeForServerName map[string]ShadowTLSHandshakeOptions `json:"handshake_for_server_name,omitempty"`
	StrictMode             bool                                 `json:"strict_mode,omitempty"`
}

type ShadowTLSOutboundOptions added in v1.0.1

type ShadowTLSOutboundOptions struct {
	DialerOptions
	ServerOptions
	Version  int    `json:"version,omitempty"`
	Password string `json:"password,omitempty"`
	OutboundTLSOptionsContainer
}

type ShadowTLSUser added in v1.2.0

type ShadowTLSUser struct {
	Name     string `json:"name,omitempty"`
	Password string `json:"password,omitempty"`
}

type ShadowsocksDestination

type ShadowsocksDestination struct {
	Name     string `json:"name"`
	Password string `json:"password"`
	ServerOptions
}

type ShadowsocksInboundOptions

type ShadowsocksInboundOptions struct {
	ListenOptions
	Network      NetworkList              `json:"network,omitempty"`
	Method       string                   `json:"method"`
	Password     string                   `json:"password,omitempty"`
	Users        []ShadowsocksUser        `json:"users,omitempty"`
	Destinations []ShadowsocksDestination `json:"destinations,omitempty"`
	Multiplex    *InboundMultiplexOptions `json:"multiplex,omitempty"`
}

type ShadowsocksOutboundOptions

type ShadowsocksOutboundOptions struct {
	DialerOptions
	ServerOptions
	Method        string                    `json:"method"`
	Password      string                    `json:"password"`
	Plugin        string                    `json:"plugin,omitempty"`
	PluginOptions string                    `json:"plugin_opts,omitempty"`
	Network       NetworkList               `json:"network,omitempty"`
	UDPOverTCP    *UDPOverTCPOptions        `json:"udp_over_tcp,omitempty"`
	Multiplex     *OutboundMultiplexOptions `json:"multiplex,omitempty"`
}

type ShadowsocksROutboundOptions added in v1.1.0

type ShadowsocksROutboundOptions struct {
	DialerOptions
	ServerOptions
	Method        string      `json:"method"`
	Password      string      `json:"password"`
	Obfs          string      `json:"obfs,omitempty"`
	ObfsParam     string      `json:"obfs_param,omitempty"`
	Protocol      string      `json:"protocol,omitempty"`
	ProtocolParam string      `json:"protocol_param,omitempty"`
	Network       NetworkList `json:"network,omitempty"`
}

type ShadowsocksUser

type ShadowsocksUser struct {
	Name     string `json:"name"`
	Password string `json:"password"`
}

type SocksInboundOptions

type SocksInboundOptions struct {
	ListenOptions
	Users []auth.User `json:"users,omitempty"`
}

type StubOptions

type StubOptions struct{}

type TProxyInboundOptions

type TProxyInboundOptions struct {
	ListenOptions
	Network NetworkList `json:"network,omitempty"`
}

type TUICInboundOptions added in v1.4.0

type TUICInboundOptions struct {
	ListenOptions
	Users             []TUICUser         `json:"users,omitempty"`
	CongestionControl string             `json:"congestion_control,omitempty"`
	AuthTimeout       badoption.Duration `json:"auth_timeout,omitempty"`
	ZeroRTTHandshake  bool               `json:"zero_rtt_handshake,omitempty"`
	Heartbeat         badoption.Duration `json:"heartbeat,omitempty"`
	InboundTLSOptionsContainer
}

type TUICOutboundOptions added in v1.4.0

type TUICOutboundOptions struct {
	DialerOptions
	ServerOptions
	UUID              string             `json:"uuid,omitempty"`
	Password          string             `json:"password,omitempty"`
	CongestionControl string             `json:"congestion_control,omitempty"`
	UDPRelayMode      string             `json:"udp_relay_mode,omitempty"`
	UDPOverStream     bool               `json:"udp_over_stream,omitempty"`
	ZeroRTTHandshake  bool               `json:"zero_rtt_handshake,omitempty"`
	Heartbeat         badoption.Duration `json:"heartbeat,omitempty"`
	Network           NetworkList        `json:"network,omitempty"`
	OutboundTLSOptionsContainer
}

type TUICUser added in v1.4.0

type TUICUser struct {
	Name     string `json:"name,omitempty"`
	UUID     string `json:"uuid,omitempty"`
	Password string `json:"password,omitempty"`
}

type TorOutboundOptions added in v1.0.1

type TorOutboundOptions struct {
	DialerOptions
	ExecutablePath string            `json:"executable_path,omitempty"`
	ExtraArgs      []string          `json:"extra_args,omitempty"`
	DataDirectory  string            `json:"data_directory,omitempty"`
	Options        map[string]string `json:"torrc,omitempty"`
}

type TrojanInboundOptions

type TrojanInboundOptions struct {
	ListenOptions
	Users []TrojanUser `json:"users,omitempty"`
	InboundTLSOptionsContainer
	Fallback        *ServerOptions            `json:"fallback,omitempty"`
	FallbackForALPN map[string]*ServerOptions `json:"fallback_for_alpn,omitempty"`
	Multiplex       *InboundMultiplexOptions  `json:"multiplex,omitempty"`
	Transport       *V2RayTransportOptions    `json:"transport,omitempty"`
}

type TrojanOutboundOptions

type TrojanOutboundOptions struct {
	DialerOptions
	ServerOptions
	Password string      `json:"password"`
	Network  NetworkList `json:"network,omitempty"`
	OutboundTLSOptionsContainer
	Multiplex *OutboundMultiplexOptions `json:"multiplex,omitempty"`
	Transport *V2RayTransportOptions    `json:"transport,omitempty"`
}

type TrojanUser

type TrojanUser struct {
	Name     string `json:"name"`
	Password string `json:"password"`
}

type TunInboundOptions

type TunInboundOptions struct {
	InterfaceName          string                           `json:"interface_name,omitempty"`
	MTU                    uint32                           `json:"mtu,omitempty"`
	Address                badoption.Listable[netip.Prefix] `json:"address,omitempty"`
	AutoRoute              bool                             `json:"auto_route,omitempty"`
	IPRoute2TableIndex     int                              `json:"iproute2_table_index,omitempty"`
	IPRoute2RuleIndex      int                              `json:"iproute2_rule_index,omitempty"`
	AutoRedirect           bool                             `json:"auto_redirect,omitempty"`
	AutoRedirectInputMark  FwMark                           `json:"auto_redirect_input_mark,omitempty"`
	AutoRedirectOutputMark FwMark                           `json:"auto_redirect_output_mark,omitempty"`
	StrictRoute            bool                             `json:"strict_route,omitempty"`
	RouteAddress           badoption.Listable[netip.Prefix] `json:"route_address,omitempty"`
	RouteAddressSet        badoption.Listable[string]       `json:"route_address_set,omitempty"`
	RouteExcludeAddress    badoption.Listable[netip.Prefix] `json:"route_exclude_address,omitempty"`
	RouteExcludeAddressSet badoption.Listable[string]       `json:"route_exclude_address_set,omitempty"`
	IncludeInterface       badoption.Listable[string]       `json:"include_interface,omitempty"`
	ExcludeInterface       badoption.Listable[string]       `json:"exclude_interface,omitempty"`
	IncludeUID             badoption.Listable[uint32]       `json:"include_uid,omitempty"`
	IncludeUIDRange        badoption.Listable[string]       `json:"include_uid_range,omitempty"`
	ExcludeUID             badoption.Listable[uint32]       `json:"exclude_uid,omitempty"`
	ExcludeUIDRange        badoption.Listable[string]       `json:"exclude_uid_range,omitempty"`
	IncludeAndroidUser     badoption.Listable[int]          `json:"include_android_user,omitempty"`
	IncludePackage         badoption.Listable[string]       `json:"include_package,omitempty"`
	ExcludePackage         badoption.Listable[string]       `json:"exclude_package,omitempty"`
	UDPTimeout             UDPTimeoutCompat                 `json:"udp_timeout,omitempty"`
	Stack                  string                           `json:"stack,omitempty"`
	Platform               *TunPlatformOptions              `json:"platform,omitempty"`
	InboundOptions

	// Deprecated: removed
	GSO bool `json:"gso,omitempty"`
	// Deprecated: merged to Address
	Inet4Address badoption.Listable[netip.Prefix] `json:"inet4_address,omitempty"`
	// Deprecated: merged to Address
	Inet6Address badoption.Listable[netip.Prefix] `json:"inet6_address,omitempty"`
	// Deprecated: merged to RouteAddress
	Inet4RouteAddress badoption.Listable[netip.Prefix] `json:"inet4_route_address,omitempty"`
	// Deprecated: merged to RouteAddress
	Inet6RouteAddress badoption.Listable[netip.Prefix] `json:"inet6_route_address,omitempty"`
	// Deprecated: merged to RouteExcludeAddress
	Inet4RouteExcludeAddress badoption.Listable[netip.Prefix] `json:"inet4_route_exclude_address,omitempty"`
	// Deprecated: merged to RouteExcludeAddress
	Inet6RouteExcludeAddress badoption.Listable[netip.Prefix] `json:"inet6_route_exclude_address,omitempty"`
	// Deprecated: removed
	EndpointIndependentNat bool `json:"endpoint_independent_nat,omitempty"`
}

type TunPlatformOptions added in v1.2.0

type TunPlatformOptions struct {
	HTTPProxy *HTTPProxyOptions `json:"http_proxy,omitempty"`
}

type UDPOverTCPOptions added in v1.2.0

type UDPOverTCPOptions _UDPOverTCPOptions

func (UDPOverTCPOptions) MarshalJSON added in v1.2.0

func (o UDPOverTCPOptions) MarshalJSON() ([]byte, error)

func (*UDPOverTCPOptions) UnmarshalJSON added in v1.2.0

func (o *UDPOverTCPOptions) UnmarshalJSON(bytes []byte) error

type UDPTimeoutCompat added in v1.7.6

type UDPTimeoutCompat badoption.Duration

func (UDPTimeoutCompat) MarshalJSON added in v1.7.7

func (c UDPTimeoutCompat) MarshalJSON() ([]byte, error)

func (*UDPTimeoutCompat) UnmarshalJSON added in v1.7.6

func (c *UDPTimeoutCompat) UnmarshalJSON(data []byte) error

type URLTestOutboundOptions added in v1.1.0

type URLTestOutboundOptions struct {
	Outbounds                 []string           `json:"outbounds"`
	URL                       string             `json:"url,omitempty"`
	Interval                  badoption.Duration `json:"interval,omitempty"`
	Tolerance                 uint16             `json:"tolerance,omitempty"`
	IdleTimeout               badoption.Duration `json:"idle_timeout,omitempty"`
	InterruptExistConnections bool               `json:"interrupt_exist_connections,omitempty"`
}

type V2RayAPIOptions added in v1.1.0

type V2RayAPIOptions struct {
	Listen string                    `json:"listen,omitempty"`
	Stats  *V2RayStatsServiceOptions `json:"stats,omitempty"`
}

type V2RayGRPCOptions added in v1.0.1

type V2RayGRPCOptions struct {
	ServiceName         string             `json:"service_name,omitempty"`
	IdleTimeout         badoption.Duration `json:"idle_timeout,omitempty"`
	PingTimeout         badoption.Duration `json:"ping_timeout,omitempty"`
	PermitWithoutStream bool               `json:"permit_without_stream,omitempty"`
	ForceLite           bool               `json:"-"` // for test
}

type V2RayHTTPOptions added in v1.0.1

type V2RayHTTPOptions struct {
	Host        badoption.Listable[string] `json:"host,omitempty"`
	Path        string                     `json:"path,omitempty"`
	Method      string                     `json:"method,omitempty"`
	Headers     badoption.HTTPHeader       `json:"headers,omitempty"`
	IdleTimeout badoption.Duration         `json:"idle_timeout,omitempty"`
	PingTimeout badoption.Duration         `json:"ping_timeout,omitempty"`
}

type V2RayHTTPUpgradeOptions added in v1.7.0

type V2RayHTTPUpgradeOptions struct {
	Host    string               `json:"host,omitempty"`
	Path    string               `json:"path,omitempty"`
	Headers badoption.HTTPHeader `json:"headers,omitempty"`
}

type V2RayQUICOptions added in v1.0.1

type V2RayQUICOptions struct{}

type V2RayStatsServiceOptions added in v1.1.0

type V2RayStatsServiceOptions struct {
	Enabled   bool     `json:"enabled,omitempty"`
	Inbounds  []string `json:"inbounds,omitempty"`
	Outbounds []string `json:"outbounds,omitempty"`
	Users     []string `json:"users,omitempty"`
}

type V2RayTransportOptions added in v1.0.1

type V2RayTransportOptions _V2RayTransportOptions

func (V2RayTransportOptions) MarshalJSON added in v1.0.1

func (o V2RayTransportOptions) MarshalJSON() ([]byte, error)

func (*V2RayTransportOptions) UnmarshalJSON added in v1.0.1

func (o *V2RayTransportOptions) UnmarshalJSON(bytes []byte) error

type V2RayWebsocketOptions added in v1.0.1

type V2RayWebsocketOptions struct {
	Path                string               `json:"path,omitempty"`
	Headers             badoption.HTTPHeader `json:"headers,omitempty"`
	MaxEarlyData        uint32               `json:"max_early_data,omitempty"`
	EarlyDataHeaderName string               `json:"early_data_header_name,omitempty"`
}

type VLESSInboundOptions added in v1.2.0

type VLESSInboundOptions struct {
	ListenOptions
	Users []VLESSUser `json:"users,omitempty"`
	InboundTLSOptionsContainer
	Multiplex *InboundMultiplexOptions `json:"multiplex,omitempty"`
	Transport *V2RayTransportOptions   `json:"transport,omitempty"`
}

type VLESSOutboundOptions added in v1.1.0

type VLESSOutboundOptions struct {
	DialerOptions
	ServerOptions
	UUID    string      `json:"uuid"`
	Flow    string      `json:"flow,omitempty"`
	Network NetworkList `json:"network,omitempty"`
	OutboundTLSOptionsContainer
	Multiplex      *OutboundMultiplexOptions `json:"multiplex,omitempty"`
	Transport      *V2RayTransportOptions    `json:"transport,omitempty"`
	PacketEncoding *string                   `json:"packet_encoding,omitempty"`
}

type VLESSUser added in v1.2.0

type VLESSUser struct {
	Name string `json:"name"`
	UUID string `json:"uuid"`
	Flow string `json:"flow,omitempty"`
}

type VMessInboundOptions

type VMessInboundOptions struct {
	ListenOptions
	Users []VMessUser `json:"users,omitempty"`
	InboundTLSOptionsContainer
	Multiplex *InboundMultiplexOptions `json:"multiplex,omitempty"`
	Transport *V2RayTransportOptions   `json:"transport,omitempty"`
}

type VMessOutboundOptions

type VMessOutboundOptions struct {
	DialerOptions
	ServerOptions
	UUID                string      `json:"uuid"`
	Security            string      `json:"security"`
	AlterId             int         `json:"alter_id,omitempty"`
	GlobalPadding       bool        `json:"global_padding,omitempty"`
	AuthenticatedLength bool        `json:"authenticated_length,omitempty"`
	Network             NetworkList `json:"network,omitempty"`
	OutboundTLSOptionsContainer
	PacketEncoding string                    `json:"packet_encoding,omitempty"`
	Multiplex      *OutboundMultiplexOptions `json:"multiplex,omitempty"`
	Transport      *V2RayTransportOptions    `json:"transport,omitempty"`
}

type VMessUser

type VMessUser struct {
	Name    string `json:"name"`
	UUID    string `json:"uuid"`
	AlterId int    `json:"alterId,omitempty"`
}

type WireGuardEndpointOptions

type WireGuardEndpointOptions struct {
	System     bool                             `json:"system,omitempty"`
	Name       string                           `json:"name,omitempty"`
	MTU        uint32                           `json:"mtu,omitempty"`
	Address    badoption.Listable[netip.Prefix] `json:"address"`
	PrivateKey string                           `json:"private_key"`
	ListenPort uint16                           `json:"listen_port,omitempty"`
	Peers      []WireGuardPeer                  `json:"peers,omitempty"`
	UDPTimeout badoption.Duration               `json:"udp_timeout,omitempty"`
	Workers    int                              `json:"workers,omitempty"`
	DialerOptions
}

type WireGuardPeer added in v1.3.0

type WireGuardPeer struct {
	Address                     string                           `json:"address,omitempty"`
	Port                        uint16                           `json:"port,omitempty"`
	PublicKey                   string                           `json:"public_key,omitempty"`
	PreSharedKey                string                           `json:"pre_shared_key,omitempty"`
	AllowedIPs                  badoption.Listable[netip.Prefix] `json:"allowed_ips,omitempty"`
	PersistentKeepaliveInterval uint16                           `json:"persistent_keepalive_interval,omitempty"`
	Reserved                    []uint8                          `json:"reserved,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL