未验证 提交 7834435e 编写于 作者: A Ansgar

decode LDAP attributes

python-ldap returns all attributes as `bytes` under Python 3, but we
want to use text strings for names or fingerprints.
上级 d42a5bda
......@@ -861,7 +861,7 @@ __all__.append('get_or_set_fingerprint')
def get_ldap_name(entry):
name = []
for k in ["cn", "mn", "sn"]:
ret = entry.get(k)
ret = six.ensure_str(entry.get(k))
if ret and ret[0] != "" and ret[0] != "-":
name.append(ret[0])
return " ".join(name)
......@@ -965,11 +965,12 @@ class Keyring(object):
for i in Attrs:
entry = i[1]
uid = entry["uid"][0]
uid = six.ensure_str(entry["uid"][0])
name = get_ldap_name(entry)
fingerprints = entry["keyFingerPrint"]
keyid = None
for f in fingerprints:
f = six.ensure_str(f)
key = self.fpr_lookup.get(f, None)
if key not in self.keys:
continue
......
......@@ -786,7 +786,9 @@ def get_logins_from_ldap(fingerprint='*'):
['uid', 'keyfingerprint'])
login = {}
for elem in Attrs:
login[elem[1]['keyFingerPrint'][0]] = elem[1]['uid'][0]
fpr = six.ensure_str(elem[1]['keyFingerPrint'][0])
uid = six.ensure_str(elem[1]['uid'][0])
login[fpr] = uid
return login
################################################################################
......@@ -807,8 +809,9 @@ def get_users_from_ldap():
name = []
for k in ('cn', 'mn', 'sn'):
try:
if elem[k][0] != '-':
name.append(elem[k][0])
value = six.ensure_str(elem[k][0])
if value and value[0] != '-':
name.append(value)
except KeyError:
pass
users[' '.join(name)] = elem['uid'][0]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册