session

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2021 License: MIT Imports: 8 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 ContextWithOutbound

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

func ContextWithProxyRecord

func ContextWithProxyRecord(ctx context.Context, record *ProxyRecord) context.Context

func ContextWithProxySession

func ContextWithProxySession(ctx context.Context, sess *stats.Session) context.Context

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 InsertRecord

func InsertRecord(record *ProxyRecord)

func ProxySessionFromContext

func ProxySessionFromContext(ctx context.Context) *stats.Session

Types

type Content

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

	SniffingRequest SniffingRequest

	Attributes map[string]interface{}

	Application []string
	Network     string
	LocalAddr   string
	RemoteAddr  string
	Extra       string
	OutboundTag string
}

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) interface{}

func (*Content) SetAttribute

func (c *Content) SetAttribute(name string, value interface{})

type DBService

type DBService interface {
	InsertProxyLog(target, tag string, startTime, endTime int64, uploadBytes, downloadBytes int32, recordType, dnsQueryType int32, dnsRequest, dnsResponse string, dnsNumIPs int32)
}
var DefaultDBService DBService

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
	// Getaway 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
	NoSource bool
}

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
	// ResolvedIPs is the resolved IP addresses, if the Targe is a domain address.
	ResolvedIPs []net.IP

	Timeout time.Duration
}

Outbound is the metadata of an outbound connection.

func OutboundFromContext

func OutboundFromContext(ctx context.Context) *Outbound

type ProxyRecord

type ProxyRecord struct {
	Target        string
	Tag           string
	StartTime     int64
	EndTime       int64
	UploadBytes   int32
	DownloadBytes int32
	RecordType    int32 // 0: TCP/UDP, 1: DNS
	DNSQueryType  int32
	DNSRequest    string
	DNSResponse   string
	DNSNumIPs     int32
}

func ProxyRecordFromContext

func ProxyRecordFromContext(ctx context.Context) *ProxyRecord

func (*ProxyRecord) AddDownloadBytes

func (r *ProxyRecord) AddDownloadBytes(n int32)

func (*ProxyRecord) AddUploadBytes

func (r *ProxyRecord) AddUploadBytes(n int32)

type SniffingRequest

type SniffingRequest struct {
	OverrideDestinationForProtocol []string
	Enabled                        bool
}

Jump to

Keyboard shortcuts

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