search.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2014 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package main
  5. import (
  6. "fmt"
  7. "log"
  8. "github.com/gogits/gogs/modules/ldap"
  9. )
  10. var (
  11. ldapServer string = "adserver"
  12. ldapPort uint16 = 3268
  13. baseDN string = "dc=*,dc=*"
  14. filter string = "(&(objectClass=user)(sAMAccountName=*)(memberOf=CN=*,OU=*,DC=*,DC=*))"
  15. Attributes []string = []string{"memberof"}
  16. user string = "*"
  17. passwd string = "*"
  18. )
  19. func main() {
  20. l, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))
  21. if err != nil {
  22. log.Fatalf("ERROR: %s\n", err.Error())
  23. }
  24. defer l.Close()
  25. // l.Debug = true
  26. err = l.Bind(user, passwd)
  27. if err != nil {
  28. log.Printf("ERROR: Cannot bind: %s\n", err.Error())
  29. return
  30. }
  31. search := ldap.NewSearchRequest(
  32. baseDN,
  33. ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
  34. filter,
  35. Attributes,
  36. nil)
  37. sr, err := l.Search(search)
  38. if err != nil {
  39. log.Fatalf("ERROR: %s\n", err.Error())
  40. return
  41. }
  42. log.Printf("Search: %s -> num of entries = %d\n", search.Filter, len(sr.Entries))
  43. sr.PrettyPrint(0)
  44. }