X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=daklib%2Futils.py;h=fbe3b1a025c55ecaaeb2d881c81a708987154a9e;hb=7b274dc7e257ca19d101b2529fd898a446964d1f;hp=1034628ea217ce39b383d0feed9ddce67ad4c90a;hpb=1617994b76d0cd90ce89a7e6d9f7bb886439f010;p=dak.git diff --git a/daklib/utils.py b/daklib/utils.py index 1034628e..fbe3b1a0 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -44,6 +44,7 @@ import subprocess import ldap import daklib.config as config +import daklib.daksubprocess from dbconn import DBConn, get_architecture, get_component, get_suite, \ get_override_type, Keyring, session_wrapper, \ get_active_keyring_paths, get_primary_keyring_path, \ @@ -65,7 +66,6 @@ from collections import defaultdict ################################################################################ default_config = "/etc/dak/dak.conf" #: default dak config, defines host properties -default_apt_config = "/etc/dak/apt.conf" #: default apt config, not normally used alias_cache = None #: Cache for email alias checks key_uid_email_cache = {} #: Cache for email addresses from gpg key uids @@ -78,7 +78,7 @@ known_hashes = [("sha1", apt_pkg.sha1sum, (1, 8)), # code in lenny's Python. This also affects commands.getoutput and # commands.getstatus. def dak_getstatusoutput(cmd): - pipe = subprocess.Popen(cmd, shell=True, universal_newlines=True, + pipe = daklib.daksubprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = pipe.stdout.read() @@ -780,7 +780,7 @@ def which_conf_file (): homedir = os.getenv("HOME") confpath = os.path.join(homedir, "/etc/dak.conf") if os.path.exists(confpath): - apt_pkg.ReadConfigFileISC(Cnf,confpath) + apt_pkg.read_config_file_isc(Cnf,confpath) # We are still in here, so there is no local config file or we do # not allow local files. Do the normal stuff. @@ -789,20 +789,6 @@ def which_conf_file (): return default_config -def which_apt_conf_file (): - res = socket.getfqdn() - # In case we allow local config files per user, try if one exists - if Cnf.find_b("Config::" + res + "::AllowLocalConfig"): - homedir = os.getenv("HOME") - confpath = os.path.join(homedir, "/etc/dak.conf") - if os.path.exists(confpath): - apt_pkg.ReadConfigFileISC(Cnf,default_config) - - if Cnf.get("Config::" + res + "::AptConfig"): - return Cnf["Config::" + res + "::AptConfig"] - else: - return default_apt_config - def which_alias_file(): hostname = socket.getfqdn() aliasfn = '/var/lib/misc/'+hostname+'/forward-alias' @@ -1439,6 +1425,30 @@ def get_logins_from_ldap(fingerprint='*'): ################################################################################ +def get_users_from_ldap(): + """retrieve login and user names from LDAP""" + + 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, + '(uid=*)', ['uid', 'cn', 'mn', 'sn']) + users = {} + for elem in Attrs: + elem = elem[1] + name = [] + for k in ('cn', 'mn', 'sn'): + try: + if elem[k][0] != '-': + name.append(elem[k][0]) + except KeyError: + pass + users[' '.join(name)] = elem['uid'][0] + return users + +################################################################################ + def clean_symlink (src, dest, root): """ Relativize an absolute symlink from 'src' -> 'dest' relative to 'root'. @@ -1622,7 +1632,7 @@ def get_packages_from_ftp(root, suite, component, architecture): if (result != 0): fubar("Gunzip invocation failed!\n%s\n" % (output), result) packages = open_file(temp_file) - Packages = apt_pkg.ParseTagFile(packages) + Packages = apt_pkg.TagFile(packages) os.unlink(temp_file) return Packages @@ -1680,7 +1690,7 @@ def call_editor(text="", suffix=".txt"): try: print >>tmp, text, tmp.close() - subprocess.check_call([editor, tmp.name]) + daklib.daksubprocess.check_call([editor, tmp.name]) return open(tmp.name, 'r').read() finally: os.unlink(tmp.name) @@ -1756,7 +1766,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals if package in removals: continue parsed_dep = [] try: - parsed_dep += apt_pkg.ParseDepends(deps[package]) + parsed_dep += apt_pkg.parse_depends(deps[package]) except ValueError as e: print "Error for package %s: %s" % (package, e) for dep in parsed_dep: @@ -1825,7 +1835,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals # Remove [arch] information since we want to see breakage on all arches build_dep = re_build_dep_arch.sub("", build_dep) try: - parsed_dep += apt_pkg.ParseDepends(build_dep) + parsed_dep += apt_pkg.parse_depends(build_dep) except ValueError as e: print "Error for source %s: %s" % (source, e) for dep in parsed_dep: @@ -1837,7 +1847,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals component, = session.query(Component.component_name) \ .join(Component.overrides) \ .filter(Override.suite == overridesuite) \ - .filter(Override.package == source) \ + .filter(Override.package == re.sub('/(contrib|non-free)$', '', source)) \ .join(Override.overridetype).filter(OverrideType.overridetype == 'dsc') \ .first() if component != "main":