From: Björn Baumbach Date: Fri, 9 Aug 2019 14:19:52 +0000 (+0200) Subject: python/samdb: add option to specify types of group members X-Git-Tag: samba-4.12.0rc1~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=662b7458aed8daf70980f558f9713920c3e56da4;p=thirdparty%2Fsamba.git python/samdb: add option to specify types of group members The option can be used to specify the type of the object which have to be added to (or removed) from a group. The search filter for the objects will be created according to the types. Signed-off-by: Björn Baumbach Reviewed-by: Ralph Boehme --- diff --git a/python/samba/samdb.py b/python/samba/samdb.py index 22819641802..1090383f526 100644 --- a/python/samba/samdb.py +++ b/python/samba/samdb.py @@ -251,8 +251,23 @@ pwdLastSet: 0 else: self.transaction_commit() + def group_member_filter(self, member, member_types): + filter = "" + + if 'user' in member_types: + filter += ('(&(sAMAccountName=%s)(objectclass=user))' % + ldb.binary_encode(member)) + if 'group' in member_types: + filter += ('(&(sAMAccountName=%s)(objectclass=group))' % + ldb.binary_encode(member)) + + filter = "(|%s)" % filter + + return filter + def add_remove_group_members(self, groupname, members, - add_members_operation=True): + add_members_operation=True, + member_types=[ 'user', 'group' ]): """Adds or removes group members :param groupname: Name of the target group @@ -280,8 +295,7 @@ changetype: modify """ % (str(targetgroup[0].dn)) for member in members: - filter = ('(&(sAMAccountName=%s)(|(objectclass=user)' - '(objectclass=group)))' % ldb.binary_encode(member)) + filter = self.group_member_filter(member, member_types) foreign_msg = None try: membersid = security.dom_sid(member)