From ad9f2ea47a83452873c01f1dc6960aedb9ff7e0e Mon Sep 17 00:00:00 2001 From: Jerome Touffe-Blin Date: Mon, 5 Dec 2016 11:19:58 +1100 Subject: [PATCH] Add command line utility for querying LDAP and manual testing --- .gitignore | 1 + cmd/main.go | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100644 cmd/main.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61a58b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +test.sh \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..d39667d --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,61 @@ +package main + +import ( + "flag" + "log" + + "github.com/jtblin/go-ldap-client" +) + +var base, bindDN, bindPassword, groupFilter, host, password, serverName, userFilter, username string +var port int +var useSSL bool + +type server struct{} + +func main() { + flag.Parse() + + client := &ldap.LDAPClient{ + Base: base, + Host: host, + Port: port, + UseSSL: useSSL, + BindDN: bindDN, + BindPassword: bindPassword, + UserFilter: userFilter, + GroupFilter: groupFilter, + Attributes: []string{"givenName", "sn", "mail", "uid"}, + ServerName: serverName, + } + defer client.Close() + + ok, user, err := client.Authenticate(username, password) + if err != nil { + log.Fatalf("Error authenticating user %s: %+v", username, err) + } + if !ok { + log.Fatalf("Authenticating failed for user %s", username) + } + log.Printf("User: %+v", user) + + groups, err := client.GetGroupsOfUser(username) + if err != nil { + log.Fatalf("Error getting groups for user %s: %+v", username, err) + } + log.Printf("Groups: %+v", groups) +} + +func init() { + flag.StringVar(&base, "base", "dc=example,dc=com", "Base LDAP") + flag.StringVar(&bindDN, "bind-dn", "uid=readonlysuer,ou=People,dc=example,dc=com", "Bind DN") + flag.StringVar(&bindPassword, "bind-pwd", "readonlypassword", "Bind password") + flag.StringVar(&groupFilter, "group-filter", "(memberUid=%s)", "Group filter") + flag.StringVar(&host, "host", "ldap.example.com", "LDAP host") + flag.StringVar(&password, "password", "", "Password") + flag.IntVar(&port, "port", 389, "LDAP port") + flag.StringVar(&userFilter, "user-filter", "(uid=%s)", "User filter") + flag.StringVar(&username, "username", "", "Username") + flag.StringVar(&serverName, "server-name", "", "Server name for SSL (if use-ssl is set)") + flag.BoolVar(&useSSL, "use-ssl", false, "Use SSL") +}