ws

package
v2.8.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2016 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package ws is a generated protocol buffer package.

It is generated from these files:

v2ray.com/core/transport/internet/ws/config.proto

It has these top-level messages:

ConnectionReuse
Config

Package ws implements Websocket transport

Websocket transport implements a HTTP(S) compliable, surveillance proof transport method with plausible deniability.

To configure such a listener, set streamSettings to be ws. A http(s) listener will be listening at the port you have configured.

There is additional configure can be made at transport configure.

"wsSettings":{
      "Path":"ws", // the path our ws handler bind
      "Pto": "wss/ws", // the transport protocol we are using ws or wss(listen ws with tls)
      "Cert":"cert.pem", // if you have configured to use wss, configure your cert here
      "PrivKey":"priv.pem" //if you have configured to use wss, configure your privatekey here
    }

To configure such a Dialer, set streamSettings to be ws.

There is additional configure can be made at transport configure.

"wsSettings":{
      "Path":"ws", // the path our ws handler bind
      "Pto": "wss/ws", // the transport protocol we are using ws or wss(listen ws with tls)
    }

It is worth noting that accepting a non-valid cert is not supported as a self-signed or invalid cert can be a sign of a website that is not correctly configured and lead to additional investigation.

This transport was disscussed at https://github.com/v2ray/v2ray-core/issues/224

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClosedListener = errors.New("Listener is closed.")
)
View Source
var (
	ErrInvalidConn = errors.New("Invalid Connection.")
)
View Source
var StoppedError = errors.New("Listener stopped")

Functions

func FindFirstValid

func FindFirstValid(list []*AwaitingConnection) int

func ListenWS

func ListenWS(address v2net.Address, port v2net.Port, options internet.ListenOptions) (internet.Listener, error)

Types

type AwaitingConnection

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

func (*AwaitingConnection) Expired

func (v *AwaitingConnection) Expired() bool

type Config

type Config struct {
	// Whether or not to reuse WebSocket connections.
	ConnectionReuse *ConnectionReuse `protobuf:"bytes,1,opt,name=connection_reuse,json=connectionReuse" json:"connection_reuse,omitempty"`
	// URL path to the WebSocket service. Empty value means root(/).
	Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"`
}

func (*Config) Descriptor

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

func (*Config) GetConnectionReuse

func (m *Config) GetConnectionReuse() *ConnectionReuse

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) Reset

func (m *Config) Reset()

func (*Config) String

func (m *Config) String() string

type Connection

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

func NewConnection

func NewConnection(dest string, conn *wsconn, manager ConnectionManager, config *Config) *Connection

func (*Connection) Close

func (v *Connection) Close() error

func (*Connection) LocalAddr

func (v *Connection) LocalAddr() net.Addr

func (*Connection) Read

func (v *Connection) Read(b []byte) (int, error)

func (*Connection) RemoteAddr

func (v *Connection) RemoteAddr() net.Addr

func (*Connection) Reusable

func (v *Connection) Reusable() bool

func (*Connection) SetDeadline

func (v *Connection) SetDeadline(t time.Time) error

func (*Connection) SetReadDeadline

func (v *Connection) SetReadDeadline(t time.Time) error

func (*Connection) SetReusable

func (v *Connection) SetReusable(reusable bool)

func (*Connection) SetWriteDeadline

func (v *Connection) SetWriteDeadline(t time.Time) error

func (*Connection) SysFd

func (v *Connection) SysFd() (int, error)

func (*Connection) Write

func (v *Connection) Write(b []byte) (int, error)

type ConnectionCache

type ConnectionCache struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewConnectionCache

func NewConnectionCache() *ConnectionCache

func (*ConnectionCache) Cleanup

func (v *ConnectionCache) Cleanup()

func (*ConnectionCache) Get

func (v *ConnectionCache) Get(dest string) net.Conn

func (*ConnectionCache) Recycle

func (v *ConnectionCache) Recycle(dest string, conn *wsconn)

type ConnectionManager

type ConnectionManager interface {
	Recycle(string, *wsconn)
}

type ConnectionReuse

type ConnectionReuse struct {
	Enable bool `protobuf:"varint,1,opt,name=enable" json:"enable,omitempty"`
}

func (*ConnectionReuse) Descriptor

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

func (*ConnectionReuse) IsEnabled

func (v *ConnectionReuse) IsEnabled() bool

func (*ConnectionReuse) ProtoMessage

func (*ConnectionReuse) ProtoMessage()

func (*ConnectionReuse) Reset

func (m *ConnectionReuse) Reset()

func (*ConnectionReuse) String

func (m *ConnectionReuse) String() string

type ConnectionWithError

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

type StoppableListener

type StoppableListener struct {
	net.Listener //Wrapped listener
}

func NewStoppableListener

func NewStoppableListener(l net.Listener) (*StoppableListener, error)

func (*StoppableListener) Accept

func (sl *StoppableListener) Accept() (net.Conn, error)

func (*StoppableListener) Stop

func (sl *StoppableListener) Stop()

type WSListener

type WSListener struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*WSListener) Accept

func (v *WSListener) Accept() (internet.Connection, error)

func (*WSListener) Addr

func (v *WSListener) Addr() net.Addr

func (*WSListener) Close

func (v *WSListener) Close() error

func (*WSListener) Recycle

func (v *WSListener) Recycle(dest string, conn *wsconn)

Jump to

Keyboard shortcuts

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