l4socks

package
v0.0.0-...-6e5f5e3 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2025 License: Apache-2.0 Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Socks4Matcher

type Socks4Matcher struct {
	// Only match on these commands. Default: ["CONNECT", "BIND"]
	Commands []string `json:"commands,omitempty"`
	// Only match on requests to one of these destination networks (IP or CIDR). Default: all networks.
	Networks []string `json:"networks,omitempty"`
	// Only match on requests to one of these destination ports. Default: all ports.
	Ports []uint16 `json:"ports,omitempty"`
	// contains filtered or unexported fields
}

Socks4Matcher matches SOCKSv4 connections according to https://www.openssh.com/txt/socks4.protocol. Since the SOCKSv4 header is very short it could produce a lot of false positives. To improve the matching use Commands, Ports and Networks to specify to which destinations you expect clients to connect to. By default, CONNECT & BIND commands are matched with any destination ip and port.

func (*Socks4Matcher) CaddyModule

func (*Socks4Matcher) CaddyModule() caddy.ModuleInfo

func (*Socks4Matcher) Match

func (m *Socks4Matcher) Match(cx *layer4.Connection) (bool, error)

Match returns true if the connection looks like it is using the SOCKSv4 protocol.

func (*Socks4Matcher) Provision

func (m *Socks4Matcher) Provision(_ caddy.Context) error

func (*Socks4Matcher) UnmarshalCaddyfile

func (m *Socks4Matcher) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

UnmarshalCaddyfile sets up the Socks4Matcher from Caddyfile tokens. Syntax:

socks4 {
	commands <commands...>
	networks <ranges...>
	ports <ports...>
}

socks4

type Socks5Handler

type Socks5Handler struct {
	// Controls which socks5 methods are allowed. Possible values CONNECT, ASSOCIATE, BIND. Default: ["CONNECT", "ASSOCIATE"].
	Commands []string `json:"commands,omitempty"`
	// IP address used for bind during BIND or UDP ASSOCIATE.
	BindIP string `json:"bind_ip,omitempty"`
	// Map of username:password to active authentication. Default: no authentication.
	Credentials map[string]string `json:"credentials,omitempty"`
	// contains filtered or unexported fields
}

Socks5Handler is a connection handler that terminates SOCKSv5 connection.

func (*Socks5Handler) CaddyModule

func (*Socks5Handler) CaddyModule() caddy.ModuleInfo

func (*Socks5Handler) Handle

func (h *Socks5Handler) Handle(cx *layer4.Connection, _ layer4.Handler) error

Handle handles the SOCKSv5 connection.

func (*Socks5Handler) Provision

func (h *Socks5Handler) Provision(ctx caddy.Context) error

func (*Socks5Handler) UnmarshalCaddyfile

func (h *Socks5Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

UnmarshalCaddyfile sets up the Socks5Handler from Caddyfile tokens. Syntax:

socks5 {
	bind_ip <address>
	commands <values...>
	credentials <username> <password> [<username> <password>]
}

Note: multiple commands and credentials options are supported, but bind_ip option can only be provided once. Only plain text passwords are currently supported.

type Socks5Matcher

type Socks5Matcher struct {
	AuthMethods []uint16 `json:"auth_methods,omitempty"`
}

Socks5Matcher matches SOCKSv5 connections according to RFC 1928 (https://www.rfc-editor.org/rfc/rfc1928.html). Since the SOCKSv5 header is very short it could produce a lot of false positives, use AuthMethods to exactly specify which METHODS you expect your clients to send. By default, only the most common methods are matched NO AUTH, GSSAPI & USERNAME/PASSWORD.

func (*Socks5Matcher) CaddyModule

func (*Socks5Matcher) CaddyModule() caddy.ModuleInfo

func (*Socks5Matcher) Match

func (m *Socks5Matcher) Match(cx *layer4.Connection) (bool, error)

Match returns true if the connection looks like it is using the SOCKSv5 protocol.

func (*Socks5Matcher) Provision

func (m *Socks5Matcher) Provision(_ caddy.Context) error

func (*Socks5Matcher) UnmarshalCaddyfile

func (m *Socks5Matcher) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

UnmarshalCaddyfile sets up the Socks5Matcher from Caddyfile tokens. Syntax:

socks5 {
	auth_methods <auth_methods...>
}

socks5

Jump to

Keyboard shortcuts

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