Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
config.py300 linesDownload Raw Back to utils
1"""
2"""
3
4# Created on 2016.08.31
5#
6# Author: Giovanni Cannata
7#
8# Copyright 2013 - 2020 Giovanni Cannata
9#
10# This file is part of ldap3.
11#
12# ldap3 is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Lesser General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# ldap3 is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20# GNU Lesser General Public License for more details.
21#
22# You should have received a copy of the GNU Lesser General Public License
23# along with ldap3 in the COPYING and COPYING.LESSER files.
24# If not, see <http://www.gnu.org/licenses/>.
25
26from sys import stdin, getdefaultencoding
27
28from .. import ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, NO_ATTRIBUTES, SEQUENCE_TYPES
29from ..core.exceptions import LDAPConfigurationParameterError
30
31# checks
32_CLASSES_EXCLUDED_FROM_CHECK = ['subschema']
33_ATTRIBUTES_EXCLUDED_FROM_CHECK = [ALL_ATTRIBUTES,
34                                   ALL_OPERATIONAL_ATTRIBUTES,
35                                   NO_ATTRIBUTES,
36                                   'ldapSyntaxes',
37                                   'matchingRules',
38                                   'matchingRuleUse',
39                                   'dITContentRules',
40                                   'dITStructureRules',
41                                   'nameForms',
42                                   'altServer',
43                                   'namingContexts',
44                                   'supportedControl',
45                                   'supportedExtension',
46                                   'supportedFeatures',
47                                   'supportedCapabilities',
48                                   'supportedLdapVersion',
49                                   'supportedSASLMechanisms',
50                                   'vendorName',
51                                   'vendorVersion',
52                                   'subschemaSubentry',
53                                   'ACL']
54_UTF8_ENCODED_SYNTAXES = ['1.2.840.113556.1.4.904',  # DN String [MICROSOFT]
55                          '1.2.840.113556.1.4.1362',  # String (Case) [MICROSOFT]
56                          '1.3.6.1.4.1.1466.115.121.1.12',  # DN String [RFC4517]
57                          '1.3.6.1.4.1.1466.115.121.1.15',  # Directory String [RFC4517]
58                          '1.3.6.1.4.1.1466.115.121.1.41',  # Postal Address) [RFC4517]
59                          '1.3.6.1.4.1.1466.115.121.1.58',  # Substring Assertion [RFC4517]
60                          '2.16.840.1.113719.1.1.5.1.6',  # Case Ignore List [NOVELL]
61                          '2.16.840.1.113719.1.1.5.1.14',  # Tagged String [NOVELL]
62                          '2.16.840.1.113719.1.1.5.1.15',  # Tagged Name and String [NOVELL]
63                          '2.16.840.1.113719.1.1.5.1.23',  # Tagged Name [NOVELL]
64                          '2.16.840.1.113719.1.1.5.1.25']  # Typed Name [NOVELL]
65
66_UTF8_ENCODED_TYPES = []
67
68_ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF = ['msds-memberOfTransitive', 'msds-memberTransitive', 'entryDN']
69_IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF = ['instanceType', 'nTSecurityDescriptor', 'objectCategory']
70
71_CASE_INSENSITIVE_ATTRIBUTE_NAMES = True
72_CASE_INSENSITIVE_SCHEMA_NAMES = True
73
74# abstraction layer
75_ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX = 'OA_'
76
77# communication
78_POOLING_LOOP_TIMEOUT = 10  # number of seconds to wait before restarting a cycle to find an active server in the pool
79_RESPONSE_SLEEPTIME = 0.05  # seconds to wait while waiting for a response in asynchronous strategies
80_RESPONSE_WAITING_TIMEOUT = 20  # waiting timeout for receiving a response in asynchronous strategies
81_SOCKET_SIZE = 4096  # socket byte size
82_CHECK_AVAILABILITY_TIMEOUT = 2.5  # default timeout for socket connect when checking availability
83_RESET_AVAILABILITY_TIMEOUT = 5  # default timeout for resetting the availability status when checking candidate addresses
84_RESTARTABLE_SLEEPTIME = 2  # time to wait in a restartable strategy before retrying the request
85_RESTARTABLE_TRIES = 30  # number of times to retry in a restartable strategy before giving up. Set to True for unlimited retries
86_REUSABLE_THREADED_POOL_SIZE = 5
87_REUSABLE_THREADED_LIFETIME = 3600  # 1 hour
88_DEFAULT_THREADED_POOL_NAME = 'REUSABLE_DEFAULT_POOL'
89_ADDRESS_INFO_REFRESH_TIME = 300  # seconds to wait before refreshing address info from dns
90_ADDITIONAL_SERVER_ENCODINGS = ['latin-1', 'koi8-r']  # some broken LDAP implementation may have different encoding than those expected by RFCs
91_ADDITIONAL_CLIENT_ENCODINGS = ['utf-8']
92_IGNORE_MALFORMED_SCHEMA = False  # some flaky LDAP servers returns malformed schema. If True no expection is raised and schema is thrown away
93_DEFAULT_SERVER_ENCODING = 'utf-8'  # should always be utf-8
94_LDIF_LINE_LENGTH = 78  # as stated in RFC 2849
95
96if stdin and hasattr(stdin, 'encoding') and stdin.encoding:
97    _DEFAULT_CLIENT_ENCODING = stdin.encoding
98elif getdefaultencoding():
99    _DEFAULT_CLIENT_ENCODING = getdefaultencoding()
100else:
101    _DEFAULT_CLIENT_ENCODING = 'utf-8'
102
103PARAMETERS = ['CASE_INSENSITIVE_ATTRIBUTE_NAMES',
104              'CASE_INSENSITIVE_SCHEMA_NAMES',
105              'ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX',
106              'POOLING_LOOP_TIMEOUT',
107              'RESPONSE_SLEEPTIME',
108              'RESPONSE_WAITING_TIMEOUT',
109              'SOCKET_SIZE',
110              'CHECK_AVAILABILITY_TIMEOUT',
111              'RESTARTABLE_SLEEPTIME',
112              'RESTARTABLE_TRIES',
113              'REUSABLE_THREADED_POOL_SIZE',
114              'REUSABLE_THREADED_LIFETIME',
115              'DEFAULT_THREADED_POOL_NAME',
116              'ADDRESS_INFO_REFRESH_TIME',
117              'RESET_AVAILABILITY_TIMEOUT',
118              'DEFAULT_CLIENT_ENCODING',
119              'DEFAULT_SERVER_ENCODING',
120              'CLASSES_EXCLUDED_FROM_CHECK',
121              'ATTRIBUTES_EXCLUDED_FROM_CHECK',
122              'UTF8_ENCODED_SYNTAXES',
123              'UTF8_ENCODED_TYPES',
124              'ADDITIONAL_SERVER_ENCODINGS',
125              'ADDITIONAL_CLIENT_ENCODINGS',
126              'IGNORE_MALFORMED_SCHEMA',
127              'ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF',
128              'IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF',
129              'LDIF_LINE_LENGTH'
130              ]
131
132
133def get_config_parameter(parameter):
134    if parameter == 'CASE_INSENSITIVE_ATTRIBUTE_NAMES':  # Boolean
135        return _CASE_INSENSITIVE_ATTRIBUTE_NAMES
136    elif parameter == 'CASE_INSENSITIVE_SCHEMA_NAMES':  # Boolean
137        return _CASE_INSENSITIVE_SCHEMA_NAMES
138    elif parameter == 'ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX':  # String
139        return _ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX
140    elif parameter == 'POOLING_LOOP_TIMEOUT':  # Integer
141        return _POOLING_LOOP_TIMEOUT
142    elif parameter == 'RESPONSE_SLEEPTIME':  # Integer
143        return _RESPONSE_SLEEPTIME
144    elif parameter == 'RESPONSE_WAITING_TIMEOUT':  # Integer
145        return _RESPONSE_WAITING_TIMEOUT
146    elif parameter == 'SOCKET_SIZE':  # Integer
147        return _SOCKET_SIZE
148    elif parameter == 'CHECK_AVAILABILITY_TIMEOUT':  # Integer
149        return _CHECK_AVAILABILITY_TIMEOUT
150    elif parameter == 'RESTARTABLE_SLEEPTIME':  # Integer
151        return _RESTARTABLE_SLEEPTIME
152    elif parameter == 'RESTARTABLE_TRIES':  # Integer
153        return _RESTARTABLE_TRIES
154    elif parameter == 'REUSABLE_THREADED_POOL_SIZE':  # Integer
155        return _REUSABLE_THREADED_POOL_SIZE
156    elif parameter == 'REUSABLE_THREADED_LIFETIME':  # Integer
157        return _REUSABLE_THREADED_LIFETIME
158    elif parameter == 'DEFAULT_THREADED_POOL_NAME':  # String
159        return _DEFAULT_THREADED_POOL_NAME
160    elif parameter == 'ADDRESS_INFO_REFRESH_TIME':  # Integer
161        return _ADDRESS_INFO_REFRESH_TIME
162    elif parameter == 'RESET_AVAILABILITY_TIMEOUT':  # Integer
163        return _RESET_AVAILABILITY_TIMEOUT
164    elif parameter in ['DEFAULT_CLIENT_ENCODING', 'DEFAULT_ENCODING']:  # String - DEFAULT_ENCODING for backward compatibility
165        return _DEFAULT_CLIENT_ENCODING
166    elif parameter == 'DEFAULT_SERVER_ENCODING':  # String
167        return _DEFAULT_SERVER_ENCODING
168    elif parameter == 'CLASSES_EXCLUDED_FROM_CHECK':  # Sequence
169        if isinstance(_CLASSES_EXCLUDED_FROM_CHECK, SEQUENCE_TYPES):
170            return _CLASSES_EXCLUDED_FROM_CHECK
171        else:
172            return [_CLASSES_EXCLUDED_FROM_CHECK]
173    elif parameter == 'ATTRIBUTES_EXCLUDED_FROM_CHECK':  # Sequence
174        if isinstance(_ATTRIBUTES_EXCLUDED_FROM_CHECK, SEQUENCE_TYPES):
175            return _ATTRIBUTES_EXCLUDED_FROM_CHECK
176        else:
177            return [_ATTRIBUTES_EXCLUDED_FROM_CHECK]
178    elif parameter == 'UTF8_ENCODED_SYNTAXES':  # Sequence
179        if isinstance(_UTF8_ENCODED_SYNTAXES, SEQUENCE_TYPES):
180            return _UTF8_ENCODED_SYNTAXES
181        else:
182            return [_UTF8_ENCODED_SYNTAXES]
183    elif parameter == 'UTF8_ENCODED_TYPES':  # Sequence
184        if isinstance(_UTF8_ENCODED_TYPES, SEQUENCE_TYPES):
185            return _UTF8_ENCODED_TYPES
186        else:
187            return [_UTF8_ENCODED_TYPES]
188    elif parameter in ['ADDITIONAL_SERVER_ENCODINGS', 'ADDITIONAL_ENCODINGS']:  # Sequence - ADDITIONAL_ENCODINGS for backward compatibility
189        if isinstance(_ADDITIONAL_SERVER_ENCODINGS, SEQUENCE_TYPES):
190            return _ADDITIONAL_SERVER_ENCODINGS
191        else:
192            return [_ADDITIONAL_SERVER_ENCODINGS]
193    elif parameter in ['ADDITIONAL_CLIENT_ENCODINGS']:  # Sequence
194        if isinstance(_ADDITIONAL_CLIENT_ENCODINGS, SEQUENCE_TYPES):
195            return _ADDITIONAL_CLIENT_ENCODINGS
196        else:
197            return [_ADDITIONAL_CLIENT_ENCODINGS]
198    elif parameter == 'IGNORE_MALFORMED_SCHEMA':  # Boolean
199        return _IGNORE_MALFORMED_SCHEMA
200    elif parameter == 'ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF':  # Sequence
201        if isinstance(_ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF, SEQUENCE_TYPES):
202            return _ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF
203        else:
204            return [_ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF]
205    elif parameter == 'IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF':  # Sequence
206        if isinstance(_IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF, SEQUENCE_TYPES):
207            return _IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF
208        else:
209            return [_IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF]
210    elif parameter == 'LDIF_LINE_LENGTH':  # Integer
211        return _LDIF_LINE_LENGTH
212
213    raise LDAPConfigurationParameterError('configuration parameter %s not valid' % parameter)
214
215
216def set_config_parameter(parameter, value):
217    if parameter == 'CASE_INSENSITIVE_ATTRIBUTE_NAMES':
218        global _CASE_INSENSITIVE_ATTRIBUTE_NAMES
219        _CASE_INSENSITIVE_ATTRIBUTE_NAMES = value
220    elif parameter == 'CASE_INSENSITIVE_SCHEMA_NAMES':
221        global _CASE_INSENSITIVE_SCHEMA_NAMES
222        _CASE_INSENSITIVE_SCHEMA_NAMES = value
223    elif parameter == 'ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX':
224        global _ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX
225        _ABSTRACTION_OPERATIONAL_ATTRIBUTE_PREFIX = value
226    elif parameter == 'POOLING_LOOP_TIMEOUT':
227        global _POOLING_LOOP_TIMEOUT
228        _POOLING_LOOP_TIMEOUT = value
229    elif parameter == 'RESPONSE_SLEEPTIME':
230        global _RESPONSE_SLEEPTIME
231        _RESPONSE_SLEEPTIME = value
232    elif parameter == 'RESPONSE_WAITING_TIMEOUT':
233        global _RESPONSE_WAITING_TIMEOUT
234        _RESPONSE_WAITING_TIMEOUT = value
235    elif parameter == 'SOCKET_SIZE':
236        global _SOCKET_SIZE
237        _SOCKET_SIZE = value
238    elif parameter == 'CHECK_AVAILABILITY_TIMEOUT':
239        global _CHECK_AVAILABILITY_TIMEOUT
240        _CHECK_AVAILABILITY_TIMEOUT = value
241    elif parameter == 'RESTARTABLE_SLEEPTIME':
242        global _RESTARTABLE_SLEEPTIME
243        _RESTARTABLE_SLEEPTIME = value
244    elif parameter == 'RESTARTABLE_TRIES':
245        global _RESTARTABLE_TRIES
246        _RESTARTABLE_TRIES = value
247    elif parameter == 'REUSABLE_THREADED_POOL_SIZE':
248        global _REUSABLE_THREADED_POOL_SIZE
249        _REUSABLE_THREADED_POOL_SIZE = value
250    elif parameter == 'REUSABLE_THREADED_LIFETIME':
251        global _REUSABLE_THREADED_LIFETIME
252        _REUSABLE_THREADED_LIFETIME = value
253    elif parameter == 'DEFAULT_THREADED_POOL_NAME':
254        global _DEFAULT_THREADED_POOL_NAME
255        _DEFAULT_THREADED_POOL_NAME = value
256    elif parameter == 'ADDRESS_INFO_REFRESH_TIME':
257        global _ADDRESS_INFO_REFRESH_TIME
258        _ADDRESS_INFO_REFRESH_TIME = value
259    elif parameter == 'RESET_AVAILABILITY_TIMEOUT':
260        global _RESET_AVAILABILITY_TIMEOUT
261        _RESET_AVAILABILITY_TIMEOUT = value
262    elif parameter in ['DEFAULT_CLIENT_ENCODING', 'DEFAULT_ENCODING']:
263        global _DEFAULT_CLIENT_ENCODING
264        _DEFAULT_CLIENT_ENCODING = value
265    elif parameter == 'DEFAULT_SERVER_ENCODING':
266        global _DEFAULT_SERVER_ENCODING
267        _DEFAULT_SERVER_ENCODING = value
268    elif parameter == 'CLASSES_EXCLUDED_FROM_CHECK':
269        global _CLASSES_EXCLUDED_FROM_CHECK
270        _CLASSES_EXCLUDED_FROM_CHECK = value
271    elif parameter == 'ATTRIBUTES_EXCLUDED_FROM_CHECK':
272        global _ATTRIBUTES_EXCLUDED_FROM_CHECK
273        _ATTRIBUTES_EXCLUDED_FROM_CHECK = value
274    elif parameter == 'UTF8_ENCODED_SYNTAXES':
275        global _UTF8_ENCODED_SYNTAXES
276        _UTF8_ENCODED_SYNTAXES = value
277    elif parameter == 'UTF8_ENCODED_TYPES':
278        global _UTF8_ENCODED_TYPES
279        _UTF8_ENCODED_TYPES = value
280    elif parameter in ['ADDITIONAL_SERVER_ENCODINGS', 'ADDITIONAL_ENCODINGS']:
281        global _ADDITIONAL_SERVER_ENCODINGS
282        _ADDITIONAL_SERVER_ENCODINGS = value if isinstance(value, SEQUENCE_TYPES) else [value]
283    elif parameter in ['ADDITIONAL_CLIENT_ENCODINGS']:
284        global _ADDITIONAL_CLIENT_ENCODINGS
285        _ADDITIONAL_CLIENT_ENCODINGS = value if isinstance(value, SEQUENCE_TYPES) else [value]
286    elif parameter == 'IGNORE_MALFORMED_SCHEMA':
287        global _IGNORE_MALFORMED_SCHEMA
288        _IGNORE_MALFORMED_SCHEMA = value
289    elif parameter == 'ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF':
290        global _ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF
291        _ATTRIBUTES_EXCLUDED_FROM_OBJECT_DEF = value
292    elif parameter == 'IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF':
293        global _IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF
294        _IGNORED_MANDATORY_ATTRIBUTES_IN_OBJECT_DEF = value
295    elif parameter == 'LDIF_LINE_LENGTH':
296        global _LDIF_LINE_LENGTH
297        _LDIF_LINE_LENGTH = value
298    else:
299        raise LDAPConfigurationParameterError('unable to set configuration parameter %s' % parameter)
300 
codekingpro/portable-devtools · Team Ai