diff options
author | Pavel Zuna <pzuna@redhat.com> | 2009-06-16 13:44:37 +0200 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2009-07-02 13:33:01 -0400 |
commit | e1e1db9c9fc71c88e847aba8a9a02bc383317c18 (patch) | |
tree | 13f21fa86f4669710106ed8f1eb5dd812ca7e74b /ipalib/plugins/user2.py | |
parent | 8c7883364ca3c73c9e2c503428495a4405b44e39 (diff) | |
download | freeipa.git-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.tar.gz freeipa.git-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.tar.xz freeipa.git-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.zip |
Rename plugins2 files (remove '2' suffix').
Diffstat (limited to 'ipalib/plugins/user2.py')
-rw-r--r-- | ipalib/plugins/user2.py | 405 |
1 files changed, 0 insertions, 405 deletions
diff --git a/ipalib/plugins/user2.py b/ipalib/plugins/user2.py deleted file mode 100644 index dda09d2c..00000000 --- a/ipalib/plugins/user2.py +++ /dev/null @@ -1,405 +0,0 @@ -# Authors: -# Jason Gerard DeRose <jderose@redhat.com> -# Pavel Zuna <pzuna@redhat.com> -# -# Copyright (C) 2008 Red Hat -# see file 'COPYING' for use and warranty information -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; version 2 only -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -""" -Users (Identity) -""" - -from ipalib import api, crud, errors -from ipalib import Command, Object -from ipalib import Flag, Int, Password, Str - -# parent DN -_container_dn = api.env.container_user - -# attributes displayed by default -_default_attributes = [ - 'uid', 'givenname', 'sn', 'homedirectory', 'loginshell' -] - - -class user2(Object): - """ - User object. - """ - - takes_params = ( - Str('givenname', - cli_name='first', - doc='first name', - ), - Str('sn', - cli_name='last', - doc='last name', - ), - Str('uid', - cli_name='user', - doc='login name', - primary_key=True, - default_from=lambda givenname, sn: givenname[0] + sn, - normalizer=lambda value: value.lower(), - ), - Str('gecos?', - doc='GECOS field', - default_from=lambda uid: uid, - ), - Str('homedirectory?', - cli_name='homedir', - doc='home directory', - default_from=lambda uid: '/home/%s' % uid, - ), - Str('loginshell?', - cli_name='shell', - default=u'/bin/sh', - doc='login shell', - ), - Str('krbprincipalname?', - cli_name='principal', - doc='Kerberos principal name', - default_from=lambda uid: '%s@%s' % (uid, api.env.realm), - ), - Str('mail?', - cli_name='email', - doc='e-mail address', - ), - Password('userpassword?', - cli_name='password', - doc='password', - ), - Int('uidnumber?', - cli_name='uid', - doc='UID (use this option to set it manually)', - ), - Str('street?', - cli_name='street', - doc='street address', - ), - ) - -api.register(user2) - - -class user2_create(crud.Create): - """ - Create new user. - """ - - def execute(self, *args, **options): - ldap = self.api.Backend.ldap2 - uid = args[0] - - # build entry attributes - entry_attrs = self.args_options_2_entry(*args, **options) - - # build entry DN - dn = ldap.make_dn(entry_attrs, 'uid', _container_dn) - - # get configuration entry attributes - config = ldap.get_ipa_config()[1] - - # fill in required attributes - entry_attrs['objectclass'] = config.get('ipauserobjectclasses') - - # fill default values - # uidNumber gets filled automatically by the DS dna_plugin - entry_attrs.setdefault('loginshell', config.get('ipadefaultloginshell')) - entry_attrs.setdefault('gecos', uid) - entry_attrs.setdefault( - 'krbprincipalname', '%s@%s' % (uid, self.api.env.realm) - ) - # hack so we can request separate first and last name in CLI - entry_attrs.setdefault( - 'cn', '%s %s' % (entry_attrs['givenname'], entry_attrs['sn']) - ) - if 'homedirectory' not in entry_attrs: - # get home's root directory from config - homes_root = config.get('ipahomesrootdir', '/home')[0] - # build user's home directory based on his uid - home_dir = '%s/%s' % (homes_root, uid) - home_dir = home_dir.replace('//', '/').rstrip('/') - entry_attrs['homedirectory'] = home_dir - - # we're adding new users to a default group, get it's DN and gidNumber - # get default group name from config - def_primary_group = config.get('ipadefaultprimarygroup') - # build the group's DN - group_parent_dn = self.api.env.container_group - group_rdn = ldap.make_rdn_from_attr('cn', def_primary_group) - group_dn = ldap.make_dn_from_rdn(group_rdn, group_parent_dn) - # try to retrieve the group's gidNumber - try: - (group_dn, group_attrs) = ldap.get_entry(group_dn, ['gidnumber']) - except errors.NotFound: - error_msg = 'Default group for new users not found.' - raise errors.NotFound(reason=error_msg) - # fill default group's gidNumber - entry_attrs['gidnumber'] = group_attrs['gidnumber'] - - # create user entry - ldap.add_entry(dn, entry_attrs) - - # add user to default group - ldap.add_entry_to_group(dn, group_dn) - - # get user entry with created attributes for output - return ldap.get_entry(dn, entry_attrs.keys()) - - def output_for_cli(self, textui, result, *args, **options): - (dn, entry_attrs) = result - uid = args[0] - - textui.print_name(self.name) - textui.print_attribute('dn', dn) - textui.print_entry(entry_attrs) - textui.print_dashed('Created user "%s".' % uid) - -api.register(user2_create) - - -class user2_delete(crud.Delete): - """ - Delete user. - """ - - def execute(self, uid): - ldap = self.api.Backend.ldap2 - - if uid == 'admin': - # FIXME: add a specific exception for this? - raise errors.ExecutionError('Cannot delete user "admin".') - - # build entry DN - rdn = ldap.make_rdn_from_attr('uid', uid) - dn = ldap.make_dn_from_rdn(rdn, _container_dn) - - # delete user entry - ldap.delete_entry(dn) - - # blog about it - self.log.info('IPA: %s "%s"' % (self.name, uid)) - - # return something positive - return True - - def output_for_cli(self, textui, result, uid): - textui.print_name(self.name) - textui.print_dashed('Deleted user "%s".' % uid) - -api.register(user2_delete) - - -class user2_mod(crud.Update): - """ - Modify user. - """ - - def execute(self, uid, **options): - ldap = self.api.Backend.ldap2 - - # build entry attributes, don't include uid! - entry_attrs = self.args_options_2_entry(*tuple(), **options) - - # build entry DN - rdn = ldap.make_rdn_from_attr('uid', uid) - dn = ldap.make_dn_from_rdn(rdn, _container_dn) - - # update user entry - ldap.update_entry(dn, entry_attrs) - - # get user entry with modified + default attributes for output - return ldap.get_entry(dn, (entry_attrs.keys() + _default_attributes)) - - def output_for_cli(self, textui, result, uid, **options): - (dn, entry_attrs) = result - - textui.print_name(self.name) - textui.print_attribute('dn', dn) - textui.print_entry(entry_attrs) - textui.print_dashed('Modified user "%s".' % uid) - -api.register(user2_mod) - - -class user2_find(crud.Search): - """ - Search for users. - """ - - takes_options = ( - Flag('all', - doc='retrieve all attributes?', - ), - ) - - def execute(self, term, **options): - ldap = self.api.Backend.ldap2 - - # get list of search fields from config - config = ldap.get_ipa_config()[1] - search_fields = config.get('ipausersearchfields')[0].split(',') - - # look for term in all search fields - search_kw = self.args_options_2_entry(**options) - if term: - for f in search_fields: - search_kw[f] = '%s' % term - # build search filter - filter = ldap.make_filter(search_kw, exact=False) - - # select attributes we want to retrieve - if options['all']: - attrs_list = ['*'] - else: - attrs_list = _default_attributes - - # get matching entries - try: - (entries, truncated) = ldap.find_entries( - filter, attrs_list, _container_dn, ldap.SCOPE_ONELEVEL - ) - except errors.NotFound: - (entries, truncated) = (tuple(), False) - - return (entries, truncated) - - def output_for_cli(self, textui, result, term, **options): - (entries, truncated) = result - - textui.print_name(self.name) - for (dn, entry_attrs) in entries: - textui.print_attribute('dn', dn) - textui.print_entry(entry_attrs) - textui.print_plain('') - textui.print_count( - len(result), '%i user matched.', '%i users matched.' - ) - if truncated: - textui.print_dashed('These results are truncated.', below=False) - textui.print_dashed( - 'Please refine your search and try again.', above=False - ) - -api.register(user2_find) - - -class user2_show(crud.Retrieve): - """ - Display user. - """ - - takes_options = ( - Flag('all', - doc='retrieve all attributes?', - ), - ) - - def execute(self, uid, **options): - ldap = self.api.Backend.ldap2 - - # build entry DN - rdn = ldap.make_rdn_from_attr('uid', uid) - dn = ldap.make_dn_from_rdn(rdn, _container_dn) - - # select attributes we want to retrieve - if options['all']: - attrs_list = ['*'] - else: - attrs_list = _default_attributes - - return ldap.get_entry(dn, attrs_list) - - def output_for_cli(self, textui, result, uid, **options): - (dn, entry_attrs) = result - - textui.print_name(self.name) - textui.print_attribute('dn', dn) - textui.print_entry(entry_attrs) - -api.register(user2_show) - - -class user2_lock(Command): - """ - Lock user account. - """ - - takes_args = ( - Str('uid', - cli_name='user', - doc='login name', - ), - ) - - def execute(self, uid): - ldap = self.api.Backend.ldap2 - - # build entry DN - rdn = ldap.make_rdn_from_attr('uid', uid) - dn = ldap.make_dn_from_rdn(rdn, _container_dn) - - # lock! - try: - ldap.deactivate_entry(dn) - except errors.AlreadyInactive: - pass - - # return something positive - return True - - def output_for_cli(self, textui, result, uid): - textui.print_name(self.name) - textui.print_dashed('Locked user "%s".' % uid) - -api.register(user2_lock) - - -class user2_unlock(Command): - """ - Unlock user account. - """ - - takes_args = ( - Str('uid', - cli_name='user', - doc='login name', - ), - ) - - def execute(self, uid): - ldap = self.api.Backend.ldap2 - - # build entry DN - rdn = ldap.make_rdn_from_attr('uid', uid) - dn = ldap.make_dn_from_rdn(rdn, _container_dn) - - # unlock! - try: - ldap.activate_entry(dn) - except errors.AlreadyActive: - pass - - # return something positive - return True - - def output_for_cli(self, textui, result, uid): - textui.print_name(self.name) - textui.print_dashed('Unlocked user "%s".' % uid) - -api.register(user2_unlock) - |