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