|
@@ -62,6 +62,15 @@ func GetActiveClient(server *models.LdapServer) (*Client, error) {
|
|
return client, nil
|
|
return client, nil
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func CloseActiveClient(server *models.LdapServer) {
|
|
|
|
+ delete(ActiveClients, server.Key)
|
|
|
|
+ client := ActiveClients[server.Key]
|
|
|
|
+ if client == nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ client.Close()
|
|
|
|
+}
|
|
|
|
+
|
|
func (c *Client) Close() {
|
|
func (c *Client) Close() {
|
|
if c.Connected && c.Conn != nil {
|
|
if c.Connected && c.Conn != nil {
|
|
c.Conn.Close()
|
|
c.Conn.Close()
|
|
@@ -127,7 +136,7 @@ func (c *Client) SearchByAccount(account string) (*ldap.Entry, error) {
|
|
logs.Error("search fail : %v", err)
|
|
logs.Error("search fail : %v", err)
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- if len(sr.Entries) != 1 {
|
|
|
|
|
|
+ if len(sr.Entries) < 1 {
|
|
logs.Error("no account found for: %v", account)
|
|
logs.Error("no account found for: %v", account)
|
|
}
|
|
}
|
|
return sr.Entries[0], nil
|
|
return sr.Entries[0], nil
|
|
@@ -173,7 +182,10 @@ func (c *Client) Modify() error {
|
|
// 搜索指定账号:(&(objectClass=*)(uid=%s))
|
|
// 搜索指定账号:(&(objectClass=*)(uid=%s))
|
|
func (c *Client) Add(user *models.LdapUser) error {
|
|
func (c *Client) Add(user *models.LdapUser) error {
|
|
entries, err := c.Search(fmt.Sprintf("(&(objectClass=*)(uid=%s))", user.Account))
|
|
entries, err := c.Search(fmt.Sprintf("(&(objectClass=*)(uid=%s))", user.Account))
|
|
- if err == nil {
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ if len(entries) > 0 {
|
|
entry := entries[0]
|
|
entry := entries[0]
|
|
if entry.DN != user.DN {
|
|
if entry.DN != user.DN {
|
|
logs.Warn("DN not match: {}, {}", entry.DN, user.DN)
|
|
logs.Warn("DN not match: {}, {}", entry.DN, user.DN)
|