internet

package
v3.50.2 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2018 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// For incoming connections.
	TCP_FASTOPEN = 23
	// For out-going connections.
	TCP_FASTOPEN_CONNECT = 30
)

Variables

View Source
var SocketConfig_TCPFastOpenState_name = map[int32]string{
	0: "AsIs",
	1: "Enable",
	2: "Disable",
}
View Source
var SocketConfig_TCPFastOpenState_value = map[string]int32{
	"AsIs":    0,
	"Enable":  1,
	"Disable": 2,
}
View Source
var SocketConfig_TProxyMode_name = map[int32]string{
	0: "Off",
	1: "TProxy",
	2: "Redirect",
}
View Source
var SocketConfig_TProxyMode_value = map[string]int32{
	"Off":      0,
	"TProxy":   1,
	"Redirect": 2,
}
View Source
var TransportProtocol_name = map[int32]string{
	0: "TCP",
	1: "UDP",
	2: "MKCP",
	3: "WebSocket",
	4: "HTTP",
	5: "DomainSocket",
}
View Source
var TransportProtocol_value = map[string]int32{
	"TCP":          0,
	"UDP":          1,
	"MKCP":         2,
	"WebSocket":    3,
	"HTTP":         4,
	"DomainSocket": 5,
}

Functions

func ApplyGlobalTransportSettings

func ApplyGlobalTransportSettings(settings []*TransportConfig) error

func BindAddressFromContext added in v3.45.1

func BindAddressFromContext(ctx context.Context) net.Destination

func ContextWithBindAddress added in v3.45.1

func ContextWithBindAddress(ctx context.Context, dest net.Destination) context.Context

func ContextWithStreamSettings

func ContextWithStreamSettings(ctx context.Context, streamSettings *MemoryStreamConfig) context.Context

func CreateTransportConfig

func CreateTransportConfig(protocol TransportProtocol) (interface{}, error)

func CreateTransportConfigByName added in v3.37.1

func CreateTransportConfigByName(name string) (interface{}, error)

func DialSystem

func DialSystem(ctx context.Context, dest net.Destination) (net.Conn, error)

DialSystem calls system dialer to create a network connection.

func ListenSystem added in v3.45.1

func ListenSystem(ctx context.Context, addr net.Addr) (net.Listener, error)

func ListenSystemPacket added in v3.45.1

func ListenSystemPacket(ctx context.Context, addr net.Addr) (net.PacketConn, error)

func RegisterProtocolConfigCreator

func RegisterProtocolConfigCreator(protocol TransportProtocol, creator ConfigCreator) error

func RegisterProtocolConfigCreatorByName added in v3.37.1

func RegisterProtocolConfigCreatorByName(name string, creator ConfigCreator) error

func RegisterTransportDialer

func RegisterTransportDialer(protocol string, dialer dialFunc) error

RegisterTransportDialer registers a Dialer with given name.

func RegisterTransportListener

func RegisterTransportListener(protocol string, listener ListenFunc) error

func UseAlternativeSystemDialer

func UseAlternativeSystemDialer(dialer SystemDialer)

UseAlternativeSystemDialer replaces the current system dialer with a given one. Caller must ensure there is no race condition.

Types

type ConfigCreator

type ConfigCreator func() interface{}

type ConnHandler added in v3.8.1

type ConnHandler func(Connection)

type Connection

type Connection interface {
	net.Conn
}

func Dial

func Dial(ctx context.Context, dest net.Destination) (Connection, error)

Dial dials a internet connection towards the given destination.

type ConnectionAuthenticator

type ConnectionAuthenticator interface {
	Client(net.Conn) net.Conn
	Server(net.Conn) net.Conn
}

func CreateConnectionAuthenticator

func CreateConnectionAuthenticator(config interface{}) (ConnectionAuthenticator, error)

type DefaultListener added in v3.45.1

type DefaultListener struct{}

func (*DefaultListener) Listen added in v3.45.1

func (*DefaultListener) Listen(ctx context.Context, addr net.Addr) (net.Listener, error)

func (*DefaultListener) ListenPacket added in v3.45.1

func (*DefaultListener) ListenPacket(ctx context.Context, addr net.Addr) (net.PacketConn, error)

type DefaultSystemDialer

type DefaultSystemDialer struct {
}

func (DefaultSystemDialer) Dial

type Dialer

type Dialer interface {
	// Dial dials a system connection to the given destination.
	Dial(ctx context.Context, destination net.Destination) (Connection, error)
}

Dialer is the interface for dialing outbound connections.

type ListenFunc

type ListenFunc func(ctx context.Context, address net.Address, port net.Port, handler ConnHandler) (Listener, error)

type Listener

type Listener interface {
	Close() error
	Addr() net.Addr
}

func ListenTCP

func ListenTCP(ctx context.Context, address net.Address, port net.Port, handler ConnHandler) (Listener, error)

type MemoryStreamConfig added in v3.45.1

type MemoryStreamConfig struct {
	ProtocolName     string
	ProtocolSettings interface{}
	SecurityType     string
	SecuritySettings interface{}
	SocketSettings   *SocketConfig
}

MemoryStreamConfig is a parsed form of StreamConfig. This is used to reduce number of Protobuf parsing.

func StreamSettingsFromContext

func StreamSettingsFromContext(ctx context.Context) *MemoryStreamConfig

func ToMemoryStreamConfig added in v3.45.1

func ToMemoryStreamConfig(s *StreamConfig) (*MemoryStreamConfig, error)

ToMemoryStreamConfig converts a StreamConfig to MemoryStreamConfig. It returns a default non-nil MemoryStreamConfig for nil input.

type PacketHeader

type PacketHeader interface {
	Size() int32
	Write([]byte) (int, error)
}

func CreatePacketHeader

func CreatePacketHeader(config interface{}) (PacketHeader, error)

type ProxyConfig

type ProxyConfig struct {
	Tag                  string   `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ProxyConfig) Descriptor

func (*ProxyConfig) Descriptor() ([]byte, []int)

func (*ProxyConfig) GetTag

func (m *ProxyConfig) GetTag() string

func (*ProxyConfig) HasTag

func (c *ProxyConfig) HasTag() bool

func (*ProxyConfig) ProtoMessage

func (*ProxyConfig) ProtoMessage()

func (*ProxyConfig) Reset

func (m *ProxyConfig) Reset()

func (*ProxyConfig) String

func (m *ProxyConfig) String() string

func (*ProxyConfig) XXX_DiscardUnknown added in v3.23.1

func (m *ProxyConfig) XXX_DiscardUnknown()

func (*ProxyConfig) XXX_Marshal added in v3.23.1

func (m *ProxyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ProxyConfig) XXX_Merge added in v3.23.1

func (m *ProxyConfig) XXX_Merge(src proto.Message)

func (*ProxyConfig) XXX_Size added in v3.23.1

func (m *ProxyConfig) XXX_Size() int

func (*ProxyConfig) XXX_Unmarshal added in v3.23.1

func (m *ProxyConfig) XXX_Unmarshal(b []byte) error

type SimpleSystemDialer

type SimpleSystemDialer struct {
	// contains filtered or unexported fields
}

func (*SimpleSystemDialer) Dial

type SocketConfig added in v3.45.1

type SocketConfig struct {
	// Mark of the connection. If non-zero, the value will be set to SO_MARK.
	Mark int32 `protobuf:"varint,1,opt,name=mark,proto3" json:"mark,omitempty"`
	// TFO is the state of TFO settings.
	Tfo SocketConfig_TCPFastOpenState `protobuf:"varint,2,opt,name=tfo,proto3,enum=v2ray.core.transport.internet.SocketConfig_TCPFastOpenState" json:"tfo,omitempty"`
	// TProxy is for enabling TProxy socket option.
	Tproxy SocketConfig_TProxyMode `protobuf:"varint,3,opt,name=tproxy,proto3,enum=v2ray.core.transport.internet.SocketConfig_TProxyMode" json:"tproxy,omitempty"`
	// ReceiveOriginalDestAddress is for enabling IP_RECVORIGDSTADDR socket option.
	// This option is for UDP only.
	ReceiveOriginalDestAddress bool     `` /* 144-byte string literal not displayed */
	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
	XXX_unrecognized           []byte   `json:"-"`
	XXX_sizecache              int32    `json:"-"`
}

SocketConfig is options to be applied on network sockets.

func (*SocketConfig) Descriptor added in v3.45.1

func (*SocketConfig) Descriptor() ([]byte, []int)

func (*SocketConfig) GetMark added in v3.45.1

func (m *SocketConfig) GetMark() int32

func (*SocketConfig) GetReceiveOriginalDestAddress added in v3.45.1

func (m *SocketConfig) GetReceiveOriginalDestAddress() bool

func (*SocketConfig) GetTfo added in v3.45.1

func (*SocketConfig) GetTproxy added in v3.45.1

func (m *SocketConfig) GetTproxy() SocketConfig_TProxyMode

func (*SocketConfig) ProtoMessage added in v3.45.1

func (*SocketConfig) ProtoMessage()

func (*SocketConfig) Reset added in v3.45.1

func (m *SocketConfig) Reset()

func (*SocketConfig) String added in v3.45.1

func (m *SocketConfig) String() string

func (*SocketConfig) XXX_DiscardUnknown added in v3.45.1

func (m *SocketConfig) XXX_DiscardUnknown()

func (*SocketConfig) XXX_Marshal added in v3.45.1

func (m *SocketConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SocketConfig) XXX_Merge added in v3.45.1

func (m *SocketConfig) XXX_Merge(src proto.Message)

func (*SocketConfig) XXX_Size added in v3.45.1

func (m *SocketConfig) XXX_Size() int

func (*SocketConfig) XXX_Unmarshal added in v3.45.1

func (m *SocketConfig) XXX_Unmarshal(b []byte) error

type SocketConfig_TCPFastOpenState added in v3.45.1

type SocketConfig_TCPFastOpenState int32
const (
	// AsIs is to leave the current TFO state as is, unmodified.
	SocketConfig_AsIs SocketConfig_TCPFastOpenState = 0
	// Enable is for enabling TFO explictly.
	SocketConfig_Enable SocketConfig_TCPFastOpenState = 1
	// Disable is for disabling TFO explictly.
	SocketConfig_Disable SocketConfig_TCPFastOpenState = 2
)

func (SocketConfig_TCPFastOpenState) EnumDescriptor added in v3.45.1

func (SocketConfig_TCPFastOpenState) EnumDescriptor() ([]byte, []int)

func (SocketConfig_TCPFastOpenState) String added in v3.45.1

type SocketConfig_TProxyMode added in v3.45.1

type SocketConfig_TProxyMode int32
const (
	// TProxy is off.
	SocketConfig_Off SocketConfig_TProxyMode = 0
	// TProxy mode.
	SocketConfig_TProxy SocketConfig_TProxyMode = 1
	// Redirect mode.
	SocketConfig_Redirect SocketConfig_TProxyMode = 2
)

func (SocketConfig_TProxyMode) EnumDescriptor added in v3.45.1

func (SocketConfig_TProxyMode) EnumDescriptor() ([]byte, []int)

func (SocketConfig_TProxyMode) IsEnabled added in v3.45.1

func (m SocketConfig_TProxyMode) IsEnabled() bool

func (SocketConfig_TProxyMode) String added in v3.45.1

func (x SocketConfig_TProxyMode) String() string

type StatCouterConnection added in v3.17.1

type StatCouterConnection struct {
	Connection
	Uplink   stats.Counter
	Downlink stats.Counter
}

func (*StatCouterConnection) Read added in v3.17.1

func (c *StatCouterConnection) Read(b []byte) (int, error)

func (*StatCouterConnection) Write added in v3.17.1

func (c *StatCouterConnection) Write(b []byte) (int, error)

type StreamConfig

type StreamConfig struct {
	// Effective network. Deprecated. Use the string form below.
	Protocol TransportProtocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=v2ray.core.transport.internet.TransportProtocol" json:"protocol,omitempty"` // Deprecated: Do not use.
	// Effective network.
	ProtocolName      string             `protobuf:"bytes,5,opt,name=protocol_name,json=protocolName,proto3" json:"protocol_name,omitempty"`
	TransportSettings []*TransportConfig `protobuf:"bytes,2,rep,name=transport_settings,json=transportSettings,proto3" json:"transport_settings,omitempty"`
	// Type of security. Must be a message name of the settings proto.
	SecurityType string `protobuf:"bytes,3,opt,name=security_type,json=securityType,proto3" json:"security_type,omitempty"`
	// Settings for transport security. For now the only choice is TLS.
	SecuritySettings     []*serial.TypedMessage `protobuf:"bytes,4,rep,name=security_settings,json=securitySettings,proto3" json:"security_settings,omitempty"`
	SocketSettings       *SocketConfig          `protobuf:"bytes,6,opt,name=socket_settings,json=socketSettings,proto3" json:"socket_settings,omitempty"`
	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
	XXX_unrecognized     []byte                 `json:"-"`
	XXX_sizecache        int32                  `json:"-"`
}

func (*StreamConfig) Descriptor

func (*StreamConfig) Descriptor() ([]byte, []int)

func (*StreamConfig) GetEffectiveProtocol

func (c *StreamConfig) GetEffectiveProtocol() string

func (*StreamConfig) GetEffectiveSecuritySettings

func (c *StreamConfig) GetEffectiveSecuritySettings() (interface{}, error)

func (*StreamConfig) GetEffectiveTransportSettings

func (c *StreamConfig) GetEffectiveTransportSettings() (interface{}, error)

func (*StreamConfig) GetProtocol deprecated

func (m *StreamConfig) GetProtocol() TransportProtocol

Deprecated: Do not use.

func (*StreamConfig) GetProtocolName added in v3.37.1

func (m *StreamConfig) GetProtocolName() string

func (*StreamConfig) GetSecuritySettings

func (m *StreamConfig) GetSecuritySettings() []*serial.TypedMessage

func (*StreamConfig) GetSecurityType

func (m *StreamConfig) GetSecurityType() string

func (*StreamConfig) GetSocketSettings added in v3.45.1

func (m *StreamConfig) GetSocketSettings() *SocketConfig

func (*StreamConfig) GetTransportSettings

func (m *StreamConfig) GetTransportSettings() []*TransportConfig

func (*StreamConfig) GetTransportSettingsFor

func (c *StreamConfig) GetTransportSettingsFor(protocol string) (interface{}, error)

func (*StreamConfig) HasSecuritySettings

func (c *StreamConfig) HasSecuritySettings() bool

func (*StreamConfig) ProtoMessage

func (*StreamConfig) ProtoMessage()

func (*StreamConfig) Reset

func (m *StreamConfig) Reset()

func (*StreamConfig) String

func (m *StreamConfig) String() string

func (*StreamConfig) XXX_DiscardUnknown added in v3.23.1

func (m *StreamConfig) XXX_DiscardUnknown()

func (*StreamConfig) XXX_Marshal added in v3.23.1

func (m *StreamConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*StreamConfig) XXX_Merge added in v3.23.1

func (m *StreamConfig) XXX_Merge(src proto.Message)

func (*StreamConfig) XXX_Size added in v3.23.1

func (m *StreamConfig) XXX_Size() int

func (*StreamConfig) XXX_Unmarshal added in v3.23.1

func (m *StreamConfig) XXX_Unmarshal(b []byte) error

type SystemDialer

type SystemDialer interface {
	Dial(ctx context.Context, source net.Address, destination net.Destination) (net.Conn, error)
}

func WithAdapter

func WithAdapter(dialer SystemDialerAdapter) SystemDialer

type SystemDialerAdapter

type SystemDialerAdapter interface {
	Dial(network string, address string) (net.Conn, error)
}

type TransportConfig

type TransportConfig struct {
	// Type of network that this settings supports.
	// Deprecated. Use the string form below.
	Protocol TransportProtocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=v2ray.core.transport.internet.TransportProtocol" json:"protocol,omitempty"`
	// Type of network that this settings supports.
	ProtocolName string `protobuf:"bytes,3,opt,name=protocol_name,json=protocolName,proto3" json:"protocol_name,omitempty"`
	// Specific settings. Must be of the transports.
	Settings             *serial.TypedMessage `protobuf:"bytes,2,opt,name=settings,proto3" json:"settings,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (*TransportConfig) Descriptor

func (*TransportConfig) Descriptor() ([]byte, []int)

func (*TransportConfig) GetProtocol

func (m *TransportConfig) GetProtocol() TransportProtocol

func (*TransportConfig) GetProtocolName added in v3.37.1

func (m *TransportConfig) GetProtocolName() string

func (*TransportConfig) GetSettings

func (m *TransportConfig) GetSettings() *serial.TypedMessage

func (*TransportConfig) GetTypedSettings

func (c *TransportConfig) GetTypedSettings() (interface{}, error)

func (*TransportConfig) GetUnifiedProtocolName added in v3.37.1

func (c *TransportConfig) GetUnifiedProtocolName() string

func (*TransportConfig) ProtoMessage

func (*TransportConfig) ProtoMessage()

func (*TransportConfig) Reset

func (m *TransportConfig) Reset()

func (*TransportConfig) String

func (m *TransportConfig) String() string

func (*TransportConfig) XXX_DiscardUnknown added in v3.23.1

func (m *TransportConfig) XXX_DiscardUnknown()

func (*TransportConfig) XXX_Marshal added in v3.23.1

func (m *TransportConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TransportConfig) XXX_Merge added in v3.23.1

func (m *TransportConfig) XXX_Merge(src proto.Message)

func (*TransportConfig) XXX_Size added in v3.23.1

func (m *TransportConfig) XXX_Size() int

func (*TransportConfig) XXX_Unmarshal added in v3.23.1

func (m *TransportConfig) XXX_Unmarshal(b []byte) error

type TransportProtocol

type TransportProtocol int32
const (
	TransportProtocol_TCP          TransportProtocol = 0
	TransportProtocol_UDP          TransportProtocol = 1
	TransportProtocol_MKCP         TransportProtocol = 2
	TransportProtocol_WebSocket    TransportProtocol = 3
	TransportProtocol_HTTP         TransportProtocol = 4
	TransportProtocol_DomainSocket TransportProtocol = 5
)

func (TransportProtocol) EnumDescriptor

func (TransportProtocol) EnumDescriptor() ([]byte, []int)

func (TransportProtocol) String

func (x TransportProtocol) String() string

Directories

Path Synopsis
headers
tls
utp
Package kcp - A Fast and Reliable ARQ Protocol Acknowledgement: skywind3000@github for inventing the KCP protocol xtaci@github for translating to Golang
Package kcp - A Fast and Reliable ARQ Protocol Acknowledgement: skywind3000@github for inventing the KCP protocol xtaci@github for translating to Golang
Package websocket implements Websocket transport Websocket transport implements an HTTP(S) compliable, surveillance proof transport method with plausible deniability.
Package websocket implements Websocket transport Websocket transport implements an HTTP(S) compliable, surveillance proof transport method with plausible deniability.

Jump to

Keyboard shortcuts

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