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) 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) 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) UnmarshalCaddyfile ¶
func (m *Socks5Matcher) UnmarshalCaddyfile(d *caddyfile.Dispenser) error
UnmarshalCaddyfile sets up the Socks5Matcher from Caddyfile tokens. Syntax:
socks5 {
auth_methods <auth_methods...>
}
socks5