From 690917e4e01c92a766608c96c58a9d7ea9a9d491 Mon Sep 17 00:00:00 2001 From: Brian Candler Date: Wed, 12 Apr 2023 15:01:27 +0100 Subject: [PATCH] Use NameFormat/GroupFormat when constructing RDN attributes Before: dn: ou=vpn,ou=users,dc=glauth,dc=com cn: vpn After: dn: ou=vpn,ou=users,dc=glauth,dc=com ou: vpn <<< THIS HAS CHANGED NOTE: whereas previously a search filter (cn=vpn) would have found the group, now you need (ou=vpn) --- v2/pkg/handler/config.go | 4 ++-- v2/pkg/handler/owncloud.go | 4 ++-- v2/pkg/plugins/basesqlhandler.go | 4 ++-- v2/scripts/ci/good-results/posixGroupList0 | 14 +++++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/v2/pkg/handler/config.go b/v2/pkg/handler/config.go index ab2ef5a..1968f8c 100644 --- a/v2/pkg/handler/config.go +++ b/v2/pkg/handler/config.go @@ -116,7 +116,7 @@ func (h configHandler) FindPosixAccounts(hierarchy string) (entrylist []*ldap.En for _, u := range h.cfg.Users { attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{Name: "cn", Values: []string{u.Name}}) + attrs = append(attrs, &ldap.EntryAttribute{Name: h.backend.NameFormat, Values: []string{u.Name}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "uid", Values: []string{u.Name}}) if len(u.GivenName) > 0 { @@ -210,7 +210,7 @@ func (h configHandler) FindPosixGroups(hierarchy string) (entrylist []*ldap.Entr for _, g := range h.cfg.Groups { attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{Name: "cn", Values: []string{g.Name}}) + attrs = append(attrs, &ldap.EntryAttribute{Name: h.backend.GroupFormat, Values: []string{g.Name}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "uid", Values: []string{g.Name}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "description", Values: []string{fmt.Sprintf("%s", g.Name)}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "gidNumber", Values: []string{fmt.Sprintf("%d", g.GIDNumber)}}) diff --git a/v2/pkg/handler/owncloud.go b/v2/pkg/handler/owncloud.go index 8fc03e5..d763283 100644 --- a/v2/pkg/handler/owncloud.go +++ b/v2/pkg/handler/owncloud.go @@ -121,7 +121,7 @@ func (h ownCloudHandler) Search(bindDN string, searchReq ldap.SearchRequest, con } for _, g := range groups { attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{Name: "cn", Values: []string{*g.ID}}) + attrs = append(attrs, &ldap.EntryAttribute{Name: h.backend.GroupFormat, Values: []string{*g.ID}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "description", Values: []string{fmt.Sprintf("%s from ownCloud", *g.ID)}}) // attrs = append(attrs, &ldap.EntryAttribute{"gidNumber", []string{fmt.Sprintf("%d", g.GIDNumber)}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "objectClass", Values: []string{"posixGroup"}}) @@ -151,7 +151,7 @@ func (h ownCloudHandler) Search(bindDN string, searchReq ldap.SearchRequest, con } for _, u := range users { attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{Name: "cn", Values: []string{*u.ID}}) + attrs = append(attrs, &ldap.EntryAttribute{Name: h.backend.NameFormat, Values: []string{*u.ID}}) attrs = append(attrs, &ldap.EntryAttribute{Name: "uid", Values: []string{*u.ID}}) if u.DisplayName != nil { attrs = append(attrs, &ldap.EntryAttribute{Name: "givenName", Values: []string{*u.DisplayName}}) diff --git a/v2/pkg/plugins/basesqlhandler.go b/v2/pkg/plugins/basesqlhandler.go index f29a27b..80b8554 100644 --- a/v2/pkg/plugins/basesqlhandler.go +++ b/v2/pkg/plugins/basesqlhandler.go @@ -510,7 +510,7 @@ func (h databaseHandler) getGroup(hierarchy string, g config.Group) *ldap.Entry asGroupOfUniqueNames := hierarchy == "ou=groups" attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{"cn", []string{g.Name}}) + attrs = append(attrs, &ldap.EntryAttribute{h.backend.GroupFormat, []string{g.Name}}) attrs = append(attrs, &ldap.EntryAttribute{"description", []string{fmt.Sprintf("%s via LDAP", g.Name)}}) attrs = append(attrs, &ldap.EntryAttribute{"gidNumber", []string{fmt.Sprintf("%d", g.GIDNumber)}}) attrs = append(attrs, &ldap.EntryAttribute{"uniqueMember", h.getGroupMemberDNs(g.GIDNumber)}) @@ -526,7 +526,7 @@ func (h databaseHandler) getGroup(hierarchy string, g config.Group) *ldap.Entry func (h databaseHandler) getAccount(hierarchy string, u config.User) *ldap.Entry { attrs := []*ldap.EntryAttribute{} - attrs = append(attrs, &ldap.EntryAttribute{"cn", []string{u.Name}}) + attrs = append(attrs, &ldap.EntryAttribute{h.backend.NameFormat, []string{u.Name}}) attrs = append(attrs, &ldap.EntryAttribute{"uid", []string{u.Name}}) if len(u.GivenName) > 0 { diff --git a/v2/scripts/ci/good-results/posixGroupList0 b/v2/scripts/ci/good-results/posixGroupList0 index b1fdccc..2b4b7e6 100644 --- a/v2/scripts/ci/good-results/posixGroupList0 +++ b/v2/scripts/ci/good-results/posixGroupList0 @@ -1,5 +1,5 @@ dn: ou=superheros,ou=users,dc=glauth,dc=com -cn: superheros +ou: superheros uid: superheros description: superheros gidNumber: 5501 @@ -19,7 +19,7 @@ objectClass: posixGroup objectClass: top dn: ou=svcaccts,ou=users,dc=glauth,dc=com -cn: svcaccts +ou: svcaccts uid: svcaccts description: svcaccts gidNumber: 5502 @@ -29,7 +29,7 @@ objectClass: posixGroup objectClass: top dn: ou=vpnaccess,ou=users,dc=glauth,dc=com -cn: vpnaccess +ou: vpnaccess uid: vpnaccess description: vpnaccess gidNumber: 5503 @@ -49,7 +49,7 @@ objectClass: posixGroup objectClass: top dn: ou=allaccs,ou=users,dc=glauth,dc=com -cn: allaccs +ou: allaccs uid: allaccs description: allaccs gidNumber: 5504 @@ -71,7 +71,7 @@ objectClass: posixGroup objectClass: top dn: ou=mailadmin,ou=users,dc=glauth,dc=com -cn: mailadmin +ou: mailadmin uid: mailadmin description: mailadmin gidNumber: 5505 @@ -87,7 +87,7 @@ objectClass: posixGroup objectClass: top dn: ou=webmail,ou=users,dc=glauth,dc=com -cn: webmail +ou: webmail uid: webmail description: webmail gidNumber: 5506 @@ -95,7 +95,7 @@ objectClass: posixGroup objectClass: top dn: ou=fulltime,ou=users,dc=glauth,dc=com -cn: fulltime +ou: fulltime uid: fulltime description: fulltime gidNumber: 5507