| 100 |
can.append(target) |
can.append(target) |
| 101 |
|
|
| 102 |
def getKeyrings(): |
def getKeyrings(): |
| 103 |
|
"""Extracts keys from various keyrings (DDs, DMs, emeritus and removed""" |
| 104 |
for keyring, file in {'keyring': 'debian-keyring', \ |
for keyring, file in {'keyring': 'debian-keyring', \ |
| 105 |
'emeritus': 'emeritus-keyring', \ |
'emeritus': 'emeritus-keyring', \ |
| 106 |
'removed': 'removed-keys' }.iteritems(): |
'removed': 'removed-keys' }.iteritems(): |
| 107 |
for type in [ 'gpg' , 'pgp' ]: |
for type in [ 'gpg' , 'pgp' ]: |
| 108 |
contents = os.popen("gpg --no-default-keyring \ |
parseKeyring("/org/qa.debian.org/data/keyrings/keyrings/%s.%s" % (file, type), keyring) |
| 109 |
--no-expensive-trust-checks \ |
# Add DM keyring |
| 110 |
--keyring /org/qa.debian.org/data/keyrings/keyrings/%s.%s --list-keys \ |
parseKeyring("/org/qa.debian.org/data/keyrings/keyrings/debian-maintainers.gpg", "dm") |
| 111 |
--with-colons --fingerprint" % (file, type)) |
|
| 112 |
fpr = None |
def parseKeyring(keyring_file, keyring): |
| 113 |
entry = None |
"""Parses the given keyring_file, adding its keys to keyring set (used below)""" |
| 114 |
lastpub = None |
contents = os.popen("gpg --no-default-keyring \ |
| 115 |
for line in contents.readlines(): |
--no-expensive-trust-checks \ |
| 116 |
items = line.split(':') |
--keyring %s --list-keys \ |
| 117 |
uid = None |
--with-colons --fingerprint" % keyring_file) |
| 118 |
if items[0] == 'pub': |
fpr = None |
| 119 |
fpr = entry = None |
entry = None |
| 120 |
lastpub = items[9].strip() |
lastpub = None |
| 121 |
continue |
for line in contents.readlines(): |
| 122 |
elif items[0] == 'fpr': |
items = line.split(':') |
| 123 |
fpr = "gpg:" + items[9].strip() |
uid = None |
| 124 |
extraInfo(fpr, "x:gpg:keyring:"+fpr[4:] + ":" + keyring) |
if items[0] == 'pub': |
| 125 |
uid = lastpub |
fpr = entry = None |
| 126 |
elif items[0] == 'uid': |
lastpub = items[9].strip() |
| 127 |
uid = items[9].strip() |
continue |
| 128 |
else: |
elif items[0] == 'fpr': |
| 129 |
continue |
fpr = "gpg:" + items[9].strip() |
| 130 |
# Do stuff with 'uid' |
extraInfo(fpr, "x:gpg:keyring:"+fpr[4:] + ":" + keyring) |
| 131 |
weakRef("uid:"+uid, fpr) |
uid = lastpub |
| 132 |
uid, email = parseUid(uid) |
elif items[0] == 'uid': |
| 133 |
if email: |
uid = items[9].strip() |
| 134 |
email = "email:" + email |
else: |
| 135 |
merge(fpr, email) |
continue |
| 136 |
extraInfo(fpr, "x:"+fpr+":"+email) |
# Do stuff with 'uid' |
| 137 |
if uid: |
weakRef("uid:"+uid, fpr) |
| 138 |
addName(uid, fpr) |
uid, email = parseUid(uid) |
| 139 |
extraInfo(fpr, "realname:"+uid) |
if email: |
| 140 |
extraInfo(fpr, "x:"+fpr+":realname:"+uid) |
email = "email:" + email |
| 141 |
contents.close() |
merge(fpr, email) |
| 142 |
|
extraInfo(fpr, "x:"+fpr+":"+email) |
| 143 |
|
if uid: |
| 144 |
|
addName(uid, fpr) |
| 145 |
|
extraInfo(fpr, "realname:"+uid) |
| 146 |
|
extraInfo(fpr, "x:"+fpr+":realname:"+uid) |
| 147 |
|
contents.close() |
| 148 |
|
|
| 149 |
def getLdap(): |
def getLdap(): |
| 150 |
l = ldap.initialize("ldap://db.debian.org/") |
l = ldap.initialize("ldap://db.debian.org/") |
| 263 |
ldap, realname, email, package = [], [], [], [] |
ldap, realname, email, package = [], [], [], [] |
| 264 |
extra, expl, warnings, mia = [], [], [], [] |
extra, expl, warnings, mia = [], [], [], [] |
| 265 |
gecos = "" |
gecos = "" |
| 266 |
keyring = {'keyring': [], 'emeritus': [], 'removed': [], 'ldap': []} |
keyring = {'keyring': [], 'emeritus': [], 'removed': [], 'ldap': [], 'dm':[]} |
| 267 |
for item in sets.Set(v[1]+v[2]): |
for item in sets.Set(v[1]+v[2]): |
| 268 |
if item[:5] == "ldap:": |
if item[:5] == "ldap:": |
| 269 |
ldap.append(item[5:]) |
ldap.append(item[5:]) |