Documentation ¶
Index ¶
- Variables
- type AnyCondition
- type CIDR
- type CIDRMatcher
- type Condition
- type ConditionChan
- type Config
- type Config_DomainStrategy
- type Domain
- type Domain_Type
- type IPv4Matcher
- type InboundTagMatcher
- type NetworkMatcher
- type PlainDomainMatcher
- type PortMatcher
- type RegexpDomainMatcher
- type Router
- type RoutingEntry
- type RoutingRule
- func (v *RoutingRule) BuildCondition() (Condition, error)
- func (*RoutingRule) Descriptor() ([]byte, []int)
- func (m *RoutingRule) GetCidr() []*CIDR
- func (m *RoutingRule) GetDomain() []*Domain
- func (m *RoutingRule) GetInboundTag() []string
- func (m *RoutingRule) GetNetworkList() *v2ray_core_common_net1.NetworkList
- func (m *RoutingRule) GetPortRange() *v2ray_core_common_net.PortRange
- func (m *RoutingRule) GetSourceCidr() []*CIDR
- func (m *RoutingRule) GetTag() string
- func (m *RoutingRule) GetUserEmail() []string
- func (*RoutingRule) ProtoMessage()
- func (m *RoutingRule) Reset()
- func (m *RoutingRule) String() string
- type RoutingTable
- type Rule
- type UserMatcher
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrInvalidRule = errors.New("Invalid Rule") ErrNoRuleApplicable = errors.New("No rule applicable") )
View Source
var Config_DomainStrategy_name = map[int32]string{
0: "AsIs",
1: "UseIp",
2: "IpIfNonMatch",
}
View Source
var Config_DomainStrategy_value = map[string]int32{
"AsIs": 0,
"UseIp": 1,
"IpIfNonMatch": 2,
}
View Source
var Domain_Type_name = map[int32]string{
0: "Plain",
1: "Regex",
}
View Source
var Domain_Type_value = map[string]int32{
"Plain": 0,
"Regex": 1,
}
Functions ¶
This section is empty.
Types ¶
type AnyCondition ¶
type AnyCondition []Condition
func NewAnyCondition ¶
func NewAnyCondition() *AnyCondition
func (*AnyCondition) Add ¶
func (v *AnyCondition) Add(cond Condition) *AnyCondition
func (*AnyCondition) Apply ¶
func (v *AnyCondition) Apply(session *proxy.SessionInfo) bool
func (*AnyCondition) Len ¶
func (v *AnyCondition) Len() int
type CIDR ¶
type CIDR struct { // IP address, should be either 4 or 16 bytes. Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` // Number of leading ones in the network mask. Prefix uint32 `protobuf:"varint,2,opt,name=prefix" json:"prefix,omitempty"` }
IP for routing decision, in CIDR form.
func (*CIDR) Descriptor ¶
func (*CIDR) ProtoMessage ¶
func (*CIDR) ProtoMessage()
type CIDRMatcher ¶
type CIDRMatcher struct {
// contains filtered or unexported fields
}
func NewCIDRMatcher ¶
func NewCIDRMatcher(ip []byte, mask uint32, onSource bool) (*CIDRMatcher, error)
func (*CIDRMatcher) Apply ¶
func (v *CIDRMatcher) Apply(session *proxy.SessionInfo) bool
type Condition ¶
type Condition interface {
Apply(session *proxy.SessionInfo) bool
}
type ConditionChan ¶
type ConditionChan []Condition
func NewConditionChan ¶
func NewConditionChan() *ConditionChan
func (*ConditionChan) Add ¶
func (v *ConditionChan) Add(cond Condition) *ConditionChan
func (*ConditionChan) Apply ¶
func (v *ConditionChan) Apply(session *proxy.SessionInfo) bool
func (*ConditionChan) Len ¶
func (v *ConditionChan) Len() int
type Config ¶ added in v1.1.1
type Config struct { DomainStrategy Config_DomainStrategy `` /* 146-byte string literal not displayed */ Rule []*RoutingRule `protobuf:"bytes,2,rep,name=rule" json:"rule,omitempty"` }
func (*Config) Descriptor ¶
func (*Config) GetDomainStrategy ¶
func (m *Config) GetDomainStrategy() Config_DomainStrategy
func (*Config) GetRule ¶
func (m *Config) GetRule() []*RoutingRule
func (*Config) ProtoMessage ¶
func (*Config) ProtoMessage()
type Config_DomainStrategy ¶
type Config_DomainStrategy int32
const ( // Use domain as is. Config_AsIs Config_DomainStrategy = 0 // Always resolve IP for domains. Config_UseIp Config_DomainStrategy = 1 // Resolve to IP if the domain doesn't match any rules. Config_IpIfNonMatch Config_DomainStrategy = 2 )
func (Config_DomainStrategy) EnumDescriptor ¶
func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int)
func (Config_DomainStrategy) String ¶
func (x Config_DomainStrategy) String() string
type Domain ¶
type Domain struct { // Domain matching type. Type Domain_Type `protobuf:"varint,1,opt,name=type,enum=v2ray.core.app.router.Domain_Type" json:"type,omitempty"` // Domain value. Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` }
Domain for routing decision.
func (*Domain) Descriptor ¶
func (*Domain) GetType ¶
func (m *Domain) GetType() Domain_Type
func (*Domain) ProtoMessage ¶
func (*Domain) ProtoMessage()
type Domain_Type ¶
type Domain_Type int32
Type of domain value.
const ( // The value is used as is. Domain_Plain Domain_Type = 0 // The value is used as a regular expression. Domain_Regex Domain_Type = 1 )
func (Domain_Type) EnumDescriptor ¶
func (Domain_Type) EnumDescriptor() ([]byte, []int)
func (Domain_Type) String ¶
func (x Domain_Type) String() string
type IPv4Matcher ¶
type IPv4Matcher struct {
// contains filtered or unexported fields
}
func NewIPv4Matcher ¶
func NewIPv4Matcher(ipnet *v2net.IPNet, onSource bool) *IPv4Matcher
func (*IPv4Matcher) Apply ¶
func (v *IPv4Matcher) Apply(session *proxy.SessionInfo) bool
type InboundTagMatcher ¶
type InboundTagMatcher struct {
// contains filtered or unexported fields
}
func NewInboundTagMatcher ¶
func NewInboundTagMatcher(tags []string) *InboundTagMatcher
func (*InboundTagMatcher) Apply ¶
func (v *InboundTagMatcher) Apply(session *proxy.SessionInfo) bool
type NetworkMatcher ¶
type NetworkMatcher struct {
// contains filtered or unexported fields
}
func NewNetworkMatcher ¶
func NewNetworkMatcher(network *v2net.NetworkList) *NetworkMatcher
func (*NetworkMatcher) Apply ¶
func (v *NetworkMatcher) Apply(session *proxy.SessionInfo) bool
type PlainDomainMatcher ¶
type PlainDomainMatcher struct {
// contains filtered or unexported fields
}
func NewPlainDomainMatcher ¶
func NewPlainDomainMatcher(pattern string) *PlainDomainMatcher
func (*PlainDomainMatcher) Apply ¶
func (v *PlainDomainMatcher) Apply(session *proxy.SessionInfo) bool
type PortMatcher ¶
type PortMatcher struct {
// contains filtered or unexported fields
}
func NewPortMatcher ¶
func NewPortMatcher(portRange v2net.PortRange) *PortMatcher
func (*PortMatcher) Apply ¶
func (v *PortMatcher) Apply(session *proxy.SessionInfo) bool
type RegexpDomainMatcher ¶
type RegexpDomainMatcher struct {
// contains filtered or unexported fields
}
func NewRegexpDomainMatcher ¶
func NewRegexpDomainMatcher(pattern string) (*RegexpDomainMatcher, error)
func (*RegexpDomainMatcher) Apply ¶
func (v *RegexpDomainMatcher) Apply(session *proxy.SessionInfo) bool
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) ResolveIP ¶
func (v *Router) ResolveIP(dest net.Destination) []net.Destination
Private: Visible for testing.
func (*Router) TakeDetour ¶
func (v *Router) TakeDetour(session *proxy.SessionInfo) (string, error)
type RoutingEntry ¶
type RoutingEntry struct {
// contains filtered or unexported fields
}
func (*RoutingEntry) Expired ¶
func (v *RoutingEntry) Expired() bool
func (*RoutingEntry) Extend ¶
func (v *RoutingEntry) Extend()
type RoutingRule ¶
type RoutingRule struct { Tag string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"` Domain []*Domain `protobuf:"bytes,2,rep,name=domain" json:"domain,omitempty"` Cidr []*CIDR `protobuf:"bytes,3,rep,name=cidr" json:"cidr,omitempty"` PortRange *v2ray_core_common_net.PortRange `protobuf:"bytes,4,opt,name=port_range,json=portRange" json:"port_range,omitempty"` NetworkList *v2ray_core_common_net1.NetworkList `protobuf:"bytes,5,opt,name=network_list,json=networkList" json:"network_list,omitempty"` SourceCidr []*CIDR `protobuf:"bytes,6,rep,name=source_cidr,json=sourceCidr" json:"source_cidr,omitempty"` UserEmail []string `protobuf:"bytes,7,rep,name=user_email,json=userEmail" json:"user_email,omitempty"` InboundTag []string `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag" json:"inbound_tag,omitempty"` }
func (*RoutingRule) BuildCondition ¶
func (v *RoutingRule) BuildCondition() (Condition, error)
func (*RoutingRule) Descriptor ¶
func (*RoutingRule) Descriptor() ([]byte, []int)
func (*RoutingRule) GetCidr ¶
func (m *RoutingRule) GetCidr() []*CIDR
func (*RoutingRule) GetDomain ¶
func (m *RoutingRule) GetDomain() []*Domain
func (*RoutingRule) GetInboundTag ¶
func (m *RoutingRule) GetInboundTag() []string
func (*RoutingRule) GetNetworkList ¶
func (m *RoutingRule) GetNetworkList() *v2ray_core_common_net1.NetworkList
func (*RoutingRule) GetPortRange ¶
func (m *RoutingRule) GetPortRange() *v2ray_core_common_net.PortRange
func (*RoutingRule) GetSourceCidr ¶
func (m *RoutingRule) GetSourceCidr() []*CIDR
func (*RoutingRule) GetTag ¶
func (m *RoutingRule) GetTag() string
func (*RoutingRule) GetUserEmail ¶
func (m *RoutingRule) GetUserEmail() []string
func (*RoutingRule) ProtoMessage ¶
func (*RoutingRule) ProtoMessage()
func (*RoutingRule) Reset ¶
func (m *RoutingRule) Reset()
func (*RoutingRule) String ¶
func (m *RoutingRule) String() string
type RoutingTable ¶
func NewRoutingTable ¶
func NewRoutingTable() *RoutingTable
func (*RoutingTable) Cleanup ¶
func (v *RoutingTable) Cleanup()
type UserMatcher ¶
type UserMatcher struct {
// contains filtered or unexported fields
}
func NewUserMatcher ¶
func NewUserMatcher(users []string) *UserMatcher
func (*UserMatcher) Apply ¶
func (v *UserMatcher) Apply(session *proxy.SessionInfo) bool
Click to show internal directories.
Click to hide internal directories.