From 0586e66b911bf62d37e92ab5eb745538109f4ada Mon Sep 17 00:00:00 2001 From: frekk <frekk@ucc.asn.au> Date: Wed, 29 May 2019 02:02:25 +0800 Subject: [PATCH] add function to enumerate LDAP/AD users --- src/memberdb/account_backend.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/memberdb/account_backend.py b/src/memberdb/account_backend.py index bcfffed..93f3f71 100644 --- a/src/memberdb/account_backend.py +++ b/src/memberdb/account_backend.py @@ -80,6 +80,19 @@ def get_ldap_attrs(dn, filter, limit, attrs): return entries; +def enumerate_users(): + """ return a list of all usernames, procured from the depths of AD """ + ld = get_ldap_instance() + ld.search(ldap_user_dn, '(objectClass=user)', attributes=['sAMAccountName']) + result = ld.result + if result['result'] == RESULT_SUCCESS: + usernames = [] + for e in ld.entries: + usernames += [str(e['sAMAccountName'])] + return usernames + else: + return None + def get_user_attrs(username, attrs): # find the user filter = "(cn=" + username + ')' @@ -225,6 +238,7 @@ def create_ad_user(form_data, member): if uids[0] != maxuid: newuid = str(maxuid) else: + # check for gaps in the uid space and try to fill them prev = uids[0] for uid in uids: if uid - prev > 1: -- GitLab