diff options
Diffstat (limited to 'ipa-server')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py | 30 | ||||
-rw-r--r-- | ipa-server/xmlrpc-server/Makefile.am | 1 | ||||
-rw-r--r-- | ipa-server/xmlrpc-server/attrs.py | 53 | ||||
-rw-r--r-- | ipa-server/xmlrpc-server/funcs.py | 11 | ||||
-rw-r--r-- | ipa-server/xmlrpc-server/ipaxmlrpc.py | 1 |
5 files changed, 68 insertions, 28 deletions
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py b/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py index f509513a..1515b04c 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py @@ -95,7 +95,7 @@ class DelegationController(IPAController): try: aci_entry = client.get_aci_entry(aci_fields) aci = ipa.aci.ACI(acistr) - group_dn_to_cn = self.extract_group_cns([aci], client) + group_dn_to_cn = ipa.aci.extract_group_cns([aci], client) delegate = aci.to_dict() delegate['source_group_dn'] = delegate['source_group'] @@ -192,7 +192,7 @@ class DelegationController(IPAController): except SyntaxError: # ignore aci_str's that ACI can't parse pass - group_dn_to_cn = self.extract_group_cns(aci_list, client) + group_dn_to_cn = ipa.aci.extract_group_cns(aci_list, client) # The list page needs to display field labels, not raw # LDAP attributes @@ -268,29 +268,3 @@ class DelegationController(IPAController): @identity.require(identity.not_anonymous()) def delegatevalidate(self, tg_errors=None, **kw): return tg_errors, kw - - def extract_group_cns(self, aci_list, client): - """Extracts all the cn's from a list of aci's and returns them as a hash - from group_dn to group_cn. - - It first tries to cheat by looking at the first rdn for the - group dn. If that's not cn for some reason, it looks up the group.""" - group_dn_to_cn = {} - for aci in aci_list: - for dn in (aci.source_group, aci.dest_group): - if not group_dn_to_cn.has_key(dn): - rdn_list = ldap.dn.str2dn(dn) - first_rdn = rdn_list[0] - for (type,value,junk) in first_rdn: - if type == "cn": - group_dn_to_cn[dn] = value - break; - else: - try: - group = client.get_entry_by_dn(dn, ['cn']) - group_dn_to_cn[dn] = group.getValue('cn') - except ipaerror.IPAError, e: - group_dn_to_cn[dn] = 'unknown' - - return group_dn_to_cn - diff --git a/ipa-server/xmlrpc-server/Makefile.am b/ipa-server/xmlrpc-server/Makefile.am index 97d57ca1..5e9da065 100644 --- a/ipa-server/xmlrpc-server/Makefile.am +++ b/ipa-server/xmlrpc-server/Makefile.am @@ -12,6 +12,7 @@ html_DATA = \ serverdir = $(IPA_DATA_DIR)/ipaserver server_PYTHON = \ + attrs.py \ funcs.py \ ipaxmlrpc.py \ $(NULL) diff --git a/ipa-server/xmlrpc-server/attrs.py b/ipa-server/xmlrpc-server/attrs.py new file mode 100644 index 00000000..239b8d8f --- /dev/null +++ b/ipa-server/xmlrpc-server/attrs.py @@ -0,0 +1,53 @@ +# Authors: Rob Crittenden <rcritten@redhat.com> +# +# Copyright (C) 2007 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 +# + +attr_label_list = { + "givenname":"Given Name", + "sn":"Family Name", + "cn":"Common Name", + "title":"Title", + "displayname":"Display Name", + "initials":"Initials", + "uid":"Login", + "userpassword":"Password", + "uidnumber":"UID", + "gidnumber":"GID", + "homedirectory":"Home Directory", + "loginshell":"Login Shell", + "gecos":"GECOS", + "mail":"E-mail Address", + "telephonenumber":"Work Number", + "facsimiletelephonenumber":"Fax Number", + "mobile":"Cell Number", + "homephone":"Home Number", + "street":"Street Address", + "l":"City", + "st":"State", + "postalcode":"ZIP", + "ou":"Org Unit", + "businesscategory":"Tags", + "description":"Description", + "employeetype":"Employee Type", + "manager":"Manager", + "roomnumber":"Room Number", + "secretary":"Secretary", + "carlicense":"Car License", + "labelduri":"Home Page", + "nsaccountlock":"Account Status" +} diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py index f62a6aba..7ce83d57 100644 --- a/ipa-server/xmlrpc-server/funcs.py +++ b/ipa-server/xmlrpc-server/funcs.py @@ -28,6 +28,7 @@ import ipaserver.ipaldap import ipa.ipautil import xmlrpclib import copy +import attrs from ipa import ipaerror import string @@ -1051,6 +1052,16 @@ class IPAServer: raise return ret + def attrs_to_labels(self, attr_list, opts=None): + """Take a list of LDAP attributes and convert them to more friendly + labels.""" + label_list = {} + + for a in attr_list: + label_list[a] = attrs.attr_label_list.get(a,a) + + return label_list + def ldap_search_escape(match): """Escapes out nasty characters from the ldap search. See RFC 2254.""" diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py index 2785c680..64e5fa68 100644 --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py @@ -349,6 +349,7 @@ def handler(req, profiling=False): h.register_function(f.remove_groups_from_user) h.register_function(f.update_group) h.register_function(f.delete_group) + h.register_function(f.attrs_to_labels) h.handle_request(req) finally: pass |