From: Ansgar Burchardt Date: Mon, 17 Sep 2012 14:27:33 +0000 (+0200) Subject: Merge branch 'master' into pu/backports-merge X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=1617994b76d0cd90ce89a7e6d9f7bb886439f010;hp=-c;p=dak.git Merge branch 'master' into pu/backports-merge --- 1617994b76d0cd90ce89a7e6d9f7bb886439f010 diff --combined daklib/config.py index 99b84dd6,65874250..339604a1 --- a/daklib/config.py +++ b/daklib/config.py @@@ -28,7 -28,6 +28,7 @@@ Config access clas ################################################################################ +import grp import os import apt_pkg import socket @@@ -77,19 -76,6 +77,19 @@@ class Config(object) if conffile: apt_pkg.read_config_file_isc(self.Cnf, conffile) + # Read group-specific options + if 'ByGroup' in self.Cnf: + bygroup = self.Cnf.subtree('ByGroup') + groups = set([os.getgid()]) + groups.update(os.getgroups()) + + for group in bygroup.list(): + gid = grp.getgrnam(group).gr_gid + if gid in groups: + if bygroup.get(group): + apt_pkg.read_config_file_isc(self.Cnf, bygroup[group]) + break + # Rebind some functions # TODO: Clean this up self.get = self.Cnf.get @@@ -134,7 -120,8 +134,8 @@@ for field in [('db_revision', None, int), ('defaultsuitename', 'unstable', str), ('exportpath', '', str), - ('unprivgroup', None, str) + ('unprivgroup', None, str), + ('use_extfiles', None, int) ]: setattr(self, 'get_%s' % field[0], lambda s=None, x=field[0], y=field[1], z=field[2]: self.get_db_value(x, y, z)) setattr(Config, '%s' % field[0], property(fget=getattr(self, 'get_%s' % field[0]))) diff --combined daklib/utils.py index ec929652,63d8f471..1034628e --- a/daklib/utils.py +++ b/daklib/utils.py @@@ -43,7 -43,6 +43,7 @@@ import email as modemai import subprocess import ldap +import daklib.config as config from dbconn import DBConn, get_architecture, get_component, get_suite, \ get_override_type, Keyring, session_wrapper, \ get_active_keyring_paths, get_primary_keyring_path, \ @@@ -604,16 -603,8 +604,16 @@@ def build_package_list(dsc, session = N ################################################################################ -def send_mail (message, filename=""): - """sendmail wrapper, takes _either_ a message string or a file as arguments""" +def send_mail (message, filename="", whitelists=None): + """sendmail wrapper, takes _either_ a message string or a file as arguments + + @type whitelists: list of (str or None) + @param whitelists: path to whitelists. C{None} or an empty list whitelists + everything, otherwise an address is whitelisted if it is + included in any of the lists. + In addition a global whitelist can be specified in + Dinstall::MailWhiteList. + """ maildir = Cnf.get('Dir::Mail') if maildir: @@@ -633,24 -624,23 +633,24 @@@ os.write (fd, message) os.close (fd) - if Cnf.has_key("Dinstall::MailWhiteList") and \ - Cnf["Dinstall::MailWhiteList"] != "": + if whitelists is None or None in whitelists: + whitelists = [] + if Cnf.get('Dinstall::MailWhiteList', ''): + whitelists.append(Cnf['Dinstall::MailWhiteList']) + if len(whitelists) != 0: message_in = open_file(filename) message_raw = modemail.message_from_file(message_in) message_in.close(); whitelist = []; - whitelist_in = open_file(Cnf["Dinstall::MailWhiteList"]) - try: + for path in whitelists: + with open_file(path, 'r') as whitelist_in: for line in whitelist_in: if not re_whitespace_comment.match(line): if re_re_mark.match(line): whitelist.append(re.compile(re_re_mark.sub("", line.strip(), 1))) else: whitelist.append(re.compile(re.escape(line.strip()))) - finally: - whitelist_in.close() # Fields to check. fields = ["To", "Bcc", "Cc"] @@@ -667,7 -657,7 +667,7 @@@ mail_whitelisted = 1 break if not mail_whitelisted: - print "Skipping %s since it's not in %s" % (item, Cnf["Dinstall::MailWhiteList"]) + print "Skipping {0} since it's not whitelisted".format(item) continue match.append(item) @@@ -1513,7 -1503,8 +1513,8 @@@ def temp_dirname(parent=None, prefix="d if mode: os.chmod(tfname, mode) if group: - os.chown(tfname, -1, group) + gid = grp.getgrnam(group).gr_gid + os.chown(tfname, -1, gid) return tfname ################################################################################ @@@ -1551,7 -1542,14 +1552,7 @@@ def get_changes_files(from_dir) ################################################################################ -apt_pkg.init() - -Cnf = apt_pkg.Configuration() -if not os.getenv("DAK_TEST"): - apt_pkg.read_config_file_isc(Cnf,default_config) - -if which_conf_file() != default_config: - apt_pkg.read_config_file_isc(Cnf,which_conf_file()) +Cnf = config.Config().Cnf ################################################################################