still working on aliases, getting closer

This commit is contained in:
Michael McGrath 2008-03-09 14:21:29 -05:00
parent 287f132c63
commit 958a530c33

View file

@ -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()