Ensure backwards compatibility of configuration
parent
94cefb4919
commit
4ead3ac2f3
18
socks5.go
18
socks5.go
|
@ -14,9 +14,15 @@ const (
|
||||||
// Config is used to setup and configure a Server
|
// Config is used to setup and configure a Server
|
||||||
type Config struct {
|
type Config struct {
|
||||||
// AuthMethods can be provided to implement custom authentication
|
// AuthMethods can be provided to implement custom authentication
|
||||||
// By default, "auth-less" mode is enabled. For password-based auth use UserPassAuthenticator.
|
// By default, "auth-less" mode is enabled.
|
||||||
|
// For password-based auth use UserPassAuthenticator.
|
||||||
AuthMethods []Authenticator
|
AuthMethods []Authenticator
|
||||||
|
|
||||||
|
// If provided, username/password authentication is enabled,
|
||||||
|
// by appending a UserPassAuthenticator to AuthMethods. If not provided,
|
||||||
|
// and AUthMethods is nil, then "auth-less" mode is enabled.
|
||||||
|
Credentials CredentialStore
|
||||||
|
|
||||||
// Resolver can be provided to do custom name resolution.
|
// Resolver can be provided to do custom name resolution.
|
||||||
// Defaults to DNSResolver if not provided.
|
// Defaults to DNSResolver if not provided.
|
||||||
Resolver NameResolver
|
Resolver NameResolver
|
||||||
|
@ -37,15 +43,19 @@ type Config struct {
|
||||||
// Server is reponsible for accepting connections and handling
|
// Server is reponsible for accepting connections and handling
|
||||||
// the details of the SOCKS5 protocol
|
// the details of the SOCKS5 protocol
|
||||||
type Server struct {
|
type Server struct {
|
||||||
config *Config
|
config *Config
|
||||||
authMethods map[uint8]Authenticator
|
authMethods map[uint8]Authenticator
|
||||||
}
|
}
|
||||||
|
|
||||||
// New creates a new Server and potentially returns an error
|
// New creates a new Server and potentially returns an error
|
||||||
func New(conf *Config) (*Server, error) {
|
func New(conf *Config) (*Server, error) {
|
||||||
// Ensure we have at least one authentication method enabled
|
// Ensure we have at least one authentication method enabled
|
||||||
if conf.AuthMethods == nil || len(conf.AuthMethods) == 0 {
|
if len(conf.AuthMethods) == 0 {
|
||||||
conf.AuthMethods = []Authenticator{&NoAuthAuthenticator{}}
|
if conf.Credentials != nil {
|
||||||
|
conf.AuthMethods = []Authenticator{&UserPassAuthenticator{conf.Credentials}}
|
||||||
|
} else {
|
||||||
|
conf.AuthMethods = []Authenticator{&NoAuthAuthenticator{}}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure we have a DNS resolver
|
// Ensure we have a DNS resolver
|
||||||
|
|
Loading…
Reference in New Issue