outbound

package
v0.0.0-...-45a9176 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: GPL-3.0 Imports: 71 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultStreamReceiveWindow     = 15728640 // 15 MB/s
	DefaultConnectionReceiveWindow = 67108864 // 64 MB/s

	DefaultALPN        = "hysteria"
	DefaultProtocol    = "udp"
	DefaultHopInterval = 10
)

Variables

View Source
var ErrUDPRemoteAddrMismatch = errors.New("udp packet dropped due to mismatched remote address")

Functions

func NewConn

func NewConn(c net.Conn, a C.ProxyAdapter) C.Conn

Types

type Base

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

func NewBase

func NewBase(opt BaseOption) *Base

func (*Base) Addr

func (b *Base) Addr() string

Addr implements C.ProxyAdapter

func (*Base) DialContext

func (b *Base) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error)

func (*Base) DialContextWithDialer

func (b *Base) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Base) DialOptions

func (b *Base) DialOptions(opts ...dialer.Option) []dialer.Option

DialOptions return []dialer.Option from struct

func (*Base) Id

func (b *Base) Id() string

Id implements C.ProxyAdapter

func (*Base) ListenPacketContext

func (b *Base) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

func (*Base) ListenPacketWithDialer

func (b *Base) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Base) MarshalJSON

func (b *Base) MarshalJSON() ([]byte, error)

MarshalJSON implements C.ProxyAdapter

func (*Base) Name

func (b *Base) Name() string

Name implements C.ProxyAdapter

func (*Base) StreamConn

func (b *Base) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Base) SupportTFO

func (b *Base) SupportTFO() bool

SupportTFO implements C.ProxyAdapter

func (*Base) SupportUDP

func (b *Base) SupportUDP() bool

SupportUDP implements C.ProxyAdapter

func (*Base) SupportUOT

func (b *Base) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*Base) SupportWithDialer

func (b *Base) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

func (*Base) SupportXUDP

func (b *Base) SupportXUDP() bool

SupportXUDP implements C.ProxyAdapter

func (*Base) Type

func (b *Base) Type() C.AdapterType

Type implements C.ProxyAdapter

func (*Base) Unwrap

func (b *Base) Unwrap(metadata *C.Metadata, touch bool) C.Proxy

Unwrap implements C.ProxyAdapter

type BaseOption

type BaseOption struct {
	Name        string
	Addr        string
	Type        C.AdapterType
	UDP         bool
	XUDP        bool
	TFO         bool
	Interface   string
	RoutingMark int
	Prefer      C.DNSPrefer
}

type BasicOption

type BasicOption struct {
	Interface   string `proxy:"interface-name,omitempty" group:"interface-name,omitempty"`
	RoutingMark int    `proxy:"routing-mark,omitempty" group:"routing-mark,omitempty"`
	IPVersion   string `proxy:"ip-version,omitempty" group:"ip-version,omitempty"`
}

type Direct

type Direct struct {
	*Base
}

func NewCompatible

func NewCompatible() *Direct

func NewDirect

func NewDirect() *Direct

func (*Direct) DialContext

func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error)

DialContext implements C.ProxyAdapter

func (*Direct) ListenPacketContext

func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

type GrpcOptions

type GrpcOptions struct {
	GrpcServiceName string `proxy:"grpc-service-name,omitempty"`
}

type HTTP2Options

type HTTP2Options struct {
	Host []string `proxy:"host,omitempty"`
	Path string   `proxy:"path,omitempty"`
}

type HTTPOptions

type HTTPOptions struct {
	Method  string              `proxy:"method,omitempty"`
	Path    []string            `proxy:"path,omitempty"`
	Headers map[string][]string `proxy:"headers,omitempty"`
}

type Http

type Http struct {
	*Base
	// contains filtered or unexported fields
}

func NewHttp

func NewHttp(option HttpOption) (*Http, error)

func (*Http) DialContext

func (h *Http) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Http) DialContextWithDialer

func (h *Http) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Http) StreamConn

func (h *Http) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Http) SupportWithDialer

func (h *Http) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type HttpOption

type HttpOption struct {
	BasicOption
	Name           string            `proxy:"name"`
	Server         string            `proxy:"server"`
	Port           int               `proxy:"port"`
	UserName       string            `proxy:"username,omitempty"`
	Password       string            `proxy:"password,omitempty"`
	TLS            bool              `proxy:"tls,omitempty"`
	SNI            string            `proxy:"sni,omitempty"`
	SkipCertVerify bool              `proxy:"skip-cert-verify,omitempty"`
	Fingerprint    string            `proxy:"fingerprint,omitempty"`
	Headers        map[string]string `proxy:"headers,omitempty"`
}

type Hysteria

type Hysteria struct {
	*Base
	// contains filtered or unexported fields
}

func NewHysteria

func NewHysteria(option HysteriaOption) (*Hysteria, error)

func (*Hysteria) DialContext

func (h *Hysteria) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error)

func (*Hysteria) ListenPacketContext

func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

type HysteriaOption

type HysteriaOption struct {
	BasicOption
	Name                string   `proxy:"name"`
	Server              string   `proxy:"server"`
	Port                int      `proxy:"port,omitempty"`
	Ports               string   `proxy:"ports,omitempty"`
	Protocol            string   `proxy:"protocol,omitempty"`
	ObfsProtocol        string   `proxy:"obfs-protocol,omitempty"` // compatible with Stash
	Up                  string   `proxy:"up"`
	UpSpeed             int      `proxy:"up-speed,omitempty"` // compatible with Stash
	Down                string   `proxy:"down"`
	DownSpeed           int      `proxy:"down-speed,omitempty"` // compatible with Stash
	Auth                string   `proxy:"auth,omitempty"`
	AuthString          string   `proxy:"auth-str,omitempty"`
	Obfs                string   `proxy:"obfs,omitempty"`
	SNI                 string   `proxy:"sni,omitempty"`
	SkipCertVerify      bool     `proxy:"skip-cert-verify,omitempty"`
	Fingerprint         string   `proxy:"fingerprint,omitempty"`
	ALPN                []string `proxy:"alpn,omitempty"`
	CustomCA            string   `proxy:"ca,omitempty"`
	CustomCAString      string   `proxy:"ca-str,omitempty"`
	ReceiveWindowConn   int      `proxy:"recv-window-conn,omitempty"`
	ReceiveWindow       int      `proxy:"recv-window,omitempty"`
	DisableMTUDiscovery bool     `proxy:"disable-mtu-discovery,omitempty"`
	FastOpen            bool     `proxy:"fast-open,omitempty"`
	HopInterval         int      `proxy:"hop-interval,omitempty"`
}

func (*HysteriaOption) Speed

func (c *HysteriaOption) Speed() (uint64, uint64, error)

type Reject

type Reject struct {
	*Base
}

func NewPass

func NewPass() *Reject

func NewReject

func NewReject() *Reject

func (*Reject) DialContext

func (r *Reject) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error)

DialContext implements C.ProxyAdapter

func (*Reject) ListenPacketContext

func (r *Reject) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

type ShadowSocks

type ShadowSocks struct {
	*Base
	// contains filtered or unexported fields
}

func NewShadowSocks

func NewShadowSocks(option ShadowSocksOption) (*ShadowSocks, error)

func (*ShadowSocks) DialContext

func (ss *ShadowSocks) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*ShadowSocks) DialContextWithDialer

func (ss *ShadowSocks) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*ShadowSocks) ListenPacketContext

func (ss *ShadowSocks) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

func (*ShadowSocks) ListenPacketOnStreamConn

func (ss *ShadowSocks) ListenPacketOnStreamConn(c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketOnStreamConn implements C.ProxyAdapter

func (*ShadowSocks) ListenPacketWithDialer

func (ss *ShadowSocks) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*ShadowSocks) StreamConn

func (ss *ShadowSocks) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*ShadowSocks) SupportUOT

func (ss *ShadowSocks) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*ShadowSocks) SupportWithDialer

func (ss *ShadowSocks) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type ShadowSocksOption

type ShadowSocksOption struct {
	BasicOption
	Name       string         `proxy:"name"`
	Server     string         `proxy:"server"`
	Port       int            `proxy:"port"`
	Password   string         `proxy:"password"`
	Cipher     string         `proxy:"cipher"`
	UDP        bool           `proxy:"udp,omitempty"`
	Plugin     string         `proxy:"plugin,omitempty"`
	PluginOpts map[string]any `proxy:"plugin-opts,omitempty"`
	UDPOverTCP bool           `proxy:"udp-over-tcp,omitempty"`
}

type ShadowSocksR

type ShadowSocksR struct {
	*Base
	// contains filtered or unexported fields
}

func NewShadowSocksR

func NewShadowSocksR(option ShadowSocksROption) (*ShadowSocksR, error)

func (*ShadowSocksR) DialContext

func (ssr *ShadowSocksR) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*ShadowSocksR) DialContextWithDialer

func (ssr *ShadowSocksR) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*ShadowSocksR) ListenPacketContext

func (ssr *ShadowSocksR) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

func (*ShadowSocksR) ListenPacketWithDialer

func (ssr *ShadowSocksR) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*ShadowSocksR) StreamConn

func (ssr *ShadowSocksR) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*ShadowSocksR) SupportWithDialer

func (ssr *ShadowSocksR) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type ShadowSocksROption

type ShadowSocksROption struct {
	BasicOption
	Name          string `proxy:"name"`
	Server        string `proxy:"server"`
	Port          int    `proxy:"port"`
	Password      string `proxy:"password"`
	Cipher        string `proxy:"cipher"`
	Obfs          string `proxy:"obfs"`
	ObfsParam     string `proxy:"obfs-param,omitempty"`
	Protocol      string `proxy:"protocol"`
	ProtocolParam string `proxy:"protocol-param,omitempty"`
	UDP           bool   `proxy:"udp,omitempty"`
}

type Snell

type Snell struct {
	*Base
	// contains filtered or unexported fields
}

func NewSnell

func NewSnell(option SnellOption) (*Snell, error)

func (*Snell) DialContext

func (s *Snell) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Snell) DialContextWithDialer

func (s *Snell) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Snell) ListenPacketContext

func (s *Snell) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error)

ListenPacketContext implements C.ProxyAdapter

func (*Snell) ListenPacketWithDialer

func (s *Snell) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.PacketConn, error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Snell) StreamConn

func (s *Snell) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Snell) SupportUOT

func (s *Snell) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*Snell) SupportWithDialer

func (s *Snell) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type SnellOption

type SnellOption struct {
	BasicOption
	Name     string         `proxy:"name"`
	Server   string         `proxy:"server"`
	Port     int            `proxy:"port"`
	Psk      string         `proxy:"psk"`
	UDP      bool           `proxy:"udp,omitempty"`
	Version  int            `proxy:"version,omitempty"`
	ObfsOpts map[string]any `proxy:"obfs-opts,omitempty"`
}

type Socks5

type Socks5 struct {
	*Base
	// contains filtered or unexported fields
}

func NewSocks5

func NewSocks5(option Socks5Option) (*Socks5, error)

func (*Socks5) DialContext

func (ss *Socks5) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Socks5) DialContextWithDialer

func (ss *Socks5) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Socks5) ListenPacketContext

func (ss *Socks5) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

ListenPacketContext implements C.ProxyAdapter

func (*Socks5) StreamConn

func (ss *Socks5) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Socks5) SupportWithDialer

func (ss *Socks5) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type Socks5Option

type Socks5Option struct {
	BasicOption
	Name           string `proxy:"name"`
	Server         string `proxy:"server"`
	Port           int    `proxy:"port"`
	UserName       string `proxy:"username,omitempty"`
	Password       string `proxy:"password,omitempty"`
	TLS            bool   `proxy:"tls,omitempty"`
	UDP            bool   `proxy:"udp,omitempty"`
	SkipCertVerify bool   `proxy:"skip-cert-verify,omitempty"`
	Fingerprint    string `proxy:"fingerprint,omitempty"`
}

type Trojan

type Trojan struct {
	*Base
	// contains filtered or unexported fields
}

func NewTrojan

func NewTrojan(option TrojanOption) (*Trojan, error)

func (*Trojan) DialContext

func (t *Trojan) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Trojan) DialContextWithDialer

func (t *Trojan) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Trojan) ListenPacketContext

func (t *Trojan) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

ListenPacketContext implements C.ProxyAdapter

func (*Trojan) ListenPacketOnStreamConn

func (t *Trojan) ListenPacketOnStreamConn(c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketOnStreamConn implements C.ProxyAdapter

func (*Trojan) ListenPacketWithDialer

func (t *Trojan) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Trojan) StreamConn

func (t *Trojan) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Trojan) SupportUOT

func (t *Trojan) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*Trojan) SupportWithDialer

func (t *Trojan) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type TrojanOption

type TrojanOption struct {
	BasicOption
	Name              string      `proxy:"name"`
	Server            string      `proxy:"server"`
	Port              int         `proxy:"port"`
	Password          string      `proxy:"password"`
	ALPN              []string    `proxy:"alpn,omitempty"`
	SNI               string      `proxy:"sni,omitempty"`
	SkipCertVerify    bool        `proxy:"skip-cert-verify,omitempty"`
	Fingerprint       string      `proxy:"fingerprint,omitempty"`
	UDP               bool        `proxy:"udp,omitempty"`
	Network           string      `proxy:"network,omitempty"`
	GrpcOpts          GrpcOptions `proxy:"grpc-opts,omitempty"`
	WSOpts            WSOptions   `proxy:"ws-opts,omitempty"`
	Flow              string      `proxy:"flow,omitempty"`
	FlowShow          bool        `proxy:"flow-show,omitempty"`
	ClientFingerprint string      `proxy:"client-fingerprint,omitempty"`
}

type Tuic

type Tuic struct {
	*Base
	// contains filtered or unexported fields
}

func NewTuic

func NewTuic(option TuicOption) (*Tuic, error)

func (*Tuic) DialContext

func (t *Tuic) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error)

DialContext implements C.ProxyAdapter

func (*Tuic) DialContextWithDialer

func (t *Tuic) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.Conn, error)

DialContextWithDialer implements C.ProxyAdapter

func (*Tuic) ListenPacketContext

func (t *Tuic) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

ListenPacketContext implements C.ProxyAdapter

func (*Tuic) ListenPacketWithDialer

func (t *Tuic) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Tuic) SupportWithDialer

func (t *Tuic) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type TuicOption

type TuicOption struct {
	BasicOption
	Name                  string   `proxy:"name"`
	Server                string   `proxy:"server"`
	Port                  int      `proxy:"port"`
	Token                 string   `proxy:"token"`
	Ip                    string   `proxy:"ip,omitempty"`
	HeartbeatInterval     int      `proxy:"heartbeat-interval,omitempty"`
	ALPN                  []string `proxy:"alpn,omitempty"`
	ReduceRtt             bool     `proxy:"reduce-rtt,omitempty"`
	RequestTimeout        int      `proxy:"request-timeout,omitempty"`
	UdpRelayMode          string   `proxy:"udp-relay-mode,omitempty"`
	CongestionController  string   `proxy:"congestion-controller,omitempty"`
	DisableSni            bool     `proxy:"disable-sni,omitempty"`
	MaxUdpRelayPacketSize int      `proxy:"max-udp-relay-packet-size,omitempty"`

	FastOpen            bool   `proxy:"fast-open,omitempty"`
	MaxOpenStreams      int    `proxy:"max-open-streams,omitempty"`
	SkipCertVerify      bool   `proxy:"skip-cert-verify,omitempty"`
	Fingerprint         string `proxy:"fingerprint,omitempty"`
	CustomCA            string `proxy:"ca,omitempty"`
	CustomCAString      string `proxy:"ca-str,omitempty"`
	ReceiveWindowConn   int    `proxy:"recv-window-conn,omitempty"`
	ReceiveWindow       int    `proxy:"recv-window,omitempty"`
	DisableMTUDiscovery bool   `proxy:"disable-mtu-discovery,omitempty"`
}

type Vless

type Vless struct {
	*Base
	// contains filtered or unexported fields
}

func NewVless

func NewVless(option VlessOption) (*Vless, error)

func (*Vless) DialContext

func (v *Vless) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Vless) DialContextWithDialer

func (v *Vless) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Vless) ListenPacketContext

func (v *Vless) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

ListenPacketContext implements C.ProxyAdapter

func (*Vless) ListenPacketOnStreamConn

func (v *Vless) ListenPacketOnStreamConn(c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketOnStreamConn implements C.ProxyAdapter

func (*Vless) ListenPacketWithDialer

func (v *Vless) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Vless) StreamConn

func (v *Vless) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

func (*Vless) SupportUOT

func (v *Vless) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*Vless) SupportWithDialer

func (v *Vless) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type VlessOption

type VlessOption struct {
	BasicOption
	Name              string            `proxy:"name"`
	Server            string            `proxy:"server"`
	Port              int               `proxy:"port"`
	UUID              string            `proxy:"uuid"`
	Flow              string            `proxy:"flow,omitempty"`
	FlowShow          bool              `proxy:"flow-show,omitempty"`
	TLS               bool              `proxy:"tls,omitempty"`
	UDP               bool              `proxy:"udp,omitempty"`
	PacketAddr        bool              `proxy:"packet-addr,omitempty"`
	XUDP              bool              `proxy:"xudp,omitempty"`
	PacketEncoding    string            `proxy:"packet-encoding,omitempty"`
	Network           string            `proxy:"network,omitempty"`
	HTTPOpts          HTTPOptions       `proxy:"http-opts,omitempty"`
	HTTP2Opts         HTTP2Options      `proxy:"h2-opts,omitempty"`
	GrpcOpts          GrpcOptions       `proxy:"grpc-opts,omitempty"`
	WSOpts            WSOptions         `proxy:"ws-opts,omitempty"`
	WSPath            string            `proxy:"ws-path,omitempty"`
	WSHeaders         map[string]string `proxy:"ws-headers,omitempty"`
	SkipCertVerify    bool              `proxy:"skip-cert-verify,omitempty"`
	Fingerprint       string            `proxy:"fingerprint,omitempty"`
	ServerName        string            `proxy:"servername,omitempty"`
	ClientFingerprint string            `proxy:"client-fingerprint,omitempty"`
}

type Vmess

type Vmess struct {
	*Base
	// contains filtered or unexported fields
}

func NewVmess

func NewVmess(option VmessOption) (*Vmess, error)

func (*Vmess) DialContext

func (v *Vmess) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

DialContext implements C.ProxyAdapter

func (*Vmess) DialContextWithDialer

func (v *Vmess) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error)

DialContextWithDialer implements C.ProxyAdapter

func (*Vmess) ListenPacketContext

func (v *Vmess) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

ListenPacketContext implements C.ProxyAdapter

func (*Vmess) ListenPacketOnStreamConn

func (v *Vmess) ListenPacketOnStreamConn(c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketOnStreamConn implements C.ProxyAdapter

func (*Vmess) ListenPacketWithDialer

func (v *Vmess) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error)

ListenPacketWithDialer implements C.ProxyAdapter

func (*Vmess) StreamConn

func (v *Vmess) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error)

StreamConn implements C.ProxyAdapter

func (*Vmess) SupportUOT

func (v *Vmess) SupportUOT() bool

SupportUOT implements C.ProxyAdapter

func (*Vmess) SupportWithDialer

func (v *Vmess) SupportWithDialer() bool

SupportWithDialer implements C.ProxyAdapter

type VmessOption

type VmessOption struct {
	BasicOption
	Name                string       `proxy:"name"`
	Server              string       `proxy:"server"`
	Port                int          `proxy:"port"`
	UUID                string       `proxy:"uuid"`
	AlterID             int          `proxy:"alterId"`
	Cipher              string       `proxy:"cipher"`
	UDP                 bool         `proxy:"udp,omitempty"`
	Network             string       `proxy:"network,omitempty"`
	TLS                 bool         `proxy:"tls,omitempty"`
	SkipCertVerify      bool         `proxy:"skip-cert-verify,omitempty"`
	Fingerprint         string       `proxy:"fingerprint,omitempty"`
	ServerName          string       `proxy:"servername,omitempty"`
	HTTPOpts            HTTPOptions  `proxy:"http-opts,omitempty"`
	HTTP2Opts           HTTP2Options `proxy:"h2-opts,omitempty"`
	GrpcOpts            GrpcOptions  `proxy:"grpc-opts,omitempty"`
	WSOpts              WSOptions    `proxy:"ws-opts,omitempty"`
	PacketAddr          bool         `proxy:"packet-addr,omitempty"`
	XUDP                bool         `proxy:"xudp,omitempty"`
	PacketEncoding      string       `proxy:"packet-encoding,omitempty"`
	GlobalPadding       bool         `proxy:"global-padding,omitempty"`
	AuthenticatedLength bool         `proxy:"authenticated-length,omitempty"`
	ClientFingerprint   string       `proxy:"client-fingerprint,omitempty"`
}

type WSOptions

type WSOptions struct {
	Path                string            `proxy:"path,omitempty"`
	Headers             map[string]string `proxy:"headers,omitempty"`
	MaxEarlyData        int               `proxy:"max-early-data,omitempty"`
	EarlyDataHeaderName string            `proxy:"early-data-header-name,omitempty"`
}

type WireGuard

type WireGuard struct {
	*Base
	// contains filtered or unexported fields
}

func NewWireGuard

func NewWireGuard(option WireGuardOption) (*WireGuard, error)

func (*WireGuard) DialContext

func (w *WireGuard) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error)

func (*WireGuard) ListenPacketContext

func (w *WireGuard) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error)

type WireGuardOption

type WireGuardOption struct {
	BasicOption
	Name                string  `proxy:"name"`
	Server              string  `proxy:"server"`
	Port                int     `proxy:"port"`
	Ip                  string  `proxy:"ip,omitempty"`
	Ipv6                string  `proxy:"ipv6,omitempty"`
	PrivateKey          string  `proxy:"private-key"`
	PublicKey           string  `proxy:"public-key"`
	PreSharedKey        string  `proxy:"pre-shared-key,omitempty"`
	Reserved            []uint8 `proxy:"reserved,omitempty"`
	Workers             int     `proxy:"workers,omitempty"`
	MTU                 int     `proxy:"mtu,omitempty"`
	UDP                 bool    `proxy:"udp,omitempty"`
	PersistentKeepalive int     `proxy:"persistent-keepalive,omitempty"`
}

Jump to

Keyboard shortcuts

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