CHANGES 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967
  1. ----------------------------------------------------------------
  2. Released 2.4.6 2011-11-27
  3. Changes since 2.4.5:
  4. Lib/
  5. * ldap.controls.ppolicy:
  6. Another fix for decoding the password policy response control
  7. ----------------------------------------------------------------
  8. Released 2.4.5 2011-11-25
  9. Changes since 2.4.4:
  10. Installation:
  11. * defines for SASL and SSL in setup.cfg to be more friendly to
  12. Python setup tools (easy_install)
  13. Lib/
  14. * Fixed typo in ldap.functions._ldap_function_call() which
  15. always released ldap._ldap_module_lock instead of local lock
  16. * ldap.controls.ppolicy:
  17. Fixed decoding the password policy response control
  18. Demo/
  19. * Demo script for ldap.controls.ppolicy
  20. ----------------------------------------------------------------
  21. Released 2.4.4 2011-10-26
  22. Changes since 2.4.3:
  23. Modules/
  24. * Format intermediate messages as 3-tuples instead of
  25. 4-tuples to match the format of other response messages.
  26. (thanks to Chris Mikkelson)
  27. * Fixes for memory leaks (thanks to Chris Mikkelson)
  28. Lib/
  29. * New experimental(!) sub-module ldap.syncrepl implementing syncrepl
  30. consumer (see RFC 4533, thanks to Chris Mikkelson)
  31. Doc/
  32. * Cleaned up rst files
  33. * Added missing classes
  34. ----------------------------------------------------------------
  35. Released 2.4.3 2011-07-23
  36. Changes since 2.4.2:
  37. Lib/
  38. * Mostly corrected/updated __doc__ strings
  39. Doc/
  40. * Corrected rst files
  41. * Added missing modules, functions, classes, methods, parameters etc.
  42. at least as auto-generated doc
  43. ----------------------------------------------------------------
  44. Released 2.4.2 2011-07-21
  45. Changes since 2.4.1:
  46. Lib/
  47. Logging:
  48. * pprint.pformat() is now used when writing method/function
  49. arguments to the trace log
  50. ldap.schema.subentry:
  51. * SubSchema.__init__() now has new key-word argument check_uniqueness
  52. which enables checking whether OIDs are unique in the subschema subentry
  53. * Code-cleaning: consequent use of method SubSchema.getoid() instead of
  54. accessing SubSchema.name2oid directly.
  55. * SubSchema.getoid() and SubSchema.getoid() now have key-word argument
  56. raise_keyerror=0 and raise KeyError with appropriate description.
  57. ----------------------------------------------------------------
  58. Released 2.4.1 2011-07-05
  59. Changes since 2.4.0:
  60. Modules:
  61. * New LDAP option OPT_X_TLS_PACKAGE available in OpenLDAP 2.4.26+
  62. to determine the name of the SSL/TLS package OpenLDAP was
  63. built with
  64. Lib/
  65. * ldap.modlist.modifyModlist(): New key-word argument
  66. case_ignore_attr_types used to define attribute types for which
  67. comparison of old and new values should be case-insensitive
  68. * Minor changes to which data is sent to debug output for various
  69. trace levels
  70. * Now tag [1] is used in ldap.extop.dds.RefreshResponse in
  71. compliance with RFC 2589 (fix available for OpenLDAP ITS#6886)
  72. * New sub-module ldap.controls.sessiontrack implements request control
  73. as described in draft-wahl-ldap-session (needs pyasn1_modules)
  74. ----------------------------------------------------------------
  75. Released 2.4.0 2011-06-02
  76. Changes since 2.3.13:
  77. * OpenLDAP 2.4.11+ required to build
  78. * Support for extracting LDAPv3 extended controls in
  79. LDAP_RES_SEARCH_ENTRY responses
  80. (see SF#2829057, thanks to Rich)
  81. * Generic support for LDAPv3 extended operations (thanks to Rich)
  82. Lib/
  83. * new class API in ldap.controls, not backwards-compatible!
  84. * new sub-modules for ldap.controls, some require pyasn1 and pyasn1_modules
  85. * New methods LDAPObject.result4() and LDAPObject.extop_result()
  86. * New (optional) class ldap.controls.AssertionControl
  87. * New helper module ldap.logger contains file-like object which
  88. sends trace messages to logging.log()
  89. * Removed non-functional method LDAPObject.set_cache_options()
  90. * Removed unused dictionary ldap.controls.knownLDAPControls
  91. Modules/
  92. * ldapcontrol.c: Fixed encode_assertion_control() and function is no longer
  93. hidden behind ifdef-statement
  94. ----------------------------------------------------------------
  95. Released 2.3.13 2011-02-19
  96. Changes since 2.3.12:
  97. Modules/
  98. * Correct #ifdef-statement for LDAP_OPT_X_TLS_CRLFILE in
  99. constants.c fixes build with older OpenLDAP libs
  100. * Support for LDAP_OPT_DEFBASE (see SF#3072016, thanks to Johannes)
  101. ----------------------------------------------------------------
  102. Released 2.3.12 2010-08-05
  103. Changes since 2.3.11:
  104. Lib/
  105. * Removed tabs from various modules to make things work with python -tt.
  106. * Quick fix to ldif.is_dn() to let multi-valued RDNs pass as valid.
  107. Is too liberal in some corner-cases though...
  108. * Fix to ldif.is_dn() to allow dashes in attribute type (see SF#3020292)
  109. * ldap.open() now outputs a deprecation warning
  110. * module-wide locking is now limited to calling _ldap.initialize().
  111. Still ldap.functions._ldap_function_call() is used to wrap all
  112. calls for writing debug log.
  113. Modules/
  114. * New LDAP options available in OpenLDAP 2.4.18+ supported in
  115. LDAPObject.get/set_option():
  116. ldap.OPT_X_KEEPALIVE_IDLE, ldap.OPT_X_KEEPALIVE_PROBES,
  117. ldap.OPT_X_KEEPALIVE_INTERVAL,
  118. ldap.OPT_X_TLS_CRLCHECK, ldap.OPT_X_TLS_CRLFILE
  119. Doc/
  120. * Various small updates/improvements
  121. ----------------------------------------------------------------
  122. Released 2.3.11 2010-02-26
  123. Changes since 2.3.10:
  124. Lib/
  125. * Fixed LDAP URL parsing with four ? but no real extensions
  126. * ldap.ldapobject.LDAPObject.rename_s() now also accepts arguments
  127. serverctrls and clientctrls
  128. * Removed untested and undocumented class ldap.ldapobject.SmartLDAPObject
  129. * Removed broken method ldap.ldapobject.LDAPObject.manage_dsa_it()
  130. Modules/
  131. * Make use of LDAP_OPT_X_TLS_NEWCTX only if available in
  132. OpenLDAP libs used for the build
  133. * Fixed #ifdef-statements for OPT_X_TLS_PROTOCOL_MIN
  134. Doc/
  135. * Some updates and corrections regarding description of use of
  136. LDAPv3 controls
  137. * Some more descriptions for constants
  138. * Removed comments related to old LaTeX-based documentation system
  139. ----------------------------------------------------------------
  140. Released 2.3.10 2009-10-30
  141. Changes since 2.3.9:
  142. Lib/
  143. * The diagnosticMessage returned by a server is written to the trace
  144. output also for successful operations.
  145. * Fixed handling of LDAP URL extensions with implicit value None which are
  146. mapped to class attributes of LDAPUrl.
  147. * Fixed handling of LDAP URLs with ? being part of extensions.
  148. * Fixed exceptions raised by get_option/set_option (SF#1964993)
  149. * ldap.functions: Fixed import trace-related variables from base-module ldap
  150. * Fixed ldap.resiter missing in RPMs built with python setup.py bdist_rpm
  151. * Fix in class ldap.schema.models.SchemaElement:
  152. repr() was liberally used in methods key_attr() and key_list() to enclose
  153. values in quotes.
  154. Modules/
  155. * Changed internal API List_to_LDAPControls() to LDAPControls_from_object()
  156. * Supported was added for retrieving the SASL username during SASL bind with
  157. ldap_get_option(LDAP_OPT_X_SASL_USERNAME) if available in libldap.
  158. * New LDAP option constant ldap.OPT_X_TLS_NEWCTX supported
  159. in LDAPObject.set_option()
  160. * New LDAP option constants supported in LDAPObject.get/set_option():
  161. ldap.OPT_X_TLS_PROTOCOL_MIN, ldap.OPT_CONNECT_ASYNC, ldap.OPT_X_TLS_DHFILE
  162. * Fixed setting _ldap.OPT_ON and _ldap.OPT_OFF
  163. * l_ldap_result3(): controls are now parsed for all response types (SF#2829057)
  164. Doc/
  165. * Added example for ldap.resiter
  166. ----------------------------------------------------------------
  167. Released 2.3.9 2009-07-26
  168. Changes since 2.3.8:
  169. Lib/
  170. * All modules (ldap, ldif, dsml and ldapurl) have common version number now
  171. * Non-exported function ldif.needs_base64() was abandoned and is now
  172. implemented as method LDIFWriter._needs_base64_encoding().
  173. This allows sub-classes of LDIFWriter to implement determining whether
  174. attribute values have to be base64-encoded in a different manner and is
  175. the same approach like in class dsml.DSMLWriter.
  176. * LDAPUrlExtension._parse() now gracefully handles LDAP URL extensions
  177. without explicit exvalue as being set with implicit value None.
  178. Modules/
  179. * New LDAP option constant ldap.OPT_X_SASL_NOCANON supported
  180. in LDAPObject.get/set_option()
  181. ----------------------------------------------------------------
  182. Released 2.3.8 2009-04-30
  183. Changes since 2.3.7:
  184. Lib/
  185. * ldap.schema.models: More fault-tolerant parsing of SYNTAX in
  186. AttributeTypeDescription
  187. * ldap.schema.tokenizer.split_tokens():
  188. More tolerant parsing of items separated only with a DOLLAR without
  189. surrounding white-spaces (because WSP is declared as zero or more spaces
  190. in RFC 4512)
  191. ----------------------------------------------------------------
  192. Released 2.3.7 2009-04-09
  193. Changes since 2.3.6:
  194. Lib/
  195. * urllib.quote() is now used in LDAPUrlExtension.unparse() to quote
  196. all special URL characters in extension values
  197. Modules/
  198. * Fixed ldapcontrol.c not to raise ldap.ENCODING_ERROR in
  199. function encode_rfc2696() on 64-bit systems
  200. * Fixed seg fault if error code in a LDAP response was outside
  201. the known error codes and could not be mapped to a specific
  202. exception class (thanks to Sean)
  203. * errors.c: LDAP_ERROR_MAX set to LDAP_PROXIED_AUTHORIZATION_DENIED
  204. if available in OpenLDAP header
  205. * new exception class ldap.PROXIED_AUTHORIZATION_DENIED
  206. if available in OpenLDAP header
  207. * Fixed functions.c not to raise ldap.ENCODING_ERROR in
  208. function l_ldap_str2dn() on 64-bit systems (see SF#2725356)
  209. ----------------------------------------------------------------
  210. Released 2.3.6 2009-02-22
  211. Changes since 2.3.5:
  212. Lib/
  213. * Importing ldap.str2dn() which directly imported _ldap.str2dn()
  214. is prohibited now (see SF#2181141)
  215. Modules/
  216. * get_option(): Added support for reading more SASL options.
  217. (OPT_X_SASL_MECH, OPT_X_SASL_REALM, OPT_X_SASL_AUTHCID and
  218. OPT_X_SASL_AUTHZID)
  219. * Added some explicit type casts to fix issues while building
  220. with SunStudio
  221. * Fixed compiling issue with GCC 4.4
  222. (see SF#2555793, thanks to Matej and Martin)
  223. Doc/
  224. * Clarified not to use ldap_get_dn() directly
  225. * Fixed description of ldap.SASL_AVAIL and ldap.TLS_AVAIL
  226. (see SF#2555804, thanks to Matej and Martin)
  227. ----------------------------------------------------------------
  228. Released 2.3.5 2008-07-06
  229. Changes since 2.3.4:
  230. Lib/
  231. * Fixed methods ldap.cidict.__contains__() and
  232. ldap.schema.models.Entry.__contains__()
  233. * FWIW method LDAPObject.cancel_s() returns a result now
  234. * Fixed ldap.schema.models.NameForm: Class attribute oc is now
  235. of type string, not tuple to be compliant with RFC 4512
  236. ----------------------------------------------------------------
  237. Released 2.3.4 2008-03-29
  238. Changes since 2.3.3:
  239. Modules/
  240. * Fixed seg fault when calling LDAPObject.get_option()
  241. (see SF#1926507, thanks to Matej)
  242. ----------------------------------------------------------------
  243. Released 2.3.3 2008-03-26
  244. Changes since 2.3.2:
  245. Fixed backward-compability when building with OpenLDAP 2.3.x libs.
  246. ----------------------------------------------------------------
  247. Released 2.3.2 2008-03-26
  248. Changes since 2.3.1:
  249. Lib/
  250. * ldap.dn.escape_dn_chars() now really adheres to
  251. RFC 4514 section 2.4 by escaping null characters and a
  252. space occurring at the beginning of the string
  253. * New method ldap.cidict.cidict.__contains__()
  254. * ldap.dn.explode_dn() and ldap.dn.explode_rdn()
  255. have a new optional key-word argument flags which is
  256. passed to ldap.dn.str2dn().
  257. Modules/
  258. * Removed unused OPT_PRIVATE_EXTENSION_BASE from constants.c
  259. Doc/
  260. * Various additions, updates, polishing (thanks to James).
  261. ----------------------------------------------------------------
  262. Released 2.3.1 2007-07-25
  263. Changes since 2.3.0:
  264. * Support for setuptools (building .egg, thanks to Torsten)
  265. * Support for matched values control (RFC 3876, thanks to Andreas)
  266. Lib/
  267. * Fixed ldif (see SF#1709111, thanks to Dmitry)
  268. * ldap.schema.models:
  269. SUP now separated by $ (method __str__() of classes
  270. AttributeType, ObjectClass and DITStructureRule, thanks to Stefan)
  271. Modules/
  272. * Added constant MOD_INCREMENT to support
  273. modify+increment extension (see RFC 4525, thanks to Andreas)
  274. ----------------------------------------------------------------
  275. Released 2.3.0 2007-03-27
  276. Changes since 2.2.1:
  277. * OpenLDAP 2.3+ required now to build.
  278. * Added support for Cancel operation ext. op. if supported
  279. in OpenLDAP API of the libs used for the build.
  280. Modules/
  281. * Removed deprecated code for setting options by name
  282. * Added l_ldap_cancel()
  283. * Some modifications related to PEP 353 for
  284. Python 2.5 on 64-bit platforms (see SF#1467529, thanks to Matej)
  285. * Added new function l_ldap_str2dn(), removed functions
  286. l_ldap_explode_dn() and l_ldap_explode_rdn()
  287. (see SF#1657848, thanks to David)
  288. Lib/
  289. * Added method ldapobject.LDAPObject.cancel()
  290. * ldap.schema.subentry.urlfetch() now can do non-anonymous
  291. simple bind if the LDAP URL provided contains extensions
  292. 'bindname' and 'X-BINDPW'. (see SF#1589206)
  293. * ldap.filter.escape_filter_chars() has new a key-word argument
  294. escape_mode now which defines which chars to be escaped
  295. (see SF#1193271).
  296. * Various important fixes to ldapobject.ReconnectLDAPObject
  297. * Moved all DN-related functions to sub-module ldap.dn,
  298. import them in ldap.functions for backward compability
  299. * ldap.dn.explode_dn() and ldap.dn.explode_rdn() use the new
  300. wrapper function ldap.dn.str2dn() (related to SF#1657848)
  301. * changetype issue partially fixed (see SF#1683746)
  302. ----------------------------------------------------------------
  303. Released 2.2.1 2006-11-15
  304. Changes since 2.2.0:
  305. Modules/
  306. * Fix for Python 2.5 free(): invalid pointer (see SF#1575329)
  307. * passwd() accepts None for arguments user, oldpw, newpw
  308. (see SF#1440151)
  309. Lib/
  310. * ldif.LDIFWriter.unparse() now accepts instances of
  311. derived dict and list classes (see SF#1489898)
  312. ----------------------------------------------------------------
  313. Released 2.2.0 2006-04-10
  314. Changes since 2.0.11:
  315. * OpenLDAP 2.2+ required now to build.
  316. Modules/
  317. * Dropped all occurences of '#ifdef #LDAP_VENDOR_VERSION'.
  318. * Fixed wrong tuple size in l_ldap_result3() (see SF#1368108)
  319. * Fixed get_option(ldap.OPT_API_INFO) (see SF#1440165)
  320. * Fixed memory leak in l_ldap_result3() when all=0
  321. (see SF#1457325)
  322. * Fixed memory leak in l_ldap_result3() in error cases
  323. (see SF#1464085)
  324. Lib/
  325. * Fixed ldap.schema.models.DITStructureRule.__str__() to
  326. separate SUP rule-ids with a single space instead of ' $ '
  327. * Fixed ldap.async.Dict
  328. * Added ldap.async.IndexedDict
  329. * ldap.schema.subentry.SubSchema.attribute_types() has new
  330. key-word argument ignore_dit_content_rule
  331. ----------------------------------------------------------------
  332. Released 2.0.11 2005-11-07
  333. Changes since 2.0.10:
  334. Lib/
  335. * Class ldap.ldapobject.LDAPObject:
  336. Each method returns a result now
  337. * Class ldap.ldapobject.ReconnectLDAPObject:
  338. Some methods called the wrong methods of LDAPObject. Fixed.
  339. * Added new class ldap.async.Dict
  340. * Slightly cleaned up ldap.schema.subentry.attribute_types()
  341. * New sub-module ldap.resiter which simply provides a mix-in
  342. class for ldap.ldapobject.LDAPObject with a generator method
  343. allresults().
  344. Obviously this only works with Python 2.3+. And
  345. it's still experimental.
  346. ----------------------------------------------------------------
  347. Released 2.0.10 2005-09-23
  348. Changes since 2.0.9:
  349. Lib/
  350. * Switched back to old implementation of
  351. ldap.schema.tokenizer.split_tokens() since the new one
  352. had a bug which deletes the spaces from DESC
  353. * ldap.INSUFFICIENT_ACCESS is now ignored in
  354. ldap.ldapobject.LDAPObject.search_subschemasubentry_s()
  355. ----------------------------------------------------------------
  356. Released 2.0.9 2005-07-28
  357. Changes since 2.0.8:
  358. Modules/
  359. * Removed __doc__ strings from ldapcontrol.c to "fix"
  360. build problems with Python versions 2.2 and earlier.
  361. ----------------------------------------------------------------
  362. Released 2.0.8 2005-06-22 at Linuxtag 2005, Karlsruhe, Germany
  363. Changes since 2.0.7:
  364. * Preliminary support for receiving LDAP controls added.
  365. Contributor:
  366. - Andreas Ames
  367. Lib/
  368. - Added classes in module ldif to ldif.__all__ to fix
  369. from ldif import *
  370. - Removed BitString syntax from
  371. ldap.schema.models.NOT_HUMAN_READABLE_LDAP_SYNTAXES
  372. since the LDAP encoding is in fact human-readable
  373. - ldapurl.LDAPUrlExtension.unparse() outputs empty string
  374. if LDAPUrlExtension.exvalue is None
  375. - Added ldap.controls.SimplePagedResultsControl
  376. ----------------------------------------------------------------
  377. Released 2.0.7 2005-04-29
  378. Changes since 2.0.6:
  379. * Added preliminary support for sending LDAP controls
  380. with a request.
  381. Contributors:
  382. - Deepak Giridharagopal
  383. - Ingo Steuwer
  384. (Receiving controls in LDAP results still not supported.)
  385. Modules:
  386. * LDAPObject.c: removed l_ldap_manage_dsa_it()
  387. * LDAPObject.c: Added missing #ifdef around l_ldap_passwd()
  388. for compability with older OpenLDAP libs.
  389. Lib/
  390. * New algorithm in ldap.schema.tokenizer.split_tokens()
  391. contributed by Wido Depping which is more robust
  392. when parsing very broken schema elements
  393. (e.g. Oracle's OID).
  394. * Fixed argument list (position of timeout) when calling
  395. LDAPObject.search_ext_s() from search_st() and search_s().
  396. * LDAPObject.search_ext_s() correctly calls search_ext_s() now.
  397. * Re-implemented LDAPObject.manage_dsa_it() without calling _ldap.
  398. ----------------------------------------------------------------
  399. Released 2.0.6 2004-12-03
  400. Changes since 2.0.5:
  401. Lib/
  402. * Added sub-module ldap.dn
  403. * Added function ldap.dn.escape_dn_chars()
  404. * Special check when implicitly setting SUP 'top' to
  405. structural object classes without SUP defined to avoid
  406. a loop in the super class chain.
  407. ----------------------------------------------------------------
  408. Released 2.0.5 2004-11-11
  409. Changes since 2.0.4:
  410. Some small improvements for SASL:
  411. The noisy output during SASL bind is avoided now. Interaction
  412. with output on stderr can be enabled by the calling application
  413. by explicitly defining SASL flags.
  414. Removed obsolete directory Win32/.
  415. Lib/
  416. * Make sure that ldap.sasl.sasl.cb_value_dict is a dictionary
  417. even when the caller passes in None to argument cb_value_dict
  418. * Added new key-word arg sasl_flags to method
  419. LDAPObject.sasl_interactive_bind_s()
  420. Modules/
  421. * l_ldap_sasl_interactive_bind_s():
  422. New key-word arg sasl_flags passed to
  423. ldap_sasl_interactive_bind_s()
  424. ----------------------------------------------------------------
  425. Released 2.0.4 2004-10-27
  426. Changes since 2.0.3:
  427. Modules/
  428. * Applied some fixes for 64-bit platforms to LDAPObject.c
  429. * Constants ldap.TLS_AVAIL and ldap.SASL_AVAIL will indicate
  430. whether python-ldap was built with support for SSL/TLS
  431. and/or SASL
  432. setup.py and Modules/
  433. * Applied some fixes for building under Win32
  434. ----------------------------------------------------------------
  435. Released 2.0.3 2004-10-06
  436. Changes since 2.0.2:
  437. * Added support for LDAP Password Modify Extended Operation
  438. (see RFC 3062)
  439. Demo/:
  440. * Added passwd_ext_op.py
  441. Modules/
  442. * Added l_ldap_passwd() in LDAPObject.c
  443. Lib/
  444. * Added methods passwd() and passwd_s() to
  445. ldap.ldapobject.LDAPObject
  446. ----------------------------------------------------------------
  447. Released 2.0.2 2004-07-29
  448. Changes since 2.0.1:
  449. Modules/
  450. * Fixed detecting appropriate OpenLDAP libs version for
  451. determining whether ldap_whoami_s() is available or not.
  452. This fixes build problems with OpenLDAP libs 2.1.0 up
  453. to 2.1.12.
  454. ----------------------------------------------------------------
  455. Released 2.0.1 2004-06-29
  456. Changes since 2.0.0:
  457. dsml:
  458. * Fixed wrong exception message format string
  459. ldap.schema.models:
  460. * Fixed Entry.__delitem__() to delete really everything
  461. when deleting an attribute dictionary item.
  462. ----------------------------------------------------------------
  463. Released 2.0.0 2004-05-18
  464. Changes since 2.0.0pre21:
  465. ldif:
  466. * Empty records are simply ignored in ldif.LDIFWriter.unparse()
  467. Modules/
  468. * New method result2() returns 3-tuple containing the msgid
  469. of the outstanding operation.
  470. ldap.ldapobject:
  471. * New _ldap wrapper method LDAPObject.result2() (see above)
  472. which is now used by LDAPObject.result().
  473. ----------------------------------------------------------------
  474. Released 2.0.0pre21 2004-03-29
  475. Changes since 2.0.0pre20:
  476. setup.py:
  477. * runtime_library_dirs is set
  478. Modules/
  479. * (Hopefully) fixed building with OpenLDAP 2.2 libs in errors.c
  480. * Removed meaningless repr() function from LDAPObject.c
  481. * Removed setting LDAP_OPT_PROTOCOL_VERSION in l_ldap_sasl_bind_s()
  482. * Modified string handling via berval instead of *char
  483. in l_ldap_compare_ext() makes it possible to compare attribute
  484. values with null chars.
  485. * Wrapped ldap_sasl_bind() for simple binds instead of ldap_bind()
  486. since 1. the latter is marked deprecated and 2. ldap_sasl_bind()
  487. allows password credentials with null chars.
  488. * Removed unused sources linkedlist.c and linkedlist.h
  489. * Function l_ldap_whoami_s() only added if built against
  490. OpenLDAP 2.1.x+ libs (should preserve compability with 2.0 libs)
  491. ldap.ldapobject:
  492. * LDAPObject.bind() only allows simple binds since Kerberos V4
  493. binds of LDAPv2 are not supported anymore. An assert statement
  494. was added to make the coder aware of that.
  495. * Renamed former LDAPObject.sasl_bind_s() to
  496. LDAPObject.sasl_interactive_bind_s() since it wraps OpenLDAP's
  497. ldap_sasl_interactive_bind_s()
  498. ----------------------------------------------------------------
  499. Released 2.0.0pre20 2004-03-19
  500. Changes since 2.0.0pre19:
  501. Modules/
  502. * Removed doc strings from functions.c
  503. * Removed probably unused wrapper function l_ldap_dn2ufn() since
  504. ldap_dn2ufn() is deprecated in OpenLDAP 2.1+
  505. * Removed wrapper function l_ldap_is_ldap_url().
  506. * Removed macro add_int_r() from constants.c since it caused
  507. incompability issues with OpenLDAP 2.2 libs
  508. (Warning: all result types are Integers now! Use the constants!)
  509. * New wrapper function l_ldap_whoami_s()
  510. ldap.ldapobject:
  511. * New wrapper method LDAPObject.whoami_s()
  512. ldap.functions:
  513. * Removed is_ldap_url(). The more general function
  514. ldapurl.isLDAPUrl() should be used instead.
  515. ldap.sasl:
  516. * Added class cram_md5 (for SASL mech CRAM-MD5)
  517. ldap.async:
  518. * Use constants for search result types (see note about
  519. add_int_r() above).
  520. ----------------------------------------------------------------
  521. Released 2.0.0pre19 2004-01-22
  522. Changes since 2.0.0pre18:
  523. Modules/
  524. * LDAPObject.c:
  525. Most deprecated functions of OpenLDAP C API are not used anymore.
  526. * functions.c:
  527. Removed unused default_ldap_port().
  528. * constants.c:
  529. Removed unused or silly constants
  530. AUTH_KRBV4, AUTH_KRBV41, AUTH_KRBV42, URL_ERR_BADSCOPE, URL_ERR_MEM
  531. * errors.c:
  532. Fixed building with OpenLDAP 2.2.x
  533. (errors caused by negative error constants in ldap.h)
  534. ldap.ldapobject.LDAPObject:
  535. * Removed unused wrapper methods uncache_entry(), uncache_request(),
  536. url_search(), url_search_st() and url_search_s()
  537. * New wrapper methods for all the _ext() methods in _ldap.LDAPObject.
  538. ldap.modlist:
  539. * Some performance optimizations and simplifications
  540. in function modifyModlist()
  541. ----------------------------------------------------------------
  542. Released 2.0.0pre18 2003-12-09
  543. Changes since 2.0.0pre17:
  544. ldap.ldapobject:
  545. * Fixed missing ldap._ldap_function_call() in
  546. ReconnectLDAPObject.reconnect()
  547. ----------------------------------------------------------------
  548. Released 2.0.0pre17 2003-12-03
  549. Changes since 2.0.0pre16:
  550. ldap.functions:
  551. * Fixed ImportError when running python -O
  552. ----------------------------------------------------------------
  553. Released 2.0.0pre16 2003-12-02
  554. Changes since 2.0.0pre15:
  555. Modules/
  556. * Removed definition of unused constant RES_EXTENDED_PARTIAL since
  557. the corresponding symbol LDAP_RES_EXTENDED_PARTIAL seems to not
  558. be available in OpenLDAP-HEAD (pre 2.2) anymore.
  559. All in Lib/
  560. * Fixed some subtle bugs/oddities mentioned by pychecker.
  561. dsml:
  562. * Renamed DSMLWriter._f to DSMLWriter._output_file
  563. * Added wrapper method DSMLWriter.unparse() which simply
  564. calls DSMLWriter.writeRecord()
  565. ldap.ldapobject:
  566. * Simplified LDAPObject.search_subschemasubentry_s()
  567. ldap.functions:
  568. * Moved ldap._ldap_function_call() into ldap.functions.
  569. * apply() is not used anymore since it seems deprecated
  570. ldap.async:
  571. * Added class DSMLWriter
  572. ldap.schema:
  573. * Removed unused key-word argument strict from
  574. ldap.schema.subentry.SubSchema.attribute_types()
  575. * Fixed backward compability issue (for Python prior to 2.2) in
  576. ldap.schema.subentry.SubSchema.listall()
  577. ----------------------------------------------------------------
  578. Released 2.0.0pre15 2003-11-11
  579. Changes since 2.0.0pre14:
  580. Modules/
  581. Follow rule "Always include Python.h first"
  582. ldap.schema.subentry:
  583. * Added new method SubSchema.get_structural_oc()
  584. * Added new method SubSchema.get_applicable_aux_classes()
  585. * Methods SubSchema.listall() and SubSchema.tree() have
  586. new key-word argument schema_element_filters
  587. * Support for DIT content rules in SubSchema.attribute_types()
  588. ----------------------------------------------------------------
  589. Released 2.0.0pre14 2003-10-03
  590. Changes since 2.0.0pre13:
  591. setup.py:
  592. * Some modifications to ease building for Win32
  593. * Added directory Build/ mainly intended for platform-specific
  594. examples of setup.cfg
  595. * Fixed installing ldap.filter
  596. ldap.ldapobject:
  597. * Added class attribute LDAPObject.network_timeout mapped to
  598. set_option(ldap.OPT_NETWORK_TIMEOUT,..)
  599. * LDAPObject.search_ext(): Pass arguments serverctrls,clientctrls
  600. to _ldap.search_ext()
  601. ldap.sasl:
  602. * Added class ldap.sasl.external for handling
  603. the SASL mechanism EXTERNAL
  604. * Dictionary ldap.sasl.saslmech_handler_class built during import
  605. for all the known SASL mechanisms derived from class definitions
  606. ldap.schema:
  607. * More graceful handling of KeyError in SubSchema.attribute_types()
  608. * New method SubSchema.get_inheritedattr() for retrieving inherited
  609. class attributes
  610. * New method SubSchema.get_inheritedobj() for retrieving a
  611. schema element instance including all inherited class attributes
  612. ----------------------------------------------------------------
  613. Released 2.0.0pre13 2003-06-02
  614. Changes since 2.0.0pre12:
  615. ldap.async:
  616. * Checking type of argument writer_obj relaxed in
  617. LDIFWriter.__init__() since file-like objects are
  618. not necessarily an instance of file.
  619. ldap.schema:
  620. * ldap.schema.subentry.SubSchema.attribute_types() now correctly
  621. handles attribute types without NAME set
  622. * If SUP is not defined for a structural object class 'top' is
  623. assumed to be the only super-class by default
  624. * '_' is now the abstract top node in SubSchema.tree() for all
  625. schema element classes since ABSTRACT and AUXILIARY object
  626. classes are not derived from 'top' by default
  627. ----------------------------------------------------------------
  628. Released 2.0.0pre12 2003-05-27
  629. Changes since 2.0.0pre11:
  630. New sub-module ldap.filter:
  631. * Added functions escape_filter_chars() and filter_format()
  632. ldap.ldapobject:
  633. * Trace log writes LDAP URI of connection instead of module name
  634. * search_s() passes self.timeout as argument timeout when
  635. calling search_ext_s()
  636. * Key-word arguments for simple_bind() and simple_bind_s()
  637. with defaults for anonymous bind.
  638. * LDAPObject.protocol_version is set to LDAPv3 as default
  639. (this might make code changes necessary in a real LDAPv2
  640. environment)
  641. * Default for key-word argument trace_stack_limit passed to
  642. __init__() is 5
  643. * Updated __doc__ strings
  644. * Aligned and tested ReconnectLDAPObject and SmartLDAPObject
  645. ldap.async:
  646. * LDIFWriter uses ldif.LDIFWriter instead of calling
  647. function ldif.CreateLDIF
  648. * LDIFWriter accepts either file-like object or ldif.LDIFWriter
  649. instance as argument for specifying the output
  650. ldif:
  651. * Abandoned argument all_records of LDIFRecordList.__init__()
  652. ldapurl:
  653. * urllib.unquote() used instead of urllib.unquote_plus()
  654. ----------------------------------------------------------------
  655. Released 2.0.0pre11 2003-05-02
  656. Changes since 2.0.0pre10:
  657. ldap.ldapobject:
  658. * Cosmetic change: Named argument list for LDAPObject.compare()
  659. instead of *args,**kwargs.
  660. * Fixed bug in ReconnectLDAPObject._apply_method_s() affecting
  661. compability with Python 2.0. The bug was introduced with
  662. 2.0.0pre09 by dropping use of apply().
  663. ldap.modlist:
  664. * modifyModlist(): Only None is filtered from attribute value lists,
  665. '' is preserved as valid attribute value. But filtering applies
  666. to old_value and new_value now.
  667. ldap.schema:
  668. * Zero-length attribute values for schema elements are ignored
  669. (needed on e.g. Active Directory)
  670. dsml:
  671. Added support for parsing and generating DSMLv1.
  672. Still experimental though.
  673. ----------------------------------------------------------------
  674. Released 2.0.0pre10 2003-04-19
  675. Changes since 2.0.0pre09:
  676. ldap.schema:
  677. * Emulate BooleanType for compability with Python2.3 in assert
  678. statements
  679. ----------------------------------------------------------------
  680. Released 2.0.0pre09 2003-04-19
  681. Changes since 2.0.0pre08:
  682. Modified setup.py to support Cyrus-SASL 2.x.
  683. ldap.ldapobject:
  684. * apply() is not used anymore since it seems deprecated
  685. * Fixed __setstate__() and __getstate__() of ReconnectLDAPObject
  686. ldap.schema:
  687. * Completed classes for nameForms, dITStructureRules and
  688. dITContentRules
  689. ----------------------------------------------------------------
  690. Released 2.0.0pre08 2003-04-11
  691. Changes since 2.0.0pre07:
  692. ldap.schema:
  693. * For backward compability with Python versions prior to 2.2
  694. Lib/ldap/schema/tokenizer.py and Lib/ldap/schema/models.py use
  695. (()) instead of tuple() for creating empty tuples.
  696. ----------------------------------------------------------------
  697. Released 2.0.0pre07 2003-04-03
  698. Changes since 2.0.0pre06:
  699. LDAPObject.c:
  700. * Wrapped OpenLDAP's ldap_search_ext()
  701. * Removed empty __doc__ strings
  702. * Removed fileno
  703. * Removed all stuff related to caching in OpenLDAP libs
  704. ldap.ldapobject:
  705. * Fixed SASL rebind in ldap.ldapobject.ReconnectLDAPObject
  706. * use search_ext() instead ldap_search()
  707. * new class attribute timeout for setting a global time-out
  708. value for all synchronous operations
  709. ldap.schema:
  710. * Fixed two typos in ldap.schema.models
  711. * Some attempts to improve performance of parser/tokenizer
  712. * Completely reworked to have separate OID dictionaries for
  713. the different schema element classes
  714. * Fixed the Demo/schema*.py to reflect changes to ldap.schema
  715. Documentation updates and various __doc__ string modifications.
  716. ldapurl:
  717. * Removed all Unicode stuff from module ldapurl
  718. * Consistent URL encoding in module ldapurl
  719. ldif:
  720. * Removed ldif.FileWriter
  721. * Proper handling of FILL (see RFC 2849)
  722. ----------------------------------------------------------------
  723. Released 2.0.0pre06 2002-09-23
  724. Changes since 2.0.0pre05:
  725. - Fine-grained locking when linking against libldap_r
  726. - New wrapper class ldap.ReconnectLDAPObject
  727. - Security fix to module ldapurl
  728. - Other fixes and improvements to whole package
  729. - LDAPv3 schema support
  730. (still somewhat premature and undocumented)
  731. ----------------------------------------------------------------
  732. Released 2.0.0pre05 2002-07-20
  733. ----------------------------------------------------------------
  734. Released 2.0.0pre04 2002-02-09
  735. ----------------------------------------------------------------
  736. Released 2.0.0pre02 2002-02-01
  737. ----------------------------------------------------------------
  738. Released 1.10alpha3 2000-09-19
  739. $Id: CHANGES,v 1.273 2011/11/27 15:26:06 stroeder Exp $