Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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)
Esempio n. 7
0
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')