Compare commits

...

2 Commits

Author SHA1 Message Date
4f954c97d7
add isempty function 2024-04-11 11:37:31 +02:00
cd9592c7cb
add clone function 2024-04-11 11:33:12 +02:00

35
lgit.py
View File

@ -93,6 +93,13 @@ l dc values from base
return response
def isempty(self)->bool:
self.conn.search(search_base=self.base,search_filter='(objectClass=person)', attributes=['uid'])
response = self.conn.response
if response == []:
return True
return False
def gettotal(self, base: str = '')->int:
if base == '':
base = self.logbase
@ -303,6 +310,34 @@ l dc values from base
return pushed
def clone(self, source)->int:
# Delete all users from this server
self.conn.search(search_base=source.base,search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
response = self.conn.response
if response != []:
for user in response:
uid = user.attributes['uid']
if isinstance(uid, list):
uid = uid[0]
self.conn.delete(f'uid={uid},{self.base}')
# Copy all users from source server
cloned = 0
source.conn.search(search_base=source.base,search_filter='(objectClass=person)', attributes=USERATTRIBUTES)
response = source.conn.response
if response == []:
return 0
else:
for user in response:
attributes = user.attributes
# If attribute returned as list, take only first element
for key in attributes:
if isinstance(attributes[key], list):
attributes[key] = attributes[key][0]
uid = attributes['uid']
self.conn.add(f'uid={uid},{self.base}', OBJECTCLASSES, attributes)
cloned += 1
return cloned
def lastpwchangenow(self):
'''
Return time of last password change for the user set to current time