]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/utils.py
Merge remote-tracking branch 'drkranz/uid' into merge
[dak.git] / daklib / utils.py
index 31c22cbb63ca222b32ef709fd0dcee0481ca4165..f702db3fd74d44a93caa314310458fe1a4b16387 100644 (file)
@@ -40,6 +40,7 @@ import time
 import re
 import email as modemail
 import subprocess
+import ldap
 
 from dbconn import DBConn, get_architecture, get_component, get_suite, \
                    get_override_type, Keyring, session_wrapper, \
@@ -1396,13 +1397,33 @@ def gpg_get_key_addresses(fingerprint):
     if result == 0:
         for l in output.split('\n'):
             m = re_gpg_uid.match(l)
-            if m:
+            if not m:
+                continue
+            address = m.group(1)
+            if address.endswith('@debian.org'):
+                # prefer @debian.org addresses
+                # TODO: maybe not hardcode the domain
+                addresses.insert(0, address)
+            else:
                 addresses.append(m.group(1))
     key_uid_email_cache[fingerprint] = addresses
     return addresses
 
 ################################################################################
 
+def get_login_from_ldap(fingerprint):
+    """retrieve login from LDAP linked to a given fingerprint"""
+
+    LDAPDn = Cnf['Import-LDAP-Fingerprints::LDAPDn']
+    LDAPServer = Cnf['Import-LDAP-Fingerprints::LDAPServer']
+    l = ldap.open(LDAPServer)
+    l.simple_bind_s('','')
+    Attrs = l.search_s(LDAPDn, ldap.SCOPE_ONELEVEL,
+                       '(keyfingerprint=%s)' % fingerprint, ['uid'])
+    return Attrs[0][1]['uid'][0]
+
+################################################################################
+
 def clean_symlink (src, dest, root):
     """
     Relativize an absolute symlink from 'src' -> 'dest' relative to 'root'.