mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-09-06 00:09:20 +03:00
* DNS: add clientip for specific nameserver * Refactoring: DNS App * DNS: add DNS over QUIC support * Feat: add disableCache option for DNS * Feat: add queryStrategy option for DNS * Feat: add disableFallback & skipFallback option for DNS * Feat: DNS hosts support multiple addresses * Feat: DNS transport over TCP * DNS: fix typo & refine code * DNS: refine code * Add disableFallbackIfMatch dns option * Feat: routing and freedom outbound ignore Fake DNS Turn off fake DNS for request sent from Routing and Freedom outbound. Fake DNS now only apply to DNS outbound. This is important for Android, where VPN service take over all system DNS traffic and pass it to core. "UseIp" option can be used in Freedom outbound to avoid getting fake IP and fail connection. * Fix test * Fix dns return * Fix local dns return empty * Apply timeout to dns outbound * Update app/dns/config.go Co-authored-by: Loyalsoldier <10487845+loyalsoldier@users.noreply.github.com> Co-authored-by: Ye Zhihao <vigilans@foxmail.com> Co-authored-by: maskedeken <52683904+maskedeken@users.noreply.github.com> Co-authored-by: V2Fly Team <51714622+vcptr@users.noreply.github.com> Co-authored-by: CalmLong <37164399+calmlong@users.noreply.github.com> Co-authored-by: Shelikhoo <xiaokangwang@outlook.com> Co-authored-by: 秋のかえで <autmaple@protonmail.com> Co-authored-by: 朱聖黎 <digglife@gmail.com> Co-authored-by: rurirei <72071920+rurirei@users.noreply.github.com> Co-authored-by: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Co-authored-by: Arthur Morgan <4637240+badO1a5A90@users.noreply.github.com>
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package routing
|
|
|
|
import (
|
|
"github.com/xtls/xray-core/common/net"
|
|
)
|
|
|
|
// Context is a feature to store connection information for routing.
|
|
//
|
|
// xray:api:stable
|
|
type Context interface {
|
|
// GetInboundTag returns the tag of the inbound the connection was from.
|
|
GetInboundTag() string
|
|
|
|
// GetSourcesIPs returns the source IPs bound to the connection.
|
|
GetSourceIPs() []net.IP
|
|
|
|
// GetSourcePort returns the source port of the connection.
|
|
GetSourcePort() net.Port
|
|
|
|
// GetTargetIPs returns the target IP of the connection or resolved IPs of target domain.
|
|
GetTargetIPs() []net.IP
|
|
|
|
// GetTargetPort returns the target port of the connection.
|
|
GetTargetPort() net.Port
|
|
|
|
// GetTargetDomain returns the target domain of the connection, if exists.
|
|
GetTargetDomain() string
|
|
|
|
// GetNetwork returns the network type of the connection.
|
|
GetNetwork() net.Network
|
|
|
|
// GetProtocol returns the protocol from the connection content, if sniffed out.
|
|
GetProtocol() string
|
|
|
|
// GetUser returns the user email from the connection content, if exists.
|
|
GetUser() string
|
|
|
|
// GetAttributes returns extra attributes from the conneciont content.
|
|
GetAttributes() map[string]string
|
|
|
|
// GetSkipDNSResolve returns a flag switch for weather skip dns resolve during route pick.
|
|
GetSkipDNSResolve() bool
|
|
}
|