conf

package
v1.0.1-0...-9165f85 Latest Latest
Warning

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

Go to latest
Published: Dec 25, 2024 License: MPL-2.0 Imports: 82 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AuthMethodNoAuth   = "noauth"
	AuthMethodUserPass = "password"
)

Variables

View Source
var (
	FileCache = make(map[string][]byte)
	IPCache   = make(map[string]*router.GeoIP)
	SiteCache = make(map[string]*router.GeoSite)
)

Functions

func DecodeVarint

func DecodeVarint(buf []byte) (x uint64, n int)

func DefaultLogConfig

func DefaultLogConfig() *log.Config

func ParseIP

func ParseIP(s string) (*router.CIDR, error)

func ParseNoise

func ParseNoise(noise *Noise) (*freedom.Noise, error)

func ParseRangeString

func ParseRangeString(str string) (int, int, error)

Parse rang in string. Support negative number. eg: "114-514" "-114-514" "-1919--810" "114514" ""(return 0)

func ParseRule

func ParseRule(msg json.RawMessage) (*router.RoutingRule, error)

func ParseWireGuardKey

func ParseWireGuardKey(str string) (string, error)

func PostProcessConfigureFile

func PostProcessConfigureFile(conf *Config) error

func RegisterConfigureFilePostProcessingStage

func RegisterConfigureFilePostProcessingStage(name string, stage ConfigureFilePostProcessingStage)

func ToCidrList

func ToCidrList(ips StringList) ([]*router.GeoIP, error)

Types

type APIConfig

type APIConfig struct {
	Tag      string   `json:"tag"`
	Listen   string   `json:"listen"`
	Services []string `json:"services"`
}

func (*APIConfig) Build

func (c *APIConfig) Build() (*commander.Config, error)

type Address

type Address struct {
	net.Address
}

func ParseSendThough

func ParseSendThough(Addr *string) *Address

Convert string to Address.

func (*Address) Build

func (v *Address) Build() *net.IPOrDomain

func (Address) MarshalJSON

func (v Address) MarshalJSON() ([]byte, error)

func (*Address) UnmarshalJSON

func (v *Address) UnmarshalJSON(data []byte) error

type AttributeList

type AttributeList struct {
	// contains filtered or unexported fields
}

func (*AttributeList) IsEmpty

func (al *AttributeList) IsEmpty() bool

func (*AttributeList) Match

func (al *AttributeList) Match(domain *router.Domain) bool

type AttributeMatcher

type AttributeMatcher interface {
	Match(*router.Domain) bool
}

type Authenticator

type Authenticator struct {
	Request  AuthenticatorRequest  `json:"request"`
	Response AuthenticatorResponse `json:"response"`
}

func (*Authenticator) Build

func (v *Authenticator) Build() (proto.Message, error)

type AuthenticatorRequest

type AuthenticatorRequest struct {
	Version string                 `json:"version"`
	Method  string                 `json:"method"`
	Path    StringList             `json:"path"`
	Headers map[string]*StringList `json:"headers"`
}

func (*AuthenticatorRequest) Build

type AuthenticatorResponse

type AuthenticatorResponse struct {
	Version string                 `json:"version"`
	Status  string                 `json:"status"`
	Reason  string                 `json:"reason"`
	Headers map[string]*StringList `json:"headers"`
}

func (*AuthenticatorResponse) Build

type BalancingRule

type BalancingRule struct {
	Tag         string         `json:"tag"`
	Selectors   StringList     `json:"selector"`
	Strategy    StrategyConfig `json:"strategy"`
	FallbackTag string         `json:"fallbackTag"`
}

func (*BalancingRule) Build

func (r *BalancingRule) Build() (*router.BalancingRule, error)

Build builds the balancing rule

type BlackholeConfig

type BlackholeConfig struct {
	Response json.RawMessage `json:"response"`
}

func (*BlackholeConfig) Build

func (v *BlackholeConfig) Build() (proto.Message, error)

type BooleanMatcher

type BooleanMatcher string

func (BooleanMatcher) Match

func (m BooleanMatcher) Match(domain *router.Domain) bool

type BridgeConfig

type BridgeConfig struct {
	Tag    string `json:"tag"`
	Domain string `json:"domain"`
}

func (*BridgeConfig) Build

func (c *BridgeConfig) Build() (*reverse.BridgeConfig, error)

type Buildable

type Buildable interface {
	Build() (proto.Message, error)
}

type BurstObservatoryConfig

type BurstObservatoryConfig struct {
	SubjectSelector []string `json:"subjectSelector"`
	// health check settings
	HealthCheck *healthCheckSettings `json:"pingConfig,omitempty"`
}

func (BurstObservatoryConfig) Build

type Config

type Config struct {
	// Deprecated: Global transport config is no longer used
	// left for returning error
	Transport map[string]json.RawMessage `json:"transport"`

	LogConfig        *LogConfig              `json:"log"`
	RouterConfig     *RouterConfig           `json:"routing"`
	DNSConfig        *DNSConfig              `json:"dns"`
	InboundConfigs   []InboundDetourConfig   `json:"inbounds"`
	OutboundConfigs  []OutboundDetourConfig  `json:"outbounds"`
	Policy           *PolicyConfig           `json:"policy"`
	API              *APIConfig              `json:"api"`
	Metrics          *MetricsConfig          `json:"metrics"`
	Stats            *StatsConfig            `json:"stats"`
	Reverse          *ReverseConfig          `json:"reverse"`
	FakeDNS          *FakeDNSConfig          `json:"fakeDns"`
	Observatory      *ObservatoryConfig      `json:"observatory"`
	BurstObservatory *BurstObservatoryConfig `json:"burstObservatory"`
}

func (*Config) Build

func (c *Config) Build() (*core.Config, error)

Build implements Buildable.

func (*Config) Override

func (c *Config) Override(o *Config, fn string)

Override method accepts another Config overrides the current attribute

type ConfigCreator

type ConfigCreator func() interface{}

type ConfigCreatorCache

type ConfigCreatorCache map[string]ConfigCreator

func (ConfigCreatorCache) CreateConfig

func (v ConfigCreatorCache) CreateConfig(id string) (interface{}, error)

func (ConfigCreatorCache) RegisterCreator

func (v ConfigCreatorCache) RegisterCreator(id string, creator ConfigCreator) error

type ConfigureFilePostProcessingStage

type ConfigureFilePostProcessingStage interface {
	Process(conf *Config) error
}

type CustomSockoptConfig

type CustomSockoptConfig struct {
	Level string `json:"level"`
	Opt   string `json:"opt"`
	Value string `json:"value"`
	Type  string `json:"type"`
}

type DNSAuthenticator

type DNSAuthenticator struct {
	Domain string `json:"domain"`
}

func (*DNSAuthenticator) Build

func (v *DNSAuthenticator) Build() (proto.Message, error)

type DNSConfig

type DNSConfig struct {
	Servers                []*NameServerConfig `json:"servers"`
	Hosts                  *HostsWrapper       `json:"hosts"`
	ClientIP               *Address            `json:"clientIp"`
	Tag                    string              `json:"tag"`
	QueryStrategy          string              `json:"queryStrategy"`
	DisableCache           bool                `json:"disableCache"`
	DisableFallback        bool                `json:"disableFallback"`
	DisableFallbackIfMatch bool                `json:"disableFallbackIfMatch"`
}

DNSConfig is a JSON serializable object for dns.Config.

func (*DNSConfig) Build

func (c *DNSConfig) Build() (*dns.Config, error)

Build implements Buildable

type DNSOutboundConfig

type DNSOutboundConfig struct {
	Network    Network  `json:"network"`
	Address    *Address `json:"address"`
	Port       uint16   `json:"port"`
	UserLevel  uint32   `json:"userLevel"`
	NonIPQuery string   `json:"nonIPQuery"`
	BlockTypes []int32  `json:"blockTypes"`
}

func (*DNSOutboundConfig) Build

func (c *DNSOutboundConfig) Build() (proto.Message, error)

type DTLSAuthenticator

type DTLSAuthenticator struct{}

func (DTLSAuthenticator) Build

func (DTLSAuthenticator) Build() (proto.Message, error)

type DokodemoConfig

type DokodemoConfig struct {
	Host        *Address     `json:"address"`
	PortValue   uint16       `json:"port"`
	NetworkList *NetworkList `json:"network"`
	Redirect    bool         `json:"followRedirect"`
	UserLevel   uint32       `json:"userLevel"`
}

func (*DokodemoConfig) Build

func (v *DokodemoConfig) Build() (proto.Message, error)

type FakeDNSConfig

type FakeDNSConfig struct {
	// contains filtered or unexported fields
}

func (*FakeDNSConfig) Build

func (*FakeDNSConfig) UnmarshalJSON

func (f *FakeDNSConfig) UnmarshalJSON(data []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.UnmarshalJSON

type FakeDNSPoolElementConfig

type FakeDNSPoolElementConfig struct {
	IPPool  string `json:"ipPool"`
	LRUSize int64  `json:"poolSize"`
}

type FakeDNSPostProcessingStage

type FakeDNSPostProcessingStage struct{}

func (FakeDNSPostProcessingStage) Process

func (FakeDNSPostProcessingStage) Process(config *Config) error

type Fragment

type Fragment struct {
	Packets  string      `json:"packets"`
	Length   *Int32Range `json:"length"`
	Interval *Int32Range `json:"interval"`
}

type FreedomConfig

type FreedomConfig struct {
	DomainStrategy string    `json:"domainStrategy"`
	Redirect       string    `json:"redirect"`
	UserLevel      uint32    `json:"userLevel"`
	Fragment       *Fragment `json:"fragment"`
	Noise          *Noise    `json:"noise"`
	Noises         []*Noise  `json:"noises"`
	ProxyProtocol  uint32    `json:"proxyProtocol"`
}

func (*FreedomConfig) Build

func (c *FreedomConfig) Build() (proto.Message, error)

Build implements Buildable

type GRPCConfig

type GRPCConfig struct {
	Authority           string `json:"authority"`
	ServiceName         string `json:"serviceName"`
	MultiMode           bool   `json:"multiMode"`
	IdleTimeout         int32  `json:"idle_timeout"`
	HealthCheckTimeout  int32  `json:"health_check_timeout"`
	PermitWithoutStream bool   `json:"permit_without_stream"`
	InitialWindowsSize  int32  `json:"initial_windows_size"`
	UserAgent           string `json:"user_agent"`
}

func (*GRPCConfig) Build

func (g *GRPCConfig) Build() (proto.Message, error)

type HTTPAccount

type HTTPAccount struct {
	Username string `json:"user"`
	Password string `json:"pass"`
}

func (*HTTPAccount) Build

func (v *HTTPAccount) Build() *http.Account

type HTTPClientConfig

type HTTPClientConfig struct {
	Servers []*HTTPRemoteConfig `json:"servers"`
	Headers map[string]string   `json:"headers"`
}

func (*HTTPClientConfig) Build

func (v *HTTPClientConfig) Build() (proto.Message, error)

type HTTPRemoteConfig

type HTTPRemoteConfig struct {
	Address *Address          `json:"address"`
	Port    uint16            `json:"port"`
	Users   []json.RawMessage `json:"users"`
}

type HTTPResponse

type HTTPResponse struct{}

func (*HTTPResponse) Build

func (*HTTPResponse) Build() (proto.Message, error)

type HTTPServerConfig

type HTTPServerConfig struct {
	Accounts    []*HTTPAccount `json:"accounts"`
	Transparent bool           `json:"allowTransparent"`
	UserLevel   uint32         `json:"userLevel"`
}

func (*HTTPServerConfig) Build

func (c *HTTPServerConfig) Build() (proto.Message, error)

type HostAddress

type HostAddress struct {
	// contains filtered or unexported fields
}

func (*HostAddress) UnmarshalJSON

func (h *HostAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.UnmarshalJSON

type HostsWrapper

type HostsWrapper struct {
	Hosts map[string]*HostAddress
}

func (*HostsWrapper) Build

func (m *HostsWrapper) Build() ([]*dns.Config_HostMapping, error)

Build implements Buildable

func (*HostsWrapper) UnmarshalJSON

func (m *HostsWrapper) UnmarshalJSON(data []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.UnmarshalJSON

type HttpUpgradeConfig

type HttpUpgradeConfig struct {
	Host                string            `json:"host"`
	Path                string            `json:"path"`
	Headers             map[string]string `json:"headers"`
	AcceptProxyProtocol bool              `json:"acceptProxyProtocol"`
}

func (*HttpUpgradeConfig) Build

func (c *HttpUpgradeConfig) Build() (proto.Message, error)

Build implements Buildable.

type InboundDetourAllocationConfig

type InboundDetourAllocationConfig struct {
	Strategy    string  `json:"strategy"`
	Concurrency *uint32 `json:"concurrency"`
	RefreshMin  *uint32 `json:"refresh"`
}

func (*InboundDetourAllocationConfig) Build

Build implements Buildable.

type InboundDetourConfig

type InboundDetourConfig struct {
	Protocol       string                         `json:"protocol"`
	PortList       *PortList                      `json:"port"`
	ListenOn       *Address                       `json:"listen"`
	Settings       *json.RawMessage               `json:"settings"`
	Tag            string                         `json:"tag"`
	Allocation     *InboundDetourAllocationConfig `json:"allocate"`
	StreamSetting  *StreamConfig                  `json:"streamSettings"`
	SniffingConfig *SniffingConfig                `json:"sniffing"`
}

func (*InboundDetourConfig) Build

Build implements Buildable.

type Int32Range

type Int32Range struct {
	Left  int32
	Right int32
	From  int32
	To    int32
}

Int32Range deserializes from "1-2" or 1, so can deserialize from both int and number. Negative integers can be passed as sentinel values, but do not parse as ranges. Value will be exchanged if From > To, use .Left and .Right to get original value if need.

func (*Int32Range) UnmarshalJSON

func (v *Int32Range) UnmarshalJSON(data []byte) error

type JSONConfigLoader

type JSONConfigLoader struct {
	// contains filtered or unexported fields
}

func NewJSONConfigLoader

func NewJSONConfigLoader(cache ConfigCreatorCache, idKey string, configKey string) *JSONConfigLoader

func (*JSONConfigLoader) Load

func (v *JSONConfigLoader) Load(raw []byte) (interface{}, string, error)

func (*JSONConfigLoader) LoadWithID

func (v *JSONConfigLoader) LoadWithID(raw []byte, id string) (interface{}, error)

type KCPConfig

type KCPConfig struct {
	Mtu             *uint32         `json:"mtu"`
	Tti             *uint32         `json:"tti"`
	UpCap           *uint32         `json:"uplinkCapacity"`
	DownCap         *uint32         `json:"downlinkCapacity"`
	Congestion      *bool           `json:"congestion"`
	ReadBufferSize  *uint32         `json:"readBufferSize"`
	WriteBufferSize *uint32         `json:"writeBufferSize"`
	HeaderConfig    json.RawMessage `json:"header"`
	Seed            *string         `json:"seed"`
}

func (*KCPConfig) Build

func (c *KCPConfig) Build() (proto.Message, error)

Build implements Buildable.

type LogConfig

type LogConfig struct {
	AccessLog   string `json:"access"`
	ErrorLog    string `json:"error"`
	LogLevel    string `json:"loglevel"`
	DNSLog      bool   `json:"dnsLog"`
	MaskAddress string `json:"maskAddress"`
}

func (*LogConfig) Build

func (v *LogConfig) Build() *log.Config

type LoopbackConfig

type LoopbackConfig struct {
	InboundTag string `json:"inboundTag"`
}

func (LoopbackConfig) Build

func (l LoopbackConfig) Build() (proto.Message, error)

type MetricsConfig

type MetricsConfig struct {
	Tag string `json:"tag"`
}

func (*MetricsConfig) Build

func (c *MetricsConfig) Build() (*metrics.Config, error)

type MuxConfig

type MuxConfig struct {
	Enabled         bool   `json:"enabled"`
	Concurrency     int16  `json:"concurrency"`
	XudpConcurrency int16  `json:"xudpConcurrency"`
	XudpProxyUDP443 string `json:"xudpProxyUDP443"`
}

func (*MuxConfig) Build

func (m *MuxConfig) Build() (*proxyman.MultiplexingConfig, error)

Build creates MultiplexingConfig, Concurrency < 0 completely disables mux.

type NameServerConfig

type NameServerConfig struct {
	Address       *Address
	ClientIP      *Address
	Port          uint16
	SkipFallback  bool
	Domains       []string
	ExpectIPs     StringList
	QueryStrategy string
}

func (*NameServerConfig) Build

func (c *NameServerConfig) Build() (*dns.NameServer, error)

func (*NameServerConfig) UnmarshalJSON

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

type Network

type Network string

func (Network) Build

func (v Network) Build() net.Network

type NetworkList

type NetworkList []Network

func (*NetworkList) Build

func (v *NetworkList) Build() []net.Network

func (*NetworkList) UnmarshalJSON

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

type NoOpAuthenticator

type NoOpAuthenticator struct{}

func (NoOpAuthenticator) Build

func (NoOpAuthenticator) Build() (proto.Message, error)

type NoOpConnectionAuthenticator

type NoOpConnectionAuthenticator struct{}

func (NoOpConnectionAuthenticator) Build

type Noise

type Noise struct {
	Type   string      `json:"type"`
	Packet string      `json:"packet"`
	Delay  *Int32Range `json:"delay"`
}

type NoneResponse

type NoneResponse struct{}

func (*NoneResponse) Build

func (*NoneResponse) Build() (proto.Message, error)

type ObservatoryConfig

type ObservatoryConfig struct {
	SubjectSelector   []string          `json:"subjectSelector"`
	ProbeURL          string            `json:"probeURL"`
	ProbeInterval     duration.Duration `json:"probeInterval"`
	EnableConcurrency bool              `json:"enableConcurrency"`
}

func (*ObservatoryConfig) Build

func (o *ObservatoryConfig) Build() (proto.Message, error)

type OutboundDetourConfig

type OutboundDetourConfig struct {
	Protocol      string           `json:"protocol"`
	SendThrough   *string          `json:"sendThrough"`
	Tag           string           `json:"tag"`
	Settings      *json.RawMessage `json:"settings"`
	StreamSetting *StreamConfig    `json:"streamSettings"`
	ProxySettings *ProxyConfig     `json:"proxySettings"`
	MuxSettings   *MuxConfig       `json:"mux"`
}

func (*OutboundDetourConfig) Build

Build implements Buildable.

type Policy

type Policy struct {
	Handshake         *uint32 `json:"handshake"`
	ConnectionIdle    *uint32 `json:"connIdle"`
	UplinkOnly        *uint32 `json:"uplinkOnly"`
	DownlinkOnly      *uint32 `json:"downlinkOnly"`
	StatsUserUplink   bool    `json:"statsUserUplink"`
	StatsUserDownlink bool    `json:"statsUserDownlink"`
	StatsUserOnline   bool    `json:"statsUserOnline"`
	BufferSize        *int32  `json:"bufferSize"`
}

func (*Policy) Build

func (t *Policy) Build() (*policy.Policy, error)

type PolicyConfig

type PolicyConfig struct {
	Levels map[uint32]*Policy `json:"levels"`
	System *SystemPolicy      `json:"system"`
}

func (*PolicyConfig) Build

func (c *PolicyConfig) Build() (*policy.Config, error)

type PortList

type PortList struct {
	Range []PortRange
}

func (*PortList) Build

func (list *PortList) Build() *net.PortList

func (*PortList) UnmarshalJSON

func (list *PortList) UnmarshalJSON(data []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.UnmarshalJSON

type PortRange

type PortRange struct {
	From uint32
	To   uint32
}

func (*PortRange) Build

func (v *PortRange) Build() *net.PortRange

func (*PortRange) UnmarshalJSON

func (v *PortRange) UnmarshalJSON(data []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.UnmarshalJSON

type PortalConfig

type PortalConfig struct {
	Tag    string `json:"tag"`
	Domain string `json:"domain"`
}

func (*PortalConfig) Build

func (c *PortalConfig) Build() (*reverse.PortalConfig, error)

type ProxyConfig

type ProxyConfig struct {
	Tag string `json:"tag"`

	// TransportLayerProxy: For compatibility.
	TransportLayerProxy bool `json:"transportLayer"`
}

func (*ProxyConfig) Build

func (v *ProxyConfig) Build() (*internet.ProxyConfig, error)

Build implements Buildable.

type REALITYConfig

type REALITYConfig struct {
	MasterKeyLog string          `json:"masterKeyLog"`
	Show         bool            `json:"show"`
	Target       json.RawMessage `json:"target"`
	Dest         json.RawMessage `json:"dest"`
	Type         string          `json:"type"`
	Xver         uint64          `json:"xver"`
	ServerNames  []string        `json:"serverNames"`
	PrivateKey   string          `json:"privateKey"`
	MinClientVer string          `json:"minClientVer"`
	MaxClientVer string          `json:"maxClientVer"`
	MaxTimeDiff  uint64          `json:"maxTimeDiff"`
	ShortIds     []string        `json:"shortIds"`

	Fingerprint string `json:"fingerprint"`
	ServerName  string `json:"serverName"`
	PublicKey   string `json:"publicKey"`
	ShortId     string `json:"shortId"`
	SpiderX     string `json:"spiderX"`
}

func (*REALITYConfig) Build

func (c *REALITYConfig) Build() (proto.Message, error)

type ReverseConfig

type ReverseConfig struct {
	Bridges []BridgeConfig `json:"bridges"`
	Portals []PortalConfig `json:"portals"`
}

func (*ReverseConfig) Build

func (c *ReverseConfig) Build() (proto.Message, error)

type RouterConfig

type RouterConfig struct {
	RuleList       []json.RawMessage `json:"rules"`
	DomainStrategy *string           `json:"domainStrategy"`
	Balancers      []*BalancingRule  `json:"balancers"`

	DomainMatcher string `json:"domainMatcher"`
}

func (*RouterConfig) Build

func (c *RouterConfig) Build() (*router.Config, error)

type RouterRule

type RouterRule struct {
	RuleTag     string `json:"ruleTag"`
	Type        string `json:"type"`
	OutboundTag string `json:"outboundTag"`
	BalancerTag string `json:"balancerTag"`

	DomainMatcher string `json:"domainMatcher"`
}

type SRTPAuthenticator

type SRTPAuthenticator struct{}

func (SRTPAuthenticator) Build

func (SRTPAuthenticator) Build() (proto.Message, error)

type ShadowsocksClientConfig

type ShadowsocksClientConfig struct {
	Servers []*ShadowsocksServerTarget `json:"servers"`
}

func (*ShadowsocksClientConfig) Build

type ShadowsocksServerConfig

type ShadowsocksServerConfig struct {
	Cipher      string                   `json:"method"`
	Password    string                   `json:"password"`
	Level       byte                     `json:"level"`
	Email       string                   `json:"email"`
	Users       []*ShadowsocksUserConfig `json:"clients"`
	NetworkList *NetworkList             `json:"network"`
	IVCheck     bool                     `json:"ivCheck"`
}

func (*ShadowsocksServerConfig) Build

type ShadowsocksServerTarget

type ShadowsocksServerTarget struct {
	Address    *Address `json:"address"`
	Port       uint16   `json:"port"`
	Cipher     string   `json:"method"`
	Password   string   `json:"password"`
	Email      string   `json:"email"`
	Level      byte     `json:"level"`
	IVCheck    bool     `json:"ivCheck"`
	UoT        bool     `json:"uot"`
	UoTVersion int      `json:"uotVersion"`
}

type ShadowsocksUserConfig

type ShadowsocksUserConfig struct {
	Cipher   string   `json:"method"`
	Password string   `json:"password"`
	Level    byte     `json:"level"`
	Email    string   `json:"email"`
	Address  *Address `json:"address"`
	Port     uint16   `json:"port"`
}

type SniffingConfig

type SniffingConfig struct {
	Enabled         bool        `json:"enabled"`
	DestOverride    *StringList `json:"destOverride"`
	DomainsExcluded *StringList `json:"domainsExcluded"`
	MetadataOnly    bool        `json:"metadataOnly"`
	RouteOnly       bool        `json:"routeOnly"`
}

func (*SniffingConfig) Build

Build implements Buildable.

type SocketConfig

type SocketConfig struct {
	Mark                 int32                  `json:"mark"`
	TFO                  interface{}            `json:"tcpFastOpen"`
	TProxy               string                 `json:"tproxy"`
	AcceptProxyProtocol  bool                   `json:"acceptProxyProtocol"`
	DomainStrategy       string                 `json:"domainStrategy"`
	DialerProxy          string                 `json:"dialerProxy"`
	TCPKeepAliveInterval int32                  `json:"tcpKeepAliveInterval"`
	TCPKeepAliveIdle     int32                  `json:"tcpKeepAliveIdle"`
	TCPCongestion        string                 `json:"tcpCongestion"`
	TCPWindowClamp       int32                  `json:"tcpWindowClamp"`
	TCPMaxSeg            int32                  `json:"tcpMaxSeg"`
	TcpNoDelay           bool                   `json:"tcpNoDelay"`
	TCPUserTimeout       int32                  `json:"tcpUserTimeout"`
	V6only               bool                   `json:"v6only"`
	Interface            string                 `json:"interface"`
	TcpMptcp             bool                   `json:"tcpMptcp"`
	CustomSockopt        []*CustomSockoptConfig `json:"customSockopt"`
}

func (*SocketConfig) Build

func (c *SocketConfig) Build() (*internet.SocketConfig, error)

Build implements Buildable.

type SocksAccount

type SocksAccount struct {
	Username string `json:"user"`
	Password string `json:"pass"`
}

func (*SocksAccount) Build

func (v *SocksAccount) Build() *socks.Account

type SocksClientConfig

type SocksClientConfig struct {
	Servers []*SocksRemoteConfig `json:"servers"`
}

func (*SocksClientConfig) Build

func (v *SocksClientConfig) Build() (proto.Message, error)

type SocksRemoteConfig

type SocksRemoteConfig struct {
	Address *Address          `json:"address"`
	Port    uint16            `json:"port"`
	Users   []json.RawMessage `json:"users"`
}

type SocksServerConfig

type SocksServerConfig struct {
	AuthMethod string          `json:"auth"`
	Accounts   []*SocksAccount `json:"accounts"`
	UDP        bool            `json:"udp"`
	Host       *Address        `json:"ip"`
	UserLevel  uint32          `json:"userLevel"`
}

func (*SocksServerConfig) Build

func (v *SocksServerConfig) Build() (proto.Message, error)

type SplitHTTPConfig

type SplitHTTPConfig struct {
	Host                 string            `json:"host"`
	Path                 string            `json:"path"`
	Mode                 string            `json:"mode"`
	Headers              map[string]string `json:"headers"`
	XPaddingBytes        Int32Range        `json:"xPaddingBytes"`
	NoGRPCHeader         bool              `json:"noGRPCHeader"`
	NoSSEHeader          bool              `json:"noSSEHeader"`
	ScMaxEachPostBytes   Int32Range        `json:"scMaxEachPostBytes"`
	ScMinPostsIntervalMs Int32Range        `json:"scMinPostsIntervalMs"`
	ScMaxBufferedPosts   int64             `json:"scMaxBufferedPosts"`
	Xmux                 XmuxConfig        `json:"xmux"`
	DownloadSettings     *StreamConfig     `json:"downloadSettings"`
	Extra                json.RawMessage   `json:"extra"`
}

func (*SplitHTTPConfig) Build

func (c *SplitHTTPConfig) Build() (proto.Message, error)

Build implements Buildable.

type StatsConfig

type StatsConfig struct{}

func (*StatsConfig) Build

func (c *StatsConfig) Build() (*stats.Config, error)

Build implements Buildable.

type StrategyConfig

type StrategyConfig struct {
	Type     string           `json:"type"`
	Settings *json.RawMessage `json:"settings"`
}

StrategyConfig represents a strategy config

type StreamConfig

type StreamConfig struct {
	Address             *Address           `json:"address"`
	Port                uint16             `json:"port"`
	Network             *TransportProtocol `json:"network"`
	Security            string             `json:"security"`
	TLSSettings         *TLSConfig         `json:"tlsSettings"`
	REALITYSettings     *REALITYConfig     `json:"realitySettings"`
	RAWSettings         *TCPConfig         `json:"rawSettings"`
	TCPSettings         *TCPConfig         `json:"tcpSettings"`
	XHTTPSettings       *SplitHTTPConfig   `json:"xhttpSettings"`
	SplitHTTPSettings   *SplitHTTPConfig   `json:"splithttpSettings"`
	KCPSettings         *KCPConfig         `json:"kcpSettings"`
	GRPCSettings        *GRPCConfig        `json:"grpcSettings"`
	WSSettings          *WebSocketConfig   `json:"wsSettings"`
	HTTPUPGRADESettings *HttpUpgradeConfig `json:"httpupgradeSettings"`
	SocketSettings      *SocketConfig      `json:"sockopt"`
}

func (*StreamConfig) Build

func (c *StreamConfig) Build() (*internet.StreamConfig, error)

Build implements Buildable.

type StringList

type StringList []string

func NewStringList

func NewStringList(raw []string) *StringList

func (StringList) Len

func (v StringList) Len() int

func (*StringList) UnmarshalJSON

func (v *StringList) UnmarshalJSON(data []byte) error

type SystemPolicy

type SystemPolicy struct {
	StatsInboundUplink    bool `json:"statsInboundUplink"`
	StatsInboundDownlink  bool `json:"statsInboundDownlink"`
	StatsOutboundUplink   bool `json:"statsOutboundUplink"`
	StatsOutboundDownlink bool `json:"statsOutboundDownlink"`
}

func (*SystemPolicy) Build

func (p *SystemPolicy) Build() (*policy.SystemPolicy, error)

type TCPConfig

type TCPConfig struct {
	HeaderConfig        json.RawMessage `json:"header"`
	AcceptProxyProtocol bool            `json:"acceptProxyProtocol"`
}

func (*TCPConfig) Build

func (c *TCPConfig) Build() (proto.Message, error)

Build implements Buildable.

type TLSCertConfig

type TLSCertConfig struct {
	CertFile       string   `json:"certificateFile"`
	CertStr        []string `json:"certificate"`
	KeyFile        string   `json:"keyFile"`
	KeyStr         []string `json:"key"`
	Usage          string   `json:"usage"`
	OcspStapling   uint64   `json:"ocspStapling"`
	OneTimeLoading bool     `json:"oneTimeLoading"`
	BuildChain     bool     `json:"buildChain"`
}

func (*TLSCertConfig) Build

func (c *TLSCertConfig) Build() (*tls.Certificate, error)

Build implements Buildable.

type TLSConfig

type TLSConfig struct {
	Insecure                             bool             `json:"allowInsecure"`
	Certs                                []*TLSCertConfig `json:"certificates"`
	ServerName                           string           `json:"serverName"`
	ALPN                                 *StringList      `json:"alpn"`
	EnableSessionResumption              bool             `json:"enableSessionResumption"`
	DisableSystemRoot                    bool             `json:"disableSystemRoot"`
	MinVersion                           string           `json:"minVersion"`
	MaxVersion                           string           `json:"maxVersion"`
	CipherSuites                         string           `json:"cipherSuites"`
	Fingerprint                          string           `json:"fingerprint"`
	RejectUnknownSNI                     bool             `json:"rejectUnknownSni"`
	PinnedPeerCertificateChainSha256     *[]string        `json:"pinnedPeerCertificateChainSha256"`
	PinnedPeerCertificatePublicKeySha256 *[]string        `json:"pinnedPeerCertificatePublicKeySha256"`
	CurvePreferences                     *StringList      `json:"curvePreferences"`
	MasterKeyLog                         string           `json:"masterKeyLog"`
}

func (*TLSConfig) Build

func (c *TLSConfig) Build() (proto.Message, error)

Build implements Buildable.

type TransportProtocol

type TransportProtocol string

func (TransportProtocol) Build

func (p TransportProtocol) Build() (string, error)

Build implements Buildable.

type TrojanClientConfig

type TrojanClientConfig struct {
	Servers []*TrojanServerTarget `json:"servers"`
}

TrojanClientConfig is configuration of trojan servers

func (*TrojanClientConfig) Build

func (c *TrojanClientConfig) Build() (proto.Message, error)

Build implements Buildable

type TrojanInboundFallback

type TrojanInboundFallback struct {
	Name string          `json:"name"`
	Alpn string          `json:"alpn"`
	Path string          `json:"path"`
	Type string          `json:"type"`
	Dest json.RawMessage `json:"dest"`
	Xver uint64          `json:"xver"`
}

TrojanInboundFallback is fallback configuration

type TrojanServerConfig

type TrojanServerConfig struct {
	Clients   []*TrojanUserConfig      `json:"clients"`
	Fallbacks []*TrojanInboundFallback `json:"fallbacks"`
}

TrojanServerConfig is Inbound configuration

func (*TrojanServerConfig) Build

func (c *TrojanServerConfig) Build() (proto.Message, error)

Build implements Buildable

type TrojanServerTarget

type TrojanServerTarget struct {
	Address  *Address `json:"address"`
	Port     uint16   `json:"port"`
	Password string   `json:"password"`
	Email    string   `json:"email"`
	Level    byte     `json:"level"`
	Flow     string   `json:"flow"`
}

TrojanServerTarget is configuration of a single trojan server

type TrojanUserConfig

type TrojanUserConfig struct {
	Password string `json:"password"`
	Level    byte   `json:"level"`
	Email    string `json:"email"`
	Flow     string `json:"flow"`
}

TrojanUserConfig is user configuration

type UTPAuthenticator

type UTPAuthenticator struct{}

func (UTPAuthenticator) Build

func (UTPAuthenticator) Build() (proto.Message, error)

type User

type User struct {
	EmailString string `json:"email"`
	LevelByte   byte   `json:"level"`
}

func (*User) Build

func (v *User) Build() *protocol.User

type VLessInboundConfig

type VLessInboundConfig struct {
	Clients    []json.RawMessage       `json:"clients"`
	Decryption string                  `json:"decryption"`
	Fallbacks  []*VLessInboundFallback `json:"fallbacks"`
}

func (*VLessInboundConfig) Build

func (c *VLessInboundConfig) Build() (proto.Message, error)

Build implements Buildable

type VLessInboundFallback

type VLessInboundFallback struct {
	Name string          `json:"name"`
	Alpn string          `json:"alpn"`
	Path string          `json:"path"`
	Type string          `json:"type"`
	Dest json.RawMessage `json:"dest"`
	Xver uint64          `json:"xver"`
}

type VLessOutboundConfig

type VLessOutboundConfig struct {
	Vnext []*VLessOutboundVnext `json:"vnext"`
}

func (*VLessOutboundConfig) Build

func (c *VLessOutboundConfig) Build() (proto.Message, error)

Build implements Buildable

type VLessOutboundVnext

type VLessOutboundVnext struct {
	Address *Address          `json:"address"`
	Port    uint16            `json:"port"`
	Users   []json.RawMessage `json:"users"`
}

type VMessAccount

type VMessAccount struct {
	ID          string `json:"id"`
	Security    string `json:"security"`
	Experiments string `json:"experiments"`
}

func (*VMessAccount) Build

func (a *VMessAccount) Build() *vmess.Account

Build implements Buildable

type VMessDefaultConfig

type VMessDefaultConfig struct {
	Level byte `json:"level"`
}

func (*VMessDefaultConfig) Build

Build implements Buildable

type VMessDetourConfig

type VMessDetourConfig struct {
	ToTag string `json:"to"`
}

func (*VMessDetourConfig) Build

Build implements Buildable

type VMessInboundConfig

type VMessInboundConfig struct {
	Users        []json.RawMessage   `json:"clients"`
	Defaults     *VMessDefaultConfig `json:"default"`
	DetourConfig *VMessDetourConfig  `json:"detour"`
}

func (*VMessInboundConfig) Build

func (c *VMessInboundConfig) Build() (proto.Message, error)

Build implements Buildable

type VMessOutboundConfig

type VMessOutboundConfig struct {
	Receivers []*VMessOutboundTarget `json:"vnext"`
}

func (*VMessOutboundConfig) Build

func (c *VMessOutboundConfig) Build() (proto.Message, error)

Build implements Buildable

type VMessOutboundTarget

type VMessOutboundTarget struct {
	Address *Address          `json:"address"`
	Port    uint16            `json:"port"`
	Users   []json.RawMessage `json:"users"`
}

type WebSocketConfig

type WebSocketConfig struct {
	Host                string            `json:"host"`
	Path                string            `json:"path"`
	Headers             map[string]string `json:"headers"`
	AcceptProxyProtocol bool              `json:"acceptProxyProtocol"`
	HeartbeatPeriod     uint32            `json:"heartbeatPeriod"`
}

func (*WebSocketConfig) Build

func (c *WebSocketConfig) Build() (proto.Message, error)

Build implements Buildable.

type WechatVideoAuthenticator

type WechatVideoAuthenticator struct{}

func (WechatVideoAuthenticator) Build

type WireGuardConfig

type WireGuardConfig struct {
	IsClient bool `json:""`

	NoKernelTun    bool                   `json:"noKernelTun"`
	SecretKey      string                 `json:"secretKey"`
	Address        []string               `json:"address"`
	Peers          []*WireGuardPeerConfig `json:"peers"`
	MTU            int32                  `json:"mtu"`
	NumWorkers     int32                  `json:"workers"`
	Reserved       []byte                 `json:"reserved"`
	DomainStrategy string                 `json:"domainStrategy"`
}

func (*WireGuardConfig) Build

func (c *WireGuardConfig) Build() (proto.Message, error)

type WireGuardPeerConfig

type WireGuardPeerConfig struct {
	PublicKey    string   `json:"publicKey"`
	PreSharedKey string   `json:"preSharedKey"`
	Endpoint     string   `json:"endpoint"`
	KeepAlive    uint32   `json:"keepAlive"`
	AllowedIPs   []string `json:"allowedIPs,omitempty"`
}

func (*WireGuardPeerConfig) Build

func (c *WireGuardPeerConfig) Build() (proto.Message, error)

type WireguardAuthenticator

type WireguardAuthenticator struct{}

func (WireguardAuthenticator) Build

type XmuxConfig

type XmuxConfig struct {
	MaxConcurrency   Int32Range `json:"maxConcurrency"`
	MaxConnections   Int32Range `json:"maxConnections"`
	CMaxReuseTimes   Int32Range `json:"cMaxReuseTimes"`
	CMaxLifetimeMs   Int32Range `json:"cMaxLifetimeMs"`
	HMaxRequestTimes Int32Range `json:"hMaxRequestTimes"`
	HKeepAlivePeriod int64      `json:"hKeepAlivePeriod"`
}

Directories

Path Synopsis
cfgcommon

Jump to

Keyboard shortcuts

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