Added initial aliases stuff
This commit is contained in:
parent
f7540a702c
commit
fc0b5d66ef
1 changed files with 30 additions and 3 deletions
|
@ -73,7 +73,6 @@ parser.add_option('--nossh',
|
||||||
default = False,
|
default = False,
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
help = _('Do not create ssh keys'))
|
help = _('Do not create ssh keys'))
|
||||||
|
|
||||||
parser.add_option('-s', '--server',
|
parser.add_option('-s', '--server',
|
||||||
dest = 'FAS_URL',
|
dest = 'FAS_URL',
|
||||||
default = None,
|
default = None,
|
||||||
|
@ -89,6 +88,12 @@ parser.add_option('-d', '--disable',
|
||||||
default = False,
|
default = False,
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
help = _('Disable FAS synced shell accounts'))
|
help = _('Disable FAS synced shell accounts'))
|
||||||
|
parser.add_option('-a', '--aliases',
|
||||||
|
dest = 'aliases',
|
||||||
|
default = False,
|
||||||
|
action = 'store_true',
|
||||||
|
help = _('Sync mail aliases'))
|
||||||
|
|
||||||
|
|
||||||
(opts, args) = parser.parse_args()
|
(opts, args) = parser.parse_args()
|
||||||
|
|
||||||
|
@ -120,6 +125,7 @@ class MakeShellAccounts(BaseClient):
|
||||||
groups = None
|
groups = None
|
||||||
people = None
|
people = None
|
||||||
memberships = None
|
memberships = None
|
||||||
|
emails = None
|
||||||
group_mapping = {}
|
group_mapping = {}
|
||||||
|
|
||||||
def mk_tempdir(self):
|
def mk_tempdir(self):
|
||||||
|
@ -194,6 +200,14 @@ class MakeShellAccounts(BaseClient):
|
||||||
print >> sys.stderr, 'Could not determine shell for %s. Defaulting to /sbin/nologin' % username
|
print >> sys.stderr, 'Could not determine shell for %s. Defaulting to /sbin/nologin' % username
|
||||||
return '/sbin/nologin'
|
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 passwd_text(self, people=None):
|
def passwd_text(self, people=None):
|
||||||
i = 0
|
i = 0
|
||||||
passwd_file = codecs.open(self.temp + '/passwd.txt', mode='w', encoding='utf-8')
|
passwd_file = codecs.open(self.temp + '/passwd.txt', mode='w', encoding='utf-8')
|
||||||
|
@ -229,7 +243,6 @@ class MakeShellAccounts(BaseClient):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def groups_text(self, groups=None, people=None):
|
def groups_text(self, groups=None, people=None):
|
||||||
i = 0
|
i = 0
|
||||||
file = open(self.temp + '/group.txt', 'w')
|
file = open(self.temp + '/group.txt', 'w')
|
||||||
|
@ -282,6 +295,11 @@ class MakeShellAccounts(BaseClient):
|
||||||
self.people = self.send_request('user/list', auth=True, input=params)['people']
|
self.people = self.send_request('user/list', auth=True, input=params)['people']
|
||||||
return self.people
|
return self.people
|
||||||
|
|
||||||
|
def email_list(self, search='*'):
|
||||||
|
params = {'search' : search}
|
||||||
|
self.emails = self.send_request('user/email_list', auth=True, input=params)['emails']
|
||||||
|
return self.emails
|
||||||
|
|
||||||
def make_group_db(self):
|
def make_group_db(self):
|
||||||
self.groups_text()
|
self.groups_text()
|
||||||
os.system('makedb -o %s/group.db %s/group.txt' % (self.temp, self.temp))
|
os.system('makedb -o %s/group.db %s/group.txt' % (self.temp, self.temp))
|
||||||
|
@ -354,6 +372,7 @@ class MakeShellAccounts(BaseClient):
|
||||||
f.close()
|
f.close()
|
||||||
os.chmod(os.path.join(ssh_dir, 'authorized_keys'), 0600)
|
os.chmod(os.path.join(ssh_dir, 'authorized_keys'), 0600)
|
||||||
os.path.walk(ssh_dir, _chown, [person['id'], person['id']])
|
os.path.walk(ssh_dir, _chown, [person['id'], person['id']])
|
||||||
|
|
||||||
|
|
||||||
def enable():
|
def enable():
|
||||||
temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp').strip('"'))
|
temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp').strip('"'))
|
||||||
|
@ -422,5 +441,13 @@ if __name__ == '__main__':
|
||||||
if not opts.no_ssh_keys:
|
if not opts.no_ssh_keys:
|
||||||
fas.create_ssh_keys()
|
fas.create_ssh_keys()
|
||||||
fas.rm_tempdir()
|
fas.rm_tempdir()
|
||||||
if not (opts.install or opts.enable or opts.disable):
|
if opts.aliases:
|
||||||
|
try:
|
||||||
|
fas = MakeShellAccounts(FAS_URL, config.get('global', 'login').strip('"'), config.get('global', 'password').strip('"'), False)
|
||||||
|
except AuthError, e:
|
||||||
|
print >> sys.stderr, e
|
||||||
|
sys.exit(1)
|
||||||
|
fas.create_aliases()
|
||||||
|
|
||||||
|
if not (opts.install or opts.enable or opts.disable or opts.aliases):
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue