mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19: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 (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/documize/community/core/stringutil"
|
"github.com/documize/community/core/stringutil"
|
||||||
|
@ -116,13 +117,13 @@ func executeUserFilter(c lm.LDAPConfig) (u []lm.LDAPUser, err error) {
|
||||||
|
|
||||||
searchRequest := ld.NewSearchRequest(
|
searchRequest := ld.NewSearchRequest(
|
||||||
c.BaseDN,
|
c.BaseDN,
|
||||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, 0, 0, false,
|
ld.ScopeWholeSubtree, ld.NeverDerefAliases, math.MaxInt32, 0, false,
|
||||||
c.UserFilter,
|
c.UserFilter,
|
||||||
c.GetUserFilterAttributes(),
|
c.GetUserFilterAttributes(),
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
|
|
||||||
sr, err := l.Search(searchRequest)
|
sr, err := l.SearchWithPaging(searchRequest, lm.MaxPageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errors.Wrap(err, "unable to execute directory search for user filter "+c.UserFilter)
|
errors.Wrap(err, "unable to execute directory search for user filter "+c.UserFilter)
|
||||||
return
|
return
|
||||||
|
@ -153,13 +154,13 @@ func executeGroupFilter(c lm.LDAPConfig) (u []lm.LDAPUser, err error) {
|
||||||
|
|
||||||
searchRequest := ld.NewSearchRequest(
|
searchRequest := ld.NewSearchRequest(
|
||||||
c.BaseDN,
|
c.BaseDN,
|
||||||
ld.ScopeWholeSubtree, ld.NeverDerefAliases, 0, 0, false,
|
ld.ScopeWholeSubtree, ld.NeverDerefAliases, math.MaxInt32, 0, false,
|
||||||
c.GroupFilter,
|
c.GroupFilter,
|
||||||
c.GetGroupFilterAttributes(),
|
c.GetGroupFilterAttributes(),
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
|
|
||||||
sr, err := l.Search(searchRequest)
|
sr, err := l.SearchWithPaging(searchRequest, lm.MaxPageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errors.Wrap(err, "unable to execute directory search for user filter "+c.GroupFilter)
|
errors.Wrap(err, "unable to execute directory search for user filter "+c.GroupFilter)
|
||||||
return
|
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"
|
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.
|
// Clean ensures configuration data is formatted correctly.
|
||||||
func (c *LDAPConfig) Clean() {
|
func (c *LDAPConfig) Clean() {
|
||||||
c.BaseDN = strings.TrimSpace(c.BaseDN)
|
c.BaseDN = strings.TrimSpace(c.BaseDN)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue