add clone function

This commit is contained in:
fram3d 2024-04-11 11:33:12 +02:00
parent 757264c33a
commit cd9592c7cb
Signed by: fram3d
GPG Key ID: 938920E709EEA32A

28
lgit.py
View File

@ -303,6 +303,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