Good evening,
I'm relatively new to go and try to write a function exporting the contextCSN variable from an openldap directory (analogous to ldapsearch -x -s base contextCSN
)
From the documentation of ldap.v2 I came up with this:
searchRequest := ldap.NewSearchRequest(
baseDN, // The base dn to search
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(contextCSN)", // The filter to apply
[]string{"contextCSN"}, // A list attributes to retrieve
nil,
)
But it doesn't accept contextCSN as search term
LDAP Result Code 201 "Filter Compile Error": ldap: error parsing filter
exit status 1
Is there a way to query for this value without invoking ldapsearch?
Update: After staring at the output of ldapsearch for a while I came up with this, which did solve the problem. The data is a bit ugly structured but otherwise provides what I needed:
l, err := ldap.DialTLS("tcp", ldapHost, conf)
if err != nil {
log.Fatal(err)
}
defer l.Close()
searchRequest := ldap.NewSearchRequest(
baseDN, // The base dn to search
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(objectClass=*)", // The filter to apply
[]string{"contextCSN"}, // A list attributes to retrieve
nil,
)
sr, err := l.Search(searchRequest)
if err != nil {
log.Fatal(err)
}
for _, entry := range sr.Entries {
for _, csn := range entry.GetAttributeValues("contextCSN") {
...
}
}