func main() { l, err := ldap.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 := ldap.NewSearchRequest( baseDN, ldap.ScopeWholeSubtree, ldap.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) }
func ldapDial(ls Ldapsource) (*ldap.Conn, error) { if ls.UseSSL { return ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", ls.Host, ls.Port), nil) } else { return ldap.Dial("tcp", fmt.Sprintf("%s:%d", ls.Host, ls.Port)) } }
func main() { l, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", LdapServer, LdapPort)) if err != nil { log.Fatalf("ERROR: %s\n", err.Error()) } defer l.Close() // l.Debug = true l.Bind(BindDN, BindPW) log.Printf("The Search for Kirk ... %s\n", Filter) entry, err := search(l, Filter, []string{}) if err != nil { log.Fatal("could not get entry") } entry.PrettyPrint(0) log.Printf("modify the mail address and add a description ... \n") modify := ldap.NewModifyRequest(entry.DN) modify.Add("description", []string{"Captain of the USS Enterprise"}) modify.Replace("mail", []string{"*****@*****.**"}) if err := l.Modify(modify); err != nil { log.Fatalf("ERROR: %s\n", err.Error()) } entry, err = search(l, Filter, []string{}) if err != nil { log.Fatal("could not get entry") } entry.PrettyPrint(0) log.Printf("reset the entry ... \n") modify = ldap.NewModifyRequest(entry.DN) modify.Delete("description", []string{}) modify.Replace("mail", []string{"*****@*****.**"}) if err := l.Modify(modify); err != nil { log.Fatalf("ERROR: %s\n", err.Error()) } entry, err = search(l, Filter, []string{}) if err != nil { log.Fatal("could not get entry") } entry.PrettyPrint(0) }