session

package
v0.0.0-...-07af6e5 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package session provides functions for sessions of incoming requests.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithContent

func ContextWithContent(ctx context.Context, content *Content) context.Context

func ContextWithID

func ContextWithID(ctx context.Context, id ID) context.Context

ContextWithID returns a new context with the given ID.

func ContextWithInbound

func ContextWithInbound(ctx context.Context, inbound *Inbound) context.Context

func ContextWithMuxPrefered

func ContextWithMuxPrefered(ctx context.Context, forced bool) context.Context

ContextWithMuxPrefered returns a new context with the given bool

func ContextWithOutbound

func ContextWithOutbound(ctx context.Context, outbound *Outbound) context.Context

func ContextWithSockopt

func ContextWithSockopt(ctx context.Context, s *Sockopt) context.Context

ContextWithSockopt returns a new context with Socket configs included

func ExportIDToError

func ExportIDToError(ctx context.Context) errors.ExportOption

ExportIDToError transfers session.ID into an error object, for logging purpose. This can be used with error.WriteToLog().

func GetForcedOutboundTagFromContext

func GetForcedOutboundTagFromContext(ctx context.Context) string

func GetTransportLayerProxyTagFromContext

func GetTransportLayerProxyTagFromContext(ctx context.Context) string

func MuxPreferedFromContext

func MuxPreferedFromContext(ctx context.Context) bool

MuxPreferedFromContext returns value in this context, or false if not contained.

func SetForcedOutboundTagToContext

func SetForcedOutboundTagToContext(ctx context.Context, tag string) context.Context

func SetTransportLayerProxyTagToContext

func SetTransportLayerProxyTagToContext(ctx context.Context, tag string) context.Context

func SubmitOutboundErrorToOriginator

func SubmitOutboundErrorToOriginator(ctx context.Context, err error)

func TrackedConnectionError

func TrackedConnectionError(ctx context.Context, tracker TrackedRequestErrorFeedback) context.Context

Types

type Content

type Content struct {
	// Protocol of current content.
	Protocol string

	SniffingRequest SniffingRequest

	Attributes map[string]string

	SkipDNSResolve bool
}

Content is the metadata of the connection content.

func ContentFromContext

func ContentFromContext(ctx context.Context) *Content

func (*Content) Attribute

func (c *Content) Attribute(name string) string

Attribute retrieves additional string attributes from content.

func (*Content) SetAttribute

func (c *Content) SetAttribute(name string, value string)

SetAttribute attachs additional string attributes to content.

type ID

type ID uint32

ID of a session.

func IDFromContext

func IDFromContext(ctx context.Context) ID

IDFromContext returns ID in this context, or 0 if not contained.

func NewID

func NewID() ID

NewID generates a new ID. The generated ID is high likely to be unique, but not cryptographically secure. The generated ID will never be 0.

type Inbound

type Inbound struct {
	// Source address of the inbound connection.
	Source net.Destination
	// Gateway address
	Gateway net.Destination
	// Tag of the inbound proxy that handles the connection.
	Tag string
	// User is the user that authencates for the inbound. May be nil if the protocol allows anounymous traffic.
	User *protocol.MemoryUser
}

Inbound is the metadata of an inbound connection.

func InboundFromContext

func InboundFromContext(ctx context.Context) *Inbound

type Outbound

type Outbound struct {
	// Target address of the outbound connection.
	Target net.Destination
	// Gateway address
	Gateway net.Address
	// Domain resolver to use when dialing
	Resolver func(ctx context.Context, domain string) net.Address
}

Outbound is the metadata of an outbound connection.

func OutboundFromContext

func OutboundFromContext(ctx context.Context) *Outbound

type SniffingRequest

type SniffingRequest struct {
	OverrideDestinationForProtocol []string
	Enabled                        bool
	MetadataOnly                   bool
}

SniffingRequest controls the behavior of content sniffing.

type Sockopt

type Sockopt struct {
	// Mark of the socket connection.
	Mark uint32
}

Sockopt is the settings for socket connection.

func SockoptFromContext

func SockoptFromContext(ctx context.Context) *Sockopt

SockoptFromContext returns Socket configs in this context, or nil if not contained.

type TrackedRequestErrorFeedback

type TrackedRequestErrorFeedback interface {
	SubmitError(err error)
}

Jump to

Keyboard shortcuts

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