feat: add configurable ldap connection timeout
This commit is contained in:
parent
194c1864c4
commit
24b66a12ef
|
@ -117,3 +117,9 @@ WERTHER_LDAP_ROLE_BASEDN=ou=groups,dc=myorg,dc=com
|
|||
# [type] String
|
||||
# [default] /
|
||||
# [required]
|
||||
|
||||
#WERTHER_LDAP_CONNECTION_TIMEOUT=
|
||||
# [description] LDAP server connection timeout
|
||||
# [type] Duration
|
||||
# [default] 60s
|
||||
# [required]
|
|
@ -61,6 +61,7 @@ type Config struct {
|
|||
CacheSize int `envconfig:"cache_size" default:"512" desc:"a user info cache's size in KiB"`
|
||||
CacheTTL time.Duration `envconfig:"cache_ttl" default:"30m" desc:"a user info cache TTL"`
|
||||
IsTLS bool `envconfig:"is_tls" default:"false" desc:"should LDAP connection be established via TLS"`
|
||||
ConnectionTimeout time.Duration `envconfig:"connection_timeout" default:"60s" desc:"LDAP server connection timeout"`
|
||||
}
|
||||
|
||||
// Client is a LDAP client (compatible with Active Directory).
|
||||
|
@ -80,6 +81,7 @@ func New(cnf Config) *Client {
|
|||
RoleBaseDN: cnf.RoleBaseDN,
|
||||
IsTLS: cnf.IsTLS,
|
||||
RoleSearchQuery: cnf.RoleSearchQuery,
|
||||
ConnectionTimeout: cnf.ConnectionTimeout,
|
||||
},
|
||||
cache: freecache.NewCache(cnf.CacheSize * 1024),
|
||||
}
|
||||
|
@ -296,10 +298,11 @@ type ldapConnector struct {
|
|||
IsTLS bool
|
||||
UserSearchQuery string
|
||||
RoleSearchQuery string
|
||||
ConnectionTimeout time.Duration
|
||||
}
|
||||
|
||||
func (c *ldapConnector) Connect(ctx context.Context, addr string) (conn, error) {
|
||||
d := net.Dialer{Timeout: ldap.DefaultTimeout}
|
||||
d := net.Dialer{Timeout: c.ConnectionTimeout}
|
||||
tcpcn, err := d.DialContext(ctx, "tcp", addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in New Issue