Univention Bugzilla – Attachment 7589 Details for
Bug 41032
uid=foo+cn=bar,cn=users,dc=foo DN breaks UDM handlers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
41032.patch (text/plain), 3.65 KB, created by
Florian Best
on 2016-04-12 09:57:15 CEST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Florian Best
Created:
2016-04-12 09:57:15 CEST
Size:
3.65 KB
patch
obsolete
>diff --git a/base/univention-python/modules/uldap.py b/base/univention-python/modules/uldap.py >index 580feb2..85345a6 100644 >--- a/base/univention-python/modules/uldap.py >+++ b/base/univention-python/modules/uldap.py >@@ -462,11 +462,14 @@ def modify(self, dn, changes, atomic=0): > > univention.debug.debug(univention.debug.LDAP, univention.debug.INFO, 'uldap.modify %s' % dn) > >+ dn_parts = dict((x[0].lower(), x[1]) for x in ldap.dn.str2dn(dn)[0]) >+ dn_values = dict() > rename=None > ml=[] > for key, oldvalue, newvalue in changes: >- if dn.startswith(key+'='): >- rename=key+'='+newvalue >+ if key.lower() in dn_parts: >+ dn_values[key.lower()] = newvalue >+ rename = True > if oldvalue and newvalue: > if oldvalue == newvalue: > continue >@@ -499,8 +502,10 @@ def modify(self, dn, changes, atomic=0): > ml=self.__encode_entry(ml) > if rename: > univention.debug.debug(univention.debug.LDAP, univention.debug.WARN, 'rename %s' % rename) >+ rdn = [(x, dn_values.get(x.lower(), y), z) for x, y, z in ldap.dn.str2dn(dn)[0]] >+ rename = ldap.dn.dn2str([rdn]) > self.lo.rename_s(dn, rename, None, delold=1) >- dn=rename+dn[dn.find(','):] >+ dn = ldap.dn.dn2str([rdn] + ldap.dn.str2dn(dn)[1:]) > if ml: > try: > self.lo.modify_s(dn, ml) >diff --git a/management/univention-directory-manager-modules/modules/univention/admin/uldap.py b/management/univention-directory-manager-modules/modules/univention/admin/uldap.py >index 6ec2be0..81ec3c2 100644 >--- a/management/univention-directory-manager-modules/modules/univention/admin/uldap.py >+++ b/management/univention-directory-manager-modules/modules/univention/admin/uldap.py >@@ -147,10 +147,11 @@ def setDn(self, dn): > self.__pos=string.join(dnlist, ',') > components=explodeDn(self.__pos,0) > for i in components: >- mytype, ign = string.split(i,'=') >- if mytype=='dc': >- self.__indomain=1 >- break >+ for x in i.split('+'): >+ mytype, ign = x.split('=', 1) >+ if mytype=='dc': >+ self.__indomain=1 >+ break > except ValueError: > raise univention.admin.uexceptions.noObject, _("DN not found: %s.") % dn > >@@ -171,7 +172,7 @@ def getDomain(self): > components.reverse() > domaincomponents=[] > for i in components: >- mytype, ign = string.split(i,'=') >+ mytype, ign = string.split(i,'=') # FIXME: doesn't recognize multiple components like cn=foo+dc=bar > if mytype=='dc': > domaincomponents.append(i) > else: >diff --git a/management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py b/management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py >index 8514388..c757c13 100644 >--- a/management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py >+++ b/management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py >@@ -333,6 +333,7 @@ def _tmp_cmp(i, j): > @LDAP_Connection > def create(self, ldap_object, container=None, superordinate=None, ldap_connection=None, ldap_position=None): > """Creates a LDAP object""" >+ ldap_object = ldap_object.copy() > if superordinate not in (None, 'None'): > try: > ldap_position.setDn(superordinate) >@@ -419,6 +420,7 @@ def remove(self, ldap_dn, cleanup=False, recursive=False, ldap_connection=None, > @LDAP_Connection > def modify(self, ldap_object, ldap_connection=None, ldap_position=None): > """Modifies a LDAP object""" >+ ldap_object = ldap_object.copy() > superordinate = udm_objects.get_superordinate(self.module, None, ldap_connection, ldap_object['$dn$']) > MODULE.info('Modifying object %s with superordinate %s' % (ldap_object['$dn$'], superordinate)) > obj = self.module.object(None, ldap_connection, ldap_position, dn=ldap_object.get('$dn$'), superordinate=superordinate)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 41032
: 7589