X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fimport_users_from_passwd.py;h=ed121398fe43ece4320a65dc4d6a214c3d1c4835;hb=519c1dbf89c13557afc15a429164616ac563d379;hp=958486710251b99e5ac5e2ebf5a6cf75efef37b2;hpb=f0bfd37e7286156598d79b53501ebe2000bb7924;p=dak.git diff --git a/dak/import_users_from_passwd.py b/dak/import_users_from_passwd.py index 95848671..ed121398 100755 --- a/dak/import_users_from_passwd.py +++ b/dak/import_users_from_passwd.py @@ -30,6 +30,7 @@ ################################################################################ import pwd +import grp import sys import re import apt_pkg @@ -63,8 +64,8 @@ def main (): if not cnf.has_key("Import-Users-From-Passwd::Options::%s" % (i)): cnf["Import-Users-From-Passwd::Options::%s" % (i)] = "" - arguments = apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv) - Options = cnf.SubTree("Import-Users-From-Passwd::Options") + arguments = apt_pkg.parse_commandline(cnf.Cnf, Arguments, sys.argv) + Options = cnf.subtree("Import-Users-From-Passwd::Options") if Options["Help"]: usage() @@ -73,15 +74,18 @@ def main (): usage(1) session = DBConn().session() - valid_gid = int(cnf.get("Import-Users-From-Passwd::ValidGID","")) + valid_gid = cnf.get("Import-Users-From-Passwd::ValidGID", "") + if valid_gid: + debiangrp = grp.getgrnam(valid_gid).gr_mem + else: + debiangrp = [] passwd_unames = {} for entry in pwd.getpwall(): uname = entry[0] - gid = entry[3] - if valid_gid and gid != valid_gid: + if uname not in debiangrp: if Options["Verbose"]: - print "Skipping %s (GID %s != Valid GID %s)." % (uname, gid, valid_gid) + print "Skipping %s (Not in group %s)." % (uname, valid_gid) continue passwd_unames[uname] = "" @@ -115,7 +119,12 @@ def main (): # NB: I never figured out how to use a bind parameter for this query # XXX: Fix this as it looks like a potential SQL injection attack to me # (hence the safe_name match we do) - q = session.execute('CREATE USER "%s"' % (uname)) + try: + q = session.execute('CREATE USER "%s"' % (uname)) + session.commit() + except Exception as e: + utils.warn("Could not create user %s (%s)" % (uname, str(e))) + session.rollback() else: print "NOT CREATING USER %s. Doesn't match safety regex" % uname