diff --git a/controllers/ldap.go b/controllers/ldap.go index c5b54fc4..83e8681d 100644 --- a/controllers/ldap.go +++ b/controllers/ldap.go @@ -170,6 +170,7 @@ func (c *ApiController) UpdateLdap() { return } + prevLdap := object.GetLdap(ldap.Id) affected := object.UpdateLdap(&ldap) resp := wrapActionResponse(affected) if affected { @@ -177,6 +178,8 @@ func (c *ApiController) UpdateLdap() { } if ldap.AutoSync != 0 { object.GetLdapAutoSynchronizer().StartAutoSync(ldap.Id) + } else if ldap.AutoSync == 0 && prevLdap.AutoSync != 0{ + object.GetLdapAutoSynchronizer().StopAutoSync(ldap.Id) } c.Data["json"] = resp diff --git a/object/ldap.go b/object/ldap.go index 13259430..e5047e60 100644 --- a/object/ldap.go +++ b/object/ldap.go @@ -162,7 +162,7 @@ func (l *ldapConn) GetLdapUsers(baseDn string) ([]ldapUser, error) { searchReq := goldap.NewSearchRequest(baseDn, goldap.ScopeWholeSubtree, goldap.NeverDerefAliases, 0, 0, false, SearchFilter, SearchAttributes, nil) - searchResult, err := l.Conn.Search(searchReq) + searchResult, err := l.Conn.SearchWithPaging(searchReq, 100) if err != nil { return nil, err } diff --git a/object/ldap_autosync.go b/object/ldap_autosync.go index 649de915..c6611faf 100644 --- a/object/ldap_autosync.go +++ b/object/ldap_autosync.go @@ -65,6 +65,13 @@ func (l *LdapAutoSynchronizer) syncRoutine(ldap *Ldap, stopChan chan struct{}) { ticker := time.NewTicker(time.Duration(ldap.AutoSync) * time.Minute) defer ticker.Stop() for { + select { + case <-stopChan: + logs.Info(fmt.Sprintf("autoSync goroutine for %s stopped", ldap.Id)) + return + case <-ticker.C: + } + UpdateLdapSyncTime(ldap.Id) //fetch all users conn, err := GetLdapConn(ldap.Host, ldap.Port, ldap.Admin, ldap.Passwd) @@ -84,12 +91,6 @@ func (l *LdapAutoSynchronizer) syncRoutine(ldap *Ldap, stopChan chan struct{}) { } else { logs.Info(fmt.Sprintf("ldap autosync success, %d new users, %d existing users", len(users)-len(*existed), len(*existed))) } - select { - case <-stopChan: - logs.Info(fmt.Sprintf("autoSync goroutine for %s stopped", ldap.Id)) - return - case <-ticker.C: - } } } diff --git a/web/src/LdapSyncPage.js b/web/src/LdapSyncPage.js index e0c28455..239a9489 100644 --- a/web/src/LdapSyncPage.js +++ b/web/src/LdapSyncPage.js @@ -26,7 +26,7 @@ class LdapSyncPage extends React.Component { ldap: null, users: [], existUuids: [], - selectedUsers: [] + selectedUsers: [], }; } @@ -212,7 +212,7 @@ class LdapSyncPage extends React.Component { return (
(
{this.state.ldap?.serverName}