View | Details | Raw Unified | Return to bug 37740
Collapse All | Expand All

(-)a/ucs-4.0-1/management/univention-directory-manager-modules/modules/univention/admin/uldap.py (-4 / +2 lines)
 Lines 83-88   def _err2str(err): Link Here 
83
			msgs.append('%(desc)s: %(info)s' % iarg)
83
			msgs.append('%(desc)s: %(info)s' % iarg)
84
		elif 'desc' in iarg:
84
		elif 'desc' in iarg:
85
			msgs.append(str(iarg['desc']))
85
			msgs.append(str(iarg['desc']))
86
	if not msgs:
87
		msgs.append(str(err))
86
	return '. '.join(msgs)
88
	return '. '.join(msgs)
87
89
88
class domain:
90
class domain:
 Lines 370-379   def searchDn(self, filter='(objectClass=*)', base='', scope='sub', unique=0, req Link Here 
370
		except ldap.FILTER_ERROR as msg:
372
		except ldap.FILTER_ERROR as msg:
371
			raise univention.admin.uexceptions.ldapError('%s: %s' % (_err2str(msg), filter))
373
			raise univention.admin.uexceptions.ldapError('%s: %s' % (_err2str(msg), filter))
372
		except ldap.LDAPError, msg:
374
		except ldap.LDAPError, msg:
373
			# workaround for bug 14827 ==> msg tuple seems to be empty
374
			if not msg:
375
				univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'uldap.searchDn: ldapError occured: msg=' % str(msg))
376
				raise univention.admin.uexceptions.ldapError, str(msg)
377
			raise univention.admin.uexceptions.ldapError(_err2str(msg), original_exception=msg)
375
			raise univention.admin.uexceptions.ldapError(_err2str(msg), original_exception=msg)
378
376
379
	def getPolicies( self, dn, policies = None, attrs = None, result = None, fixedattrs = None ):
377
	def getPolicies( self, dn, policies = None, attrs = None, result = None, fixedattrs = None ):
(-)a/ucs-4.0-1/management/univention-management-console-module-udm/umc/python/udm/udm_ldap.py (-14 / +17 lines)
 Lines 99-107   def do_ldap_stuff(arg1, arg2, ldap_connection=None, ldap_position=None): Link Here 
99
			ldap_connection.searchDn(..., position=ldap_position)
99
			ldap_connection.searchDn(..., position=ldap_position)
100
			...
100
			...
101
	"""
101
	"""
102
	def wrapper_func(*args, **kwargs):
102
	def _get_user_connection():
103
		global _ldap_connection, _ldap_position, _user_dn, _password, _licenseCheck
103
		global _licenseCheck
104
105
		if _ldap_connection is None:
104
		if _ldap_connection is None:
106
			MODULE.info('Opening LDAP connection for user %s' % _user_dn)
105
			MODULE.info('Opening LDAP connection for user %s' % _user_dn)
107
			lo = udm_uldap.access(host=ucr.get('ldap/master'), base=ucr.get('ldap/base'), binddn=_user_dn, bindpw=_password)
106
			lo = udm_uldap.access(host=ucr.get('ldap/master'), base=ucr.get('ldap/base'), binddn=_user_dn, bindpw=_password)
 Lines 132-154   def wrapper_func(*args, **kwargs): Link Here 
132
			MODULE.info('Using open LDAP connection for user %s' % _user_dn)
131
			MODULE.info('Using open LDAP connection for user %s' % _user_dn)
133
			lo = _ldap_connection
132
			lo = _ldap_connection
134
			po = _ldap_position
133
			po = _ldap_position
134
		return lo, po
135
135
136
	def _func(*args, **kwargs):
137
		global _ldap_connection, _ldap_position
138
		lo, po = _get_user_connection()
136
		kwargs['ldap_connection'] = lo
139
		kwargs['ldap_connection'] = lo
137
		kwargs['ldap_position'] = po
140
		kwargs['ldap_position'] = po
141
		ret = func(*args, **kwargs)
142
		_ldap_connection = lo
143
		_ldap_position = po
144
		return ret
145
146
	def wrapper_func(*args, **kwargs):
138
		try:
147
		try:
139
			ret = func(*args, **kwargs)
148
			return _func(*args, **kwargs)
140
			_ldap_connection = lo
149
		except (LDAPError, udm_errors.ldapError) as exc:
141
			_ldap_position = po
150
			MODULE.warn('Exception during ldap operation (probably timeout): %s' % (exc,))
142
		except udm_errors.ldapError:
151
			global _ldap_connection, _ldap_position
143
			# workaround to keep the behavior from the past to trigger ldap.SERVER_DOWN exception as admin.uldap maskes it
144
			_lo = udm_uldap.access(host=ucr.get('ldap/master'), base=ucr.get('ldap/base'), binddn=_user_dn, bindpw=_password)
145
			del _lo
146
			raise
147
		except LDAPError:
148
			_ldap_connection = None
152
			_ldap_connection = None
149
			_ldap_position = None
153
			_ldap_position = None
150
			raise
154
			return _func(*args, **kwargs)
151
		return ret
152
155
153
	return error_handler(wrapper_func)
156
	return error_handler(wrapper_func)
154
157

Return to bug 37740