From 958a530c33cc2a2759ea72b97bb0ba46524adcde Mon Sep 17 00:00:00 2001 From: Michael McGrath Date: Sun, 9 Mar 2008 14:21:29 -0500 Subject: [PATCH] still working on aliases, getting closer --- fas/client/fasClient.py | 56 +++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/fas/client/fasClient.py b/fas/client/fasClient.py index 5372de9..edf2b0d 100755 --- a/fas/client/fasClient.py +++ b/fas/client/fasClient.py @@ -200,13 +200,8 @@ class MakeShellAccounts(BaseClient): print >> sys.stderr, 'Could not determine shell for %s. Defaulting to /sbin/nologin' % username return '/sbin/nologin' - def aliases_txt(self): - ''' update your mail aliases file ''' - self.emails = self.email_list() - email_file = codecs.open(self.temp + '/aliases', mode='w', encoding='utf-8') - for person in self.emails: - email_file.write("%s: %s" % (person, self.emails[person])) - email_file.close() + def install_aliases_txt(self): + move(self.temp + '/aliases', '/tmp/aliases') def passwd_text(self, people=None): i = 0 @@ -243,6 +238,17 @@ class MakeShellAccounts(BaseClient): return True return False + def usernames(self): + usernames = {} + if not self.people: + self.people_list() + for person in self.people: + uid = person['id'] + if self.valid_user_group(uid): + username = person['username'] + usernames[uid] = username + return usernames + def groups_text(self, groups=None, people=None): i = 0 file = open(self.temp + '/group.txt', 'w') @@ -252,17 +258,16 @@ class MakeShellAccounts(BaseClient): people = self.people_list() ''' First create all of our users/groups combo ''' - usernames = {} for person in people: uid = person['id'] if self.valid_user_group(uid): username = person['username'] - usernames[uid] = username file.write("=%i %s:x:%i:\n" % (uid, username, uid)) file.write("0%i %s:x:%i:\n" % (i, username, uid)) file.write(".%s %s:x:%i:\n" % (username, username, uid)) i = i + 1 + usernames = self.usernames() for group in groups: gid = group['id'] name = group['name'] @@ -373,6 +378,35 @@ class MakeShellAccounts(BaseClient): os.chmod(os.path.join(ssh_dir, 'authorized_keys'), 0600) os.path.walk(ssh_dir, _chown, [person['id'], person['id']]) + def make_aliases_txt(self): + ''' update your mail aliases file ''' + if not self.groups: + groups = self.group_list() + + self.emails = self.email_list() + email_file = codecs.open(self.temp + '/aliases', mode='w', encoding='utf-8') + email_template = codecs.open(config.get('host', 'aliases_template').strip('"')) + email_file.write("# Generated by fasClient\n") + for line in email_template.readlines(): + email_file.write(line) + sorted = self.emails.keys() + sorted.sort() + for person in sorted: + email_file.write("%s: %s\n" % (person, self.emails[person])) + usernames = self.usernames() + for group in self.groups: + name = group['name'] + members = {} + for membership in self.memberships[name]: + role_type = membership['role_type'] + person = usernames[membership['person_id']] + try: + members[role_type].append(person) + except KeyError: + members[role_type] = [person] + for role in members: + print "%s-%s: %s" % (name, role, members[role]) + email_file.close() def enable(): temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp').strip('"')) @@ -447,7 +481,9 @@ if __name__ == '__main__': except AuthError, e: print >> sys.stderr, e sys.exit(1) - fas.create_aliases() + fas.mk_tempdir() + fas.make_aliases_txt() + fas.install_aliases_txt() if not (opts.install or opts.enable or opts.disable or opts.aliases): parser.print_help()