def ldap_search_members(query): con = _ldap.get_con() filt = str("(|(description=*{0}*)" "(displayName=*{0}*)" "(mail=*{0}*)" "(nickName=*{0}*)" "(plex=*{0}*)" "(sn=*{0}*)" "(uid=*{0}*)" "(mobile=*{0}*)" "(twitterName=*{0}*)" "(github=*{0}*))").format(query) res = con.search_s("dc=csh,dc=rit,dc=edu", ldap.SCOPE_SUBTREE, filt, ['uid']) ret = [] for uid in res: try: mem = (str(uid[1]).split('\'')[3]) ret.append(ldap_get_member(mem)) except IndexError: continue return ret
def process_image(photo, uid): if imghdr.what(photo): key = 'jpegPhoto' account = ldap_get_member(uid) image = Image.open(photo) icon = resizeimage.resize_contain(image, [300, 300]) icon = icon.convert("RGB") bin_icon = io.BytesIO() icon.save(bin_icon, format='JPEG') con = _ldap.get_con() exists = account.jpegPhoto if not exists: ldap_mod = ldap.MOD_ADD else: ldap_mod = ldap.MOD_REPLACE mod = (ldap_mod, key, bin_icon.getvalue()) mod_attrs = [mod] con.modify_s(account.get_dn(), mod_attrs) return True else: return False
def ldap_get_group_desc(group): con = _ldap.get_con() try: results = con.search_s("cn=groups,cn=accounts,dc=csh,dc=rit,dc=edu", ldap.SCOPE_SUBTREE, "(cn=%s)" % group, ['description']) return results[0][1]['description'][0].decode('utf-8') except IndexError as inderr: raise BadQueryError("invalid group name") from inderr
def ldap_get_year(year): con = _ldap.get_con() filt = str( "(&(memberSince>={}0801010101-0400)(memberSince<={}0801010101-0400))" ).format(year, str(int(year) + 1)) res = con.search_s("dc=csh,dc=rit,dc=edu", ldap.SCOPE_SUBTREE, filt, ['uid']) ret = [] for uid in res: try: mem = (str(uid[1]).split('\'')[3]) ret.append(ldap_get_member(mem)) except IndexError: continue return ret
def process_image(photo, uid): if base64.b64decode(photo): key = 'jpegPhoto' account = ldap_get_member(uid) bin_icon = base64.b64decode(photo) con = _ldap.get_con() exists = account.jpegPhoto if not exists: ldap_mod = ldap.MOD_ADD else: ldap_mod = ldap.MOD_REPLACE mod = (ldap_mod, key, bin_icon) mod_attrs = [mod] con.modify_s(account.get_dn(), mod_attrs) return True return False
def ldap_multi_update(uid, attribute, value): dn = "uid={},cn=users,cn=accounts,dc=csh,dc=rit,dc=edu".format(uid) try: current = _ldap.get_member(uid, uid=True).get(attribute) except KeyError: current = [] remove = list(set(current) - set(value)) add = list(set(value) - set(current)) conn = _ldap.get_con() mod_list = [] for entry in remove: mod = (ldap.MOD_DELETE, attribute, entry.encode('utf-8')) mod_list.append(mod) for entry in add: if entry: mod = (ldap.MOD_ADD, attribute, entry.encode('utf-8')) mod_list.append(mod) conn.modify_s(dn, mod_list)
def ldap_get_group_desc(group): con = _ldap.get_con() results = con.search_s("cn=groups,cn=accounts,dc=csh,dc=rit,dc=edu", ldap.SCOPE_SUBTREE, "(cn=%s)" % group, ['description']) return results[0][1]['description'][0].decode('utf-8')