routing

package
v1.8.26 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2024 License: MPL-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DispatcherType

func DispatcherType() interface{}

DispatcherType returns the type of Dispatcher interface. Can be used to implement common.HasType.

xray:api:stable

func RouterType

func RouterType() interface{}

RouterType return the type of Router interface. Can be used to implement common.HasType.

xray:api:stable

Types

type BalancerOverrider

type BalancerOverrider interface {
	SetOverrideTarget(tag, target string) error
	GetOverrideTarget(tag string) (string, error)
}

type BalancerPrincipleTarget

type BalancerPrincipleTarget interface {
	GetPrincipleTarget(tag string) ([]string, error)
}

type Context

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
}

Context is a feature to store connection information for routing.

xray:api:stable

type DefaultRouter

type DefaultRouter struct{}

DefaultRouter is an implementation of Router, which always returns ErrNoClue for routing decisions.

func (DefaultRouter) AddRule

func (DefaultRouter) AddRule(config *serial.TypedMessage, shouldAppend bool) error

AddRule implements Router.

func (DefaultRouter) Close

func (DefaultRouter) Close() error

Close implements common.Closable.

func (DefaultRouter) PickRoute

func (DefaultRouter) PickRoute(ctx Context) (Route, error)

PickRoute implements Router.

func (DefaultRouter) RemoveRule

func (DefaultRouter) RemoveRule(tag string) error

RemoveRule implements Router.

func (DefaultRouter) Start

func (DefaultRouter) Start() error

Start implements common.Runnable.

func (DefaultRouter) Type

func (DefaultRouter) Type() interface{}

Type implements common.HasType.

type Dispatcher

type Dispatcher interface {
	features.Feature

	// Dispatch returns a Ray for transporting data for the given request.
	Dispatch(ctx context.Context, dest net.Destination) (*transport.Link, error)
	DispatchLink(ctx context.Context, dest net.Destination, link *transport.Link) error
}

Dispatcher is a feature that dispatches inbound requests to outbound handlers based on rules. Dispatcher is required to be registered in a Xray instance to make Xray function properly.

xray:api:stable

type Route

type Route interface {
	// A Route is also a routing context.
	Context

	// GetOutboundGroupTags returns the detoured outbound group tags in sequence before a final outbound is chosen.
	GetOutboundGroupTags() []string

	// GetOutboundTag returns the tag of the outbound the connection was dispatched to.
	GetOutboundTag() string
}

Route is the routing result of Router feature.

xray:api:stable

type Router

type Router interface {
	features.Feature

	// PickRoute returns a route decision based on the given routing context.
	PickRoute(ctx Context) (Route, error)
	AddRule(config *serial.TypedMessage, shouldAppend bool) error
	RemoveRule(tag string) error
}

Router is a feature to choose an outbound tag for the given request.

xray:api:stable

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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