now proper groups only are included
This commit is contained in:
parent
3ae54e1139
commit
a3a40bdb02
1 changed files with 36 additions and 24 deletions
|
@ -96,7 +96,8 @@ FAS_URL = config.get('global', 'url')
|
||||||
class MakeShellAccounts(BaseClient):
|
class MakeShellAccounts(BaseClient):
|
||||||
temp = None
|
temp = None
|
||||||
groups = None
|
groups = None
|
||||||
People = None
|
people = None
|
||||||
|
memberships = None
|
||||||
|
|
||||||
def mk_tempdir(self):
|
def mk_tempdir(self):
|
||||||
self.temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp'))
|
self.temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp'))
|
||||||
|
@ -104,6 +105,15 @@ class MakeShellAccounts(BaseClient):
|
||||||
def rm_tempdir(self):
|
def rm_tempdir(self):
|
||||||
rmtree(self.temp)
|
rmtree(self.temp)
|
||||||
|
|
||||||
|
def is_valid_user(self, person_id):
|
||||||
|
''' Determine if person is valid on this machine as defined in the
|
||||||
|
config file. I worry that this is going to be horribly inefficient
|
||||||
|
with large numbers of users and groups.'''
|
||||||
|
for member in self.memberships:
|
||||||
|
for group in self.memberships[member]:
|
||||||
|
if group['person_id'] == person_id:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def shadow_text(self, people=None):
|
def shadow_text(self, people=None):
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -113,14 +123,15 @@ class MakeShellAccounts(BaseClient):
|
||||||
people = self.people_list()
|
people = self.people_list()
|
||||||
for person in people:
|
for person in people:
|
||||||
uid = person['id']
|
uid = person['id']
|
||||||
username = person['username']
|
if self.is_valid_user(uid):
|
||||||
password = person['password']
|
username = person['username']
|
||||||
file.write("=%i %s:%s:99999:0:99999:7:::\n" % (uid, username, password))
|
password = person['password']
|
||||||
file.write("0%i %s:%s:99999:0:99999:7:::\n" % (i, username, password))
|
file.write("=%i %s:%s:99999:0:99999:7:::\n" % (uid, username, password))
|
||||||
file.write(".%s %s:%s:99999:0:99999:7:::\n" % (username, username, password))
|
file.write("0%i %s:%s:99999:0:99999:7:::\n" % (i, username, password))
|
||||||
i = i + 1
|
file.write(".%s %s:%s:99999:0:99999:7:::\n" % (username, username, password))
|
||||||
|
i = i + 1
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
def passwd_text(self, people=None):
|
def passwd_text(self, people=None):
|
||||||
i = 0
|
i = 0
|
||||||
file = open(self.temp + '/passwd.txt', 'w')
|
file = open(self.temp + '/passwd.txt', 'w')
|
||||||
|
@ -128,16 +139,16 @@ class MakeShellAccounts(BaseClient):
|
||||||
self.people = self.people_list()
|
self.people = self.people_list()
|
||||||
for person in self.people:
|
for person in self.people:
|
||||||
uid = person['id']
|
uid = person['id']
|
||||||
username = person['username']
|
if self.is_valid_user(uid):
|
||||||
human_name = person['human_name']
|
username = person['username']
|
||||||
home_dir = "%s/%s" % (config.get('users', 'home'), username)
|
human_name = person['human_name']
|
||||||
shell = config.get('users', 'shell')
|
home_dir = "%s/%s" % (config.get('users', 'home'), username)
|
||||||
file.write("=%s %s:x:%i:%i:%s:%s:%s\n" % (uid, username, uid, uid, human_name, home_dir, shell))
|
shell = config.get('users', 'shell')
|
||||||
file.write("0%i %s:x:%i:%i:%s:%s:%s\n" % (i, username, uid, uid, human_name, home_dir, shell))
|
file.write("=%s %s:x:%i:%i:%s:%s:%s\n" % (uid, username, uid, uid, human_name, home_dir, shell))
|
||||||
file.write(".%s %s:x:%i:%i:%s:%s:%s\n" % (username, username, uid, uid, human_name, home_dir, shell))
|
file.write("0%i %s:x:%i:%i:%s:%s:%s\n" % (i, username, uid, uid, human_name, home_dir, shell))
|
||||||
i = i + 1
|
file.write(".%s %s:x:%i:%i:%s:%s:%s\n" % (username, username, uid, uid, human_name, home_dir, shell))
|
||||||
|
i = i + 1
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
||||||
def groups_text(self, groups=None, people=None):
|
def groups_text(self, groups=None, people=None):
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -158,29 +169,30 @@ class MakeShellAccounts(BaseClient):
|
||||||
file.write(".%s %s:x:%i:\n" % (username, username, uid))
|
file.write(".%s %s:x:%i:\n" % (username, username, uid))
|
||||||
i = i + 1
|
i = i + 1
|
||||||
|
|
||||||
for group in groups['groups']:
|
for group in groups:
|
||||||
gid = group['id']
|
gid = group['id']
|
||||||
name = group['name']
|
name = group['name']
|
||||||
memberships = ''
|
|
||||||
try:
|
try:
|
||||||
''' Shoot me now I know this isn't right '''
|
''' Shoot me now I know this isn't right '''
|
||||||
members = []
|
members = []
|
||||||
for member in groups['memberships'][name]:
|
for member in self.memberships[name]:
|
||||||
members.append(usernames[member['person_id']])
|
members.append(usernames[member['person_id']])
|
||||||
memberships = ','.join(members)
|
memberships = ','.join(members)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
''' No users exist in the group '''
|
''' No users exist in the group '''
|
||||||
pass
|
pass
|
||||||
file.write("=%i %s:x:%i:%s\n" % (gid, name, gid, memberships))
|
file.write("=%i %s:x:%i:%s\n" % (gid, name, gid, self.memberships))
|
||||||
file.write("0%i %s:x:%i:%s\n" % (i, name, gid, memberships))
|
file.write("0%i %s:x:%i:%s\n" % (i, name, gid, self.memberships))
|
||||||
file.write(".%s %s:x:%i:%s\n" % (name, name, gid, memberships))
|
file.write(".%s %s:x:%i:%s\n" % (name, name, gid, self.memberships))
|
||||||
i = i + 1
|
i = i + 1
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
def group_list(self, search='*'):
|
def group_list(self, search='*'):
|
||||||
params = {'search' : search}
|
params = {'search' : search}
|
||||||
self.groups = self.send_request('group/list', auth=True, input=params)
|
request = self.send_request('group/list', auth=True, input=params)
|
||||||
|
self.groups = request['groups']
|
||||||
|
self.memberships = request['memberships']
|
||||||
return self.groups
|
return self.groups
|
||||||
|
|
||||||
def people_list(self, search='*'):
|
def people_list(self, search='*'):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue