|
33 |
|
33 |
|
34 |
import operator |
34 |
import operator |
35 |
import threading |
35 |
import threading |
|
|
36 |
import gc |
36 |
|
37 |
|
37 |
from univention.management.console import Translation |
38 |
from univention.management.console import Translation |
38 |
from univention.management.console.modules import Base, UMC_OptionTypeError, UMC_OptionMissing, UMC_CommandError |
39 |
from univention.management.console.modules import Base, UMC_OptionTypeError, UMC_OptionMissing, UMC_CommandError |
|
131 |
_ldap_connection = lo |
132 |
_ldap_connection = lo |
132 |
_ldap_position = po |
133 |
_ldap_position = po |
133 |
return ret |
134 |
return ret |
|
|
135 |
except (udm_errors.ldapSizelimitExceeded, udm_errors.ldapTimeout), e: |
136 |
raise e |
134 |
except ( LDAPError, udm_errors.base ), e: |
137 |
except ( LDAPError, udm_errors.base ), e: |
135 |
MODULE.info( 'LDAP operation for user %s has failed' % _user_dn ) |
138 |
MODULE.info( 'LDAP operation for user %s has failed' % _user_dn ) |
136 |
try: |
139 |
try: |
|
149 |
_ldap_connection = lo |
152 |
_ldap_connection = lo |
150 |
_ldap_position = po |
153 |
_ldap_position = po |
151 |
return ret |
154 |
return ret |
|
|
155 |
except (udm_errors.ldapSizelimitExceeded, udm_errors.ldapTimeout), e: |
156 |
raise e |
152 |
except udm_errors.base, e: |
157 |
except udm_errors.base, e: |
153 |
raise LDAP_ConnectionError( str( e ) ) |
158 |
raise LDAP_ConnectionError( str( e ) ) |
154 |
|
159 |
|
|
390 |
filter_s = '%s=%s' % ( attribute, value ) |
395 |
filter_s = '%s=%s' % ( attribute, value ) |
391 |
|
396 |
|
392 |
MODULE.info( 'Searching for LDAP objects: container = %s, filter = %s, superordinate = %s' % ( container, filter_s, superordinate ) ) |
397 |
MODULE.info( 'Searching for LDAP objects: container = %s, filter = %s, superordinate = %s' % ( container, filter_s, superordinate ) ) |
|
|
398 |
result = None |
393 |
try: |
399 |
try: |
394 |
return self.module.lookup( None, ldap_connection, filter_s, base = container, superordinate = superordinate, scope = scope ) |
400 |
result = self.module.lookup( None, ldap_connection, filter_s, base = container, superordinate = superordinate, scope = scope, sizelimit = int(ucr.get('directory/manager/web/sizelimit', '2000')) ) |
395 |
except udm_errors.insufficientInformation, e: |
401 |
except udm_errors.insufficientInformation, e: |
396 |
return [] |
402 |
return [] |
|
|
403 |
except udm_errors.ldapTimeout, e: |
404 |
raise udm_errors.ldapTimeout( _('The query you have entered timed out. Please narrow down your search by specifiying more query parameters') ) |
405 |
except udm_errors.ldapSizelimitExceeded, e: |
406 |
raise udm_errors.ldapSizelimitExceeded( _('The query you have entered yields too many matching entries. Please narrow down your search by specifiying more query parameters. The current size limit of %s can be configured with the UCR variable directory/manager/web/sizelimit.') % ucr.get('directory/manager/web/sizelimit', '2000') ) |
397 |
except ( LDAPError, udm_errors.ldapError ), e: |
407 |
except ( LDAPError, udm_errors.ldapError ), e: |
398 |
raise e |
408 |
raise e |
399 |
except udm_errors.base, e: |
409 |
except udm_errors.base, e: |
400 |
raise UDM_Error( str( e ) ) |
410 |
raise UDM_Error( str( e ) ) |
|
|
411 |
|
412 |
# call the garbage collector manually as many parallel request may cause the |
413 |
# process to use too much memory |
414 |
MODULE.info('Triggering garbage collection') |
415 |
gc.collect() |
416 |
|
417 |
return result |
401 |
|
418 |
|
402 |
@LDAP_Connection |
419 |
@LDAP_Connection |
403 |
def get( self, ldap_dn = None, superordinate = None, attributes = [], ldap_connection = None, ldap_position = None ): |
420 |
def get( self, ldap_dn = None, superordinate = None, attributes = [], ldap_connection = None, ldap_position = None ): |