forked from Decentrala/lgit
add clone function
This commit is contained in:
parent
757264c33a
commit
cd9592c7cb
28
lgit.py
28
lgit.py
@ -303,6 +303,34 @@ l dc values from base
|
|||||||
|
|
||||||
return pushed
|
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):
|
def lastpwchangenow(self):
|
||||||
'''
|
'''
|
||||||
Return time of last password change for the user set to current time
|
Return time of last password change for the user set to current time
|
||||||
|
Loading…
Reference in New Issue
Block a user