mirror of
https://github.com/documize/community.git
synced 2025-07-18 20:59:43 +02:00
Use paging for LDAP queries
This commit is contained in:
parent
ae084ae0bb
commit
e03497032b
3 changed files with 674 additions and 666 deletions
|
@ -14,6 +14,7 @@ package ldap
|
|||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"math"
|
||||
"strings"
|
||||
|
||||
"github.com/documize/community/core/stringutil"
|
||||
|
@ -116,13 +117,13 @@ func executeUserFilter(c lm.LDAPConfig) (u []lm.LDAPUser, err error) {
|
|||
|
||||
searchRequest := ld.NewSearchRequest(
|
||||
c.BaseDN,
|
||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, 0, 0, false,
|
||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, math.MaxInt32, 0, false,
|
||||
c.UserFilter,
|
||||
c.GetUserFilterAttributes(),
|
||||
nil,
|
||||
)
|
||||
|
||||
sr, err := l.Search(searchRequest)
|
||||
sr, err := l.SearchWithPaging(searchRequest, lm.MaxPageSize)
|
||||
if err != nil {
|
||||
errors.Wrap(err, "unable to execute directory search for user filter "+c.UserFilter)
|
||||
return
|
||||
|
@ -153,13 +154,13 @@ func executeGroupFilter(c lm.LDAPConfig) (u []lm.LDAPUser, err error) {
|
|||
|
||||
searchRequest := ld.NewSearchRequest(
|
||||
c.BaseDN,
|
||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, 0, 0, false,
|
||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, math.MaxInt32, 0, false,
|
||||
c.GroupFilter,
|
||||
c.GetGroupFilterAttributes(),
|
||||
nil,
|
||||
)
|
||||
|
||||
sr, err := l.Search(searchRequest)
|
||||
sr, err := l.SearchWithPaging(searchRequest, lm.MaxPageSize)
|
||||
if err != nil {
|
||||
errors.Wrap(err, "unable to execute directory search for user filter "+c.GroupFilter)
|
||||
return
|
||||
|
|
1324
embed/bindata.go
1324
embed/bindata.go
File diff suppressed because one or more lines are too long
|
@ -74,6 +74,13 @@ const (
|
|||
EncryptionTypeStartTLS = "starttls"
|
||||
)
|
||||
|
||||
const (
|
||||
// MaxPageSize controls how many query results are
|
||||
// fetched at once from the LDAP server.
|
||||
// See https://answers.splunk.com/answers/1538/what-is-ldap-error-size-limit-exceeded.html
|
||||
MaxPageSize = 250
|
||||
)
|
||||
|
||||
// Clean ensures configuration data is formatted correctly.
|
||||
func (c *LDAPConfig) Clean() {
|
||||
c.BaseDN = strings.TrimSpace(c.BaseDN)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue