shadowsocks

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2019 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MakeTestPayload added in v1.0.3

func MakeTestPayload(size int) []byte

func NewAddr added in v1.0.6

func NewAddr(address, network string) net.Addr

NewAddr returns a net.Addr that holds an address of the form `host:port` with a domain name or IP as host. Used for SOCKS addressing.

Types

type CipherEntry added in v1.0.3

type CipherEntry struct {
	ID     string
	Cipher shadowaead.Cipher
	// contains filtered or unexported fields
}

CipherEntry holds a Cipher with an identifier. The public fields are constant, but lastAddress is mutable under cipherList.mu.

type CipherList added in v1.0.3

type CipherList interface {
	PushBack(id string, cipher shadowaead.Cipher) *list.Element
	SafeSnapshotForClientIP(clientIP net.IP) []*list.Element
	SafeMarkUsedByClientIP(e *list.Element, clientIP net.IP)
}

CipherList is a list of CipherEntry elements that allows for thread-safe snapshotting and moving to front.

func MakeTestCiphers added in v1.0.3

func MakeTestCiphers(numCiphers int) (CipherList, error)

func NewCipherList added in v1.0.3

func NewCipherList() CipherList

NewCipherList creates an empty CipherList

type Client added in v1.0.6

type Client interface {
	// DialTCP connects to `raddr` over TCP though a Shadowsocks proxy.
	// `laddr` is a local bind address, a local address is automatically chosen if nil.
	// `raddr` has the form `host:port`, where `host` can be a domain name or IP address.
	DialTCP(laddr *net.TCPAddr, raddr string) (onet.DuplexConn, error)

	// ListenUDP relays UDP packets though a Shadowsocks proxy.
	// `laddr` is a local bind address, a local address is automatically chosen if nil.
	ListenUDP(laddr *net.UDPAddr) (net.PacketConn, error)
}

Client is a client for Shadowsocks TCP and UDP connections.

func NewClient added in v1.0.6

func NewClient(host string, port int, password, cipher string) (Client, error)

NewClient creates a client that routes connections to a Shadowsocks proxy listening at `host:port`, with authentication parameters `cipher` (AEAD) and `password`. TODO: add a dialer argument to support proxy chaining and transport changes.

type ShadowsocksReader

type ShadowsocksReader interface {
	io.Reader
	io.WriterTo
}

ShadowsocksReader is an io.Reader that also implements io.WriterTo to allow for piping the data without extra allocations and copies.

func NewShadowsocksReader

func NewShadowsocksReader(reader io.Reader, ssCipher shadowaead.Cipher) ShadowsocksReader

NewShadowsocksReader creates a Reader that decrypts the given Reader using the shadowsocks protocol with the given shadowsocks cipher.

type ShadowsocksWriter

type ShadowsocksWriter interface {
	io.Writer
	io.ReaderFrom
}

ShadowsocksWriter is an io.Writer that also implements io.ReaderFrom to allow for piping the data without extra allocations and copies.

func NewShadowsocksWriter

func NewShadowsocksWriter(writer io.Writer, ssCipher shadowaead.Cipher) ShadowsocksWriter

NewShadowsocksWriter creates a Writer that encrypts the given Writer using the shadowsocks protocol with the given shadowsocks cipher.

type TCPService

type TCPService interface {
	Start()
	Stop() error
}

TCPService is a Shadowsocks TCP service that can be started and stopped.

func NewTCPService

func NewTCPService(listener *net.TCPListener, ciphers *CipherList, m metrics.ShadowsocksMetrics, timeout time.Duration) TCPService

NewTCPService creates a TCPService

type UDPService

type UDPService interface {
	Start()
	Stop() error
}

UDPService is a UDP shadowsocks service that can be started and stopped.

func NewUDPService

func NewUDPService(clientConn net.PacketConn, natTimeout time.Duration, cipherList *CipherList, m metrics.ShadowsocksMetrics) UDPService

NewUDPService creates a UDPService

Jump to

Keyboard shortcuts

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