1
0
Fork 0
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:
sauls8t 2018-09-07 15:09:54 +01:00
parent ae084ae0bb
commit e03497032b
3 changed files with 674 additions and 666 deletions

View file

@ -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

File diff suppressed because one or more lines are too long

View file

@ -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)