outposts/ldap: fix logic error in cached ldap searcher
closes #1779 Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
@ -15,7 +15,7 @@ func (ms *MemorySearcher) FetchUsers() []api.User {
|
||||
ms.log.WithError(err).Warning("failed to update users")
|
||||
return nil, err
|
||||
}
|
||||
ms.log.WithField("page", page).Debug("fetched users")
|
||||
ms.log.WithField("page", page).WithField("count", len(users.Results)).Debug("fetched users")
|
||||
return &users, nil
|
||||
}
|
||||
page := 1
|
||||
@ -25,12 +25,12 @@ func (ms *MemorySearcher) FetchUsers() []api.User {
|
||||
if err != nil {
|
||||
return users
|
||||
}
|
||||
users = append(users, apiUsers.Results...)
|
||||
if apiUsers.Pagination.Next > 0 {
|
||||
page += 1
|
||||
} else {
|
||||
break
|
||||
}
|
||||
users = append(users, apiUsers.Results...)
|
||||
}
|
||||
return users
|
||||
}
|
||||
@ -42,7 +42,7 @@ func (ms *MemorySearcher) FetchGroups() []api.Group {
|
||||
ms.log.WithError(err).Warning("failed to update groups")
|
||||
return nil, err
|
||||
}
|
||||
ms.log.WithField("page", page).Debug("fetched groups")
|
||||
ms.log.WithField("page", page).WithField("count", len(groups.Results)).Debug("fetched groups")
|
||||
return &groups, nil
|
||||
}
|
||||
page := 1
|
||||
@ -52,12 +52,12 @@ func (ms *MemorySearcher) FetchGroups() []api.Group {
|
||||
if err != nil {
|
||||
return groups
|
||||
}
|
||||
groups = append(groups, apiGroups.Results...)
|
||||
if apiGroups.Pagination.Next > 0 {
|
||||
page += 1
|
||||
} else {
|
||||
break
|
||||
}
|
||||
groups = append(groups, apiGroups.Results...)
|
||||
}
|
||||
return groups
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/getsentry/sentry-go"
|
||||
"github.com/nmcclain/ldap"
|
||||
@ -115,18 +114,6 @@ func (ms *MemorySearcher) Search(req *search.Request) (ldap.ServerSearchResult,
|
||||
}
|
||||
accsp.Finish()
|
||||
|
||||
// parsedFilter, err := ldap.CompileFilter(req.Filter)
|
||||
// if err != nil {
|
||||
// metrics.RequestsRejected.With(prometheus.Labels{
|
||||
// "outpost_name": ms.si.GetOutpostName(),
|
||||
// "type": "search",
|
||||
// "reason": "filter_parse_fail",
|
||||
// "dn": req.BindDN,
|
||||
// "client": req.RemoteAddr(),
|
||||
// }).Inc()
|
||||
// return ldap.ServerSearchResult{ResultCode: ldap.LDAPResultOperationsError}, fmt.Errorf("Search Error: error parsing filter: %s", req.Filter)
|
||||
// }
|
||||
|
||||
switch filterEntity {
|
||||
default:
|
||||
metrics.RequestsRejected.With(prometheus.Labels{
|
||||
@ -144,27 +131,12 @@ func (ms *MemorySearcher) Search(req *search.Request) (ldap.ServerSearchResult,
|
||||
case constants.OCAKVirtualGroup:
|
||||
fallthrough
|
||||
case constants.OCGroup:
|
||||
wg := sync.WaitGroup{}
|
||||
wg.Add(2)
|
||||
|
||||
gEntries := make([]*ldap.Entry, 0)
|
||||
uEntries := make([]*ldap.Entry, 0)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for _, g := range ms.groups {
|
||||
gEntries = append(gEntries, group.FromAPIGroup(g, ms.si).Entry())
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for _, u := range ms.users {
|
||||
uEntries = append(uEntries, group.FromAPIUser(u, ms.si).Entry())
|
||||
}
|
||||
}()
|
||||
wg.Wait()
|
||||
entries = append(gEntries, uEntries...)
|
||||
for _, g := range ms.groups {
|
||||
entries = append(entries, group.FromAPIGroup(g, ms.si).Entry())
|
||||
}
|
||||
for _, u := range ms.users {
|
||||
entries = append(entries, group.FromAPIUser(u, ms.si).Entry())
|
||||
}
|
||||
case "":
|
||||
fallthrough
|
||||
case constants.OCOrgPerson:
|
||||
|
Reference in New Issue
Block a user