aboutsummaryrefslogtreecommitdiff
path: root/.examples/search.go
diff options
context:
space:
mode:
Diffstat (limited to '.examples/search.go')
-rw-r--r--.examples/search.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/.examples/search.go b/.examples/search.go
new file mode 100644
index 0000000..54fbb1c
--- /dev/null
+++ b/.examples/search.go
@@ -0,0 +1,54 @@
+// +build ignore
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "log"
+
+ ldapserver "github.com/metala/ldap"
+)
+
+var (
+ ldapServer string = "adserver"
+ ldapPort uint16 = 3268
+ baseDN string = "dc=*,dc=*"
+ filter string = "(&(objectClass=user)(sAMAccountName=*)(memberOf=CN=*,OU=*,DC=*,DC=*))"
+ Attributes []string = []string{"memberof"}
+ user string = "*"
+ passwd string = "*"
+)
+
+func main() {
+ l, err := ldapserver.Dial("tcp", fmt.Sprintf("%s:%d", ldapServer, ldapPort))
+ if err != nil {
+ log.Fatalf("ERROR: %s\n", err.Error())
+ }
+ defer l.Close()
+ // l.Debug = true
+
+ err = l.Bind(user, passwd)
+ if err != nil {
+ log.Printf("ERROR: Cannot bind: %s\n", err.Error())
+ return
+ }
+ search := ldapserver.NewSearchRequest(
+ baseDN,
+ ldapserver.ScopeWholeSubtree, ldapserver.NeverDerefAliases, 0, 0, false,
+ filter,
+ Attributes,
+ nil)
+
+ sr, err := l.Search(search)
+ if err != nil {
+ log.Fatalf("ERROR: %s\n", err.Error())
+ return
+ }
+
+ log.Printf("Search: %s -> num of entries = %d\n", search.Filter, len(sr.Entries))
+ sr.PrettyPrint(0)
+}