Documentation ¶
Overview ¶
Package dns is an implementation of core.DNS feature.
Index ¶
- Variables
- func Fqdn(domain string) string
- type ClassicNameServer
- type Client
- type Config
- func (*Config) Descriptor() ([]byte, []int)deprecated
- func (x *Config) GetClientIp() []byte
- func (x *Config) GetHosts() map[string]*net.IPOrDomaindeprecated
- func (x *Config) GetNameServer() []*NameServer
- func (x *Config) GetNameServers() []*net.Endpointdeprecated
- func (x *Config) GetStaticHosts() []*Config_HostMapping
- func (x *Config) GetTag() string
- func (*Config) ProtoMessage()
- func (x *Config) ProtoReflect() protoreflect.Message
- func (x *Config) Reset()
- func (x *Config) String() string
- type Config_HostMapping
- func (*Config_HostMapping) Descriptor() ([]byte, []int)deprecated
- func (x *Config_HostMapping) GetDomain() string
- func (x *Config_HostMapping) GetIp() [][]byte
- func (x *Config_HostMapping) GetProxiedDomain() string
- func (x *Config_HostMapping) GetType() DomainMatchingType
- func (*Config_HostMapping) ProtoMessage()
- func (x *Config_HostMapping) ProtoReflect() protoreflect.Message
- func (x *Config_HostMapping) Reset()
- func (x *Config_HostMapping) String() string
- type DoHNameServer
- type DomainMatcherInfo
- type DomainMatchingType
- func (DomainMatchingType) Descriptor() protoreflect.EnumDescriptor
- func (x DomainMatchingType) Enum() *DomainMatchingType
- func (DomainMatchingType) EnumDescriptor() ([]byte, []int)deprecated
- func (x DomainMatchingType) Number() protoreflect.EnumNumber
- func (x DomainMatchingType) String() string
- func (DomainMatchingType) Type() protoreflect.EnumType
- type IPOption
- type IPRecord
- type LocalNameServer
- type MultiGeoIPMatcher
- type NameServer
- func (*NameServer) Descriptor() ([]byte, []int)deprecated
- func (x *NameServer) GetAddress() *net.Endpoint
- func (x *NameServer) GetGeoip() []*router.GeoIP
- func (x *NameServer) GetOriginalRules() []*NameServer_OriginalRule
- func (x *NameServer) GetPrioritizedDomain() []*NameServer_PriorityDomain
- func (*NameServer) ProtoMessage()
- func (x *NameServer) ProtoReflect() protoreflect.Message
- func (x *NameServer) Reset()
- func (x *NameServer) String() string
- type NameServer_OriginalRule
- func (*NameServer_OriginalRule) Descriptor() ([]byte, []int)deprecated
- func (x *NameServer_OriginalRule) GetRule() string
- func (x *NameServer_OriginalRule) GetSize() uint32
- func (*NameServer_OriginalRule) ProtoMessage()
- func (x *NameServer_OriginalRule) ProtoReflect() protoreflect.Message
- func (x *NameServer_OriginalRule) Reset()
- func (x *NameServer_OriginalRule) String() string
- type NameServer_PriorityDomain
- func (*NameServer_PriorityDomain) Descriptor() ([]byte, []int)deprecated
- func (x *NameServer_PriorityDomain) GetDomain() string
- func (x *NameServer_PriorityDomain) GetType() DomainMatchingType
- func (*NameServer_PriorityDomain) ProtoMessage()
- func (x *NameServer_PriorityDomain) ProtoReflect() protoreflect.Message
- func (x *NameServer_PriorityDomain) Reset()
- func (x *NameServer_PriorityDomain) String() string
- type Server
- func (s *Server) Close() error
- func (s *Server) IsOwnLink(ctx context.Context) bool
- func (s *Server) LookupIP(domain string) ([]net.IP, error)
- func (s *Server) LookupIPv4(domain string) ([]net.IP, error)
- func (s *Server) LookupIPv6(domain string) ([]net.IP, error)
- func (s *Server) Match(idx int, client Client, domain string, ips []net.IP) ([]net.IP, error)
- func (s *Server) Start() error
- func (*Server) Type() interface{}
- type StaticHosts
Constants ¶
This section is empty.
Variables ¶
var ( DomainMatchingType_name = map[int32]string{ 0: "Full", 1: "Subdomain", 2: "Keyword", 3: "Regex", } DomainMatchingType_value = map[string]int32{ "Full": 0, "Subdomain": 1, "Keyword": 2, "Regex": 3, } )
Enum value maps for DomainMatchingType.
var File_app_dns_config_proto protoreflect.FileDescriptor
Functions ¶
Types ¶
type ClassicNameServer ¶
func NewClassicNameServer ¶
func NewClassicNameServer(address net.Destination, dispatcher routing.Dispatcher, clientIP net.IP) *ClassicNameServer
func (*ClassicNameServer) Cleanup ¶
func (s *ClassicNameServer) Cleanup() error
func (*ClassicNameServer) HandleResponse ¶
func (s *ClassicNameServer) HandleResponse(ctx context.Context, packet *udp_proto.Packet)
func (*ClassicNameServer) Name ¶
func (s *ClassicNameServer) Name() string
type Client ¶
type Client interface { // Name of the Client. Name() string // QueryIP sends IP queries to its configured server. QueryIP(ctx context.Context, domain string, option IPOption) ([]net.IP, error) }
Client is the interface for DNS client.
type Config ¶
type Config struct { // Nameservers used by this DNS. Only traditional UDP servers are support at // the moment. A special value 'localhost' as a domain address can be set to // use DNS on local system. // // Deprecated: Do not use. NameServers []*net.Endpoint `protobuf:"bytes,1,rep,name=NameServers,proto3" json:"NameServers,omitempty"` // NameServer list used by this DNS client. NameServer []*NameServer `protobuf:"bytes,5,rep,name=name_server,json=nameServer,proto3" json:"name_server,omitempty"` // Static hosts. Domain to IP. // Deprecated. Use static_hosts. // // Deprecated: Do not use. Hosts map[string]*net.IPOrDomain `` /* 151-byte string literal not displayed */ // Client IP for EDNS client subnet. Must be 4 bytes (IPv4) or 16 bytes // (IPv6). ClientIp []byte `protobuf:"bytes,3,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` StaticHosts []*Config_HostMapping `protobuf:"bytes,4,rep,name=static_hosts,json=staticHosts,proto3" json:"static_hosts,omitempty"` // Tag is the inbound tag of DNS client. Tag string `protobuf:"bytes,6,opt,name=tag,proto3" json:"tag,omitempty"` // contains filtered or unexported fields }
func (*Config) Descriptor
deprecated
func (*Config) GetClientIp ¶
func (*Config) GetHosts
deprecated
func (x *Config) GetHosts() map[string]*net.IPOrDomain
Deprecated: Do not use.
func (*Config) GetNameServer ¶
func (x *Config) GetNameServer() []*NameServer
func (*Config) GetNameServers
deprecated
func (*Config) GetStaticHosts ¶
func (x *Config) GetStaticHosts() []*Config_HostMapping
func (*Config) ProtoMessage ¶
func (*Config) ProtoMessage()
func (*Config) ProtoReflect ¶
func (x *Config) ProtoReflect() protoreflect.Message
type Config_HostMapping ¶
type Config_HostMapping struct { Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.dns.DomainMatchingType" json:"type,omitempty"` Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` Ip [][]byte `protobuf:"bytes,3,rep,name=ip,proto3" json:"ip,omitempty"` // ProxiedDomain indicates the mapped domain has the same IP address on this // domain. Xray will use this domain for IP queries. This field is only // effective if ip is empty. ProxiedDomain string `protobuf:"bytes,4,opt,name=proxied_domain,json=proxiedDomain,proto3" json:"proxied_domain,omitempty"` // contains filtered or unexported fields }
func (*Config_HostMapping) Descriptor
deprecated
func (*Config_HostMapping) Descriptor() ([]byte, []int)
Deprecated: Use Config_HostMapping.ProtoReflect.Descriptor instead.
func (*Config_HostMapping) GetDomain ¶
func (x *Config_HostMapping) GetDomain() string
func (*Config_HostMapping) GetIp ¶
func (x *Config_HostMapping) GetIp() [][]byte
func (*Config_HostMapping) GetProxiedDomain ¶
func (x *Config_HostMapping) GetProxiedDomain() string
func (*Config_HostMapping) GetType ¶
func (x *Config_HostMapping) GetType() DomainMatchingType
func (*Config_HostMapping) ProtoMessage ¶
func (*Config_HostMapping) ProtoMessage()
func (*Config_HostMapping) ProtoReflect ¶
func (x *Config_HostMapping) ProtoReflect() protoreflect.Message
func (*Config_HostMapping) Reset ¶
func (x *Config_HostMapping) Reset()
func (*Config_HostMapping) String ¶
func (x *Config_HostMapping) String() string
type DoHNameServer ¶
DoHNameServer implemented DNS over HTTPS (RFC8484) Wire Format, which is compatible with traditional dns over udp(RFC1035), thus most of the DOH implementation is copied from udpns.go
func NewDoHLocalNameServer ¶
func NewDoHLocalNameServer(url *url.URL, clientIP net.IP) *DoHNameServer
NewDoHLocalNameServer creates DOH client object for local resolving
func NewDoHNameServer ¶
func NewDoHNameServer(url *url.URL, dispatcher routing.Dispatcher, clientIP net.IP) (*DoHNameServer, error)
NewDoHNameServer creates DOH client object for remote resolving
func (*DoHNameServer) Cleanup ¶
func (s *DoHNameServer) Cleanup() error
Cleanup clears expired items from cache
type DomainMatcherInfo ¶
type DomainMatcherInfo struct {
// contains filtered or unexported fields
}
DomainMatcherInfo contains information attached to index returned by Server.domainMatcher
type DomainMatchingType ¶
type DomainMatchingType int32
const ( DomainMatchingType_Full DomainMatchingType = 0 DomainMatchingType_Subdomain DomainMatchingType = 1 DomainMatchingType_Keyword DomainMatchingType = 2 DomainMatchingType_Regex DomainMatchingType = 3 )
func (DomainMatchingType) Descriptor ¶
func (DomainMatchingType) Descriptor() protoreflect.EnumDescriptor
func (DomainMatchingType) Enum ¶
func (x DomainMatchingType) Enum() *DomainMatchingType
func (DomainMatchingType) EnumDescriptor
deprecated
func (DomainMatchingType) EnumDescriptor() ([]byte, []int)
Deprecated: Use DomainMatchingType.Descriptor instead.
func (DomainMatchingType) Number ¶
func (x DomainMatchingType) Number() protoreflect.EnumNumber
func (DomainMatchingType) String ¶
func (x DomainMatchingType) String() string
func (DomainMatchingType) Type ¶
func (DomainMatchingType) Type() protoreflect.EnumType
type LocalNameServer ¶
type LocalNameServer struct {
// contains filtered or unexported fields
}
func NewLocalNameServer ¶
func NewLocalNameServer() *LocalNameServer
func (*LocalNameServer) Name ¶
func (s *LocalNameServer) Name() string
type MultiGeoIPMatcher ¶
type MultiGeoIPMatcher struct {
// contains filtered or unexported fields
}
MultiGeoIPMatcher for match
func (*MultiGeoIPMatcher) HasMatcher ¶
func (c *MultiGeoIPMatcher) HasMatcher() bool
HasMatcher check has matcher
type NameServer ¶
type NameServer struct { Address *net.Endpoint `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` PrioritizedDomain []*NameServer_PriorityDomain `protobuf:"bytes,2,rep,name=prioritized_domain,json=prioritizedDomain,proto3" json:"prioritized_domain,omitempty"` Geoip []*router.GeoIP `protobuf:"bytes,3,rep,name=geoip,proto3" json:"geoip,omitempty"` OriginalRules []*NameServer_OriginalRule `protobuf:"bytes,4,rep,name=original_rules,json=originalRules,proto3" json:"original_rules,omitempty"` // contains filtered or unexported fields }
func (*NameServer) Descriptor
deprecated
func (*NameServer) Descriptor() ([]byte, []int)
Deprecated: Use NameServer.ProtoReflect.Descriptor instead.
func (*NameServer) GetAddress ¶
func (x *NameServer) GetAddress() *net.Endpoint
func (*NameServer) GetGeoip ¶
func (x *NameServer) GetGeoip() []*router.GeoIP
func (*NameServer) GetOriginalRules ¶
func (x *NameServer) GetOriginalRules() []*NameServer_OriginalRule
func (*NameServer) GetPrioritizedDomain ¶
func (x *NameServer) GetPrioritizedDomain() []*NameServer_PriorityDomain
func (*NameServer) ProtoMessage ¶
func (*NameServer) ProtoMessage()
func (*NameServer) ProtoReflect ¶
func (x *NameServer) ProtoReflect() protoreflect.Message
func (*NameServer) Reset ¶
func (x *NameServer) Reset()
func (*NameServer) String ¶
func (x *NameServer) String() string
type NameServer_OriginalRule ¶
type NameServer_OriginalRule struct { Rule string `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` Size uint32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` // contains filtered or unexported fields }
func (*NameServer_OriginalRule) Descriptor
deprecated
func (*NameServer_OriginalRule) Descriptor() ([]byte, []int)
Deprecated: Use NameServer_OriginalRule.ProtoReflect.Descriptor instead.
func (*NameServer_OriginalRule) GetRule ¶
func (x *NameServer_OriginalRule) GetRule() string
func (*NameServer_OriginalRule) GetSize ¶
func (x *NameServer_OriginalRule) GetSize() uint32
func (*NameServer_OriginalRule) ProtoMessage ¶
func (*NameServer_OriginalRule) ProtoMessage()
func (*NameServer_OriginalRule) ProtoReflect ¶
func (x *NameServer_OriginalRule) ProtoReflect() protoreflect.Message
func (*NameServer_OriginalRule) Reset ¶
func (x *NameServer_OriginalRule) Reset()
func (*NameServer_OriginalRule) String ¶
func (x *NameServer_OriginalRule) String() string
type NameServer_PriorityDomain ¶
type NameServer_PriorityDomain struct { Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.dns.DomainMatchingType" json:"type,omitempty"` Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` // contains filtered or unexported fields }
func (*NameServer_PriorityDomain) Descriptor
deprecated
func (*NameServer_PriorityDomain) Descriptor() ([]byte, []int)
Deprecated: Use NameServer_PriorityDomain.ProtoReflect.Descriptor instead.
func (*NameServer_PriorityDomain) GetDomain ¶
func (x *NameServer_PriorityDomain) GetDomain() string
func (*NameServer_PriorityDomain) GetType ¶
func (x *NameServer_PriorityDomain) GetType() DomainMatchingType
func (*NameServer_PriorityDomain) ProtoMessage ¶
func (*NameServer_PriorityDomain) ProtoMessage()
func (*NameServer_PriorityDomain) ProtoReflect ¶
func (x *NameServer_PriorityDomain) ProtoReflect() protoreflect.Message
func (*NameServer_PriorityDomain) Reset ¶
func (x *NameServer_PriorityDomain) Reset()
func (*NameServer_PriorityDomain) String ¶
func (x *NameServer_PriorityDomain) String() string
type Server ¶
Server is a DNS rely server.
func (*Server) LookupIPv4 ¶
LookupIPv4 implements dns.IPv4Lookup.
func (*Server) LookupIPv6 ¶
LookupIPv6 implements dns.IPv6Lookup.
type StaticHosts ¶
type StaticHosts struct {
// contains filtered or unexported fields
}
StaticHosts represents static domain-ip mapping in DNS server.
func NewStaticHosts ¶
func NewStaticHosts(hosts []*Config_HostMapping, legacy map[string]*net.IPOrDomain) (*StaticHosts, error)
NewStaticHosts creates a new StaticHosts instance.