Commit Graph

98 Commits

Author SHA1 Message Date
kakwa 02357d886a remove debug print 2019-02-09 18:18:58 +01:00
kakwa baa3430e63 fix test and exception handling in code
With python 2 it was possible to do exception[0][...] to recover
details about an exception.
It's no longer authorized with python 3.
Now, we must do something like exception.args or exception.urls.
fortunately this syntax also works with python 2.
So we use it for both.
2019-02-09 17:12:39 +01:00
kakwa 10747cff93 add some python 3 support in the LDAP and AD backends
python-ldap talks in bytes,
as the rest of ldapcherry talks in unicode utf-8:
* everything passed to python-ldap must be converted to bytes
* everything coming from python-ldap must be converted to unicode

The previous statement was true for python-ldap < version 3.X.
With versions > 3.0.0 and python 3, it gets tricky,
some parts of python-ldap takes string, specially the filters/escaper.

so we have now:
*_byte_p2 (unicode -> bytes conversion for python 2)
*_byte_p3 (unicode -> bytes conversion for python 3)
*_byte_p23 (unicode -> bytes conversion for python AND 3)
2019-02-09 16:08:18 +01:00
kakwa bbfe96d4f7 pep8 2019-02-09 12:05:09 +01:00
kakwa b9437abefb * support for python-ldap 2 and 3
* python-ldap 3 is slightly different than 2 on how it handles modify
the modified attributes used to be transmitted as a dict, now it should
be transmitted as a list of dict)
2019-02-09 11:58:09 +01:00
kakwa 42759f1cc4 pep8 2019-02-08 20:38:03 +01:00
kakwa 18fdeb483e better handling of the str/byte mess for python3
* add dedicated methods for python 3 in handling of bytearrays/strings
* using them to compare attributes checks in AD backend
2019-02-08 20:33:58 +01:00
kakwa 12c511b537 switch to explicit bytearray for checking missing params 2019-02-08 00:11:01 +01:00
kakwa 3d6e24eb73 pep8 2019-02-07 20:16:39 +01:00
kakwa 74dc6c5894 various changes to support python3
* changes in urllib imports since quote_plus in urllib with python 2 and
in urllib.parse in python 3
* changes in imports for Sets since set is a native type in python 3 and
doesn't requires an import
* fix in __import__, '-1' level for module path discovery is not supported
anymore, switching to 0 (absolute import only).
2019-02-06 22:32:40 +01:00
kakwa 7019cc2348 fix setup.py 2017-04-06 20:58:20 +02:00
kakwa eb36830845 fixes 2017-03-16 03:03:59 +01:00
kakwa 3fd6dcee82 fix issue related to python-ldap returning lists
Before, no particular treatment was done on the user attributes.
This caused some issues because python-ldap systematically returns
the attribute value as a list (even if it's mono-valuated).

Now we recover the attributes used in the group attr templates,
and we "normalize" the user attributes before using it in add_to_groups
and del_from_groups.

By normalize, we mean, transforming the list to it's unique value.
In case the attribute doesn't exist or is multi-valuated, it raises an
error.
2017-03-16 02:45:23 +01:00
kakwa 5a45a24055 proper exception in ldap backend
adding proper management of none existant user in group function
if user doesn't exist.
2016-08-01 19:57:51 +02:00
kakwa 7f00264e32 improve robustness if user dn attribute contains something like ,cn= 2016-07-31 12:21:26 +02:00
kakwa d4235bc33c better behavior if user doesn't exist in one backend 2016-07-31 11:39:28 +02:00
kakwa f863b230dd fix pep8 error 2016-07-29 07:41:42 +02:00
kakwa 9fb32f11be fix many encoding errors 2016-07-28 21:07:10 +02:00
kakwa 320f57ab76 fix self user password modification in AD Backend
In some forms, the 'cn' attribute might not be accessible.
The _set_password method relied on 'cn' to build the user dn.
Now it accepts the cn or the dn (by_cn switch).
2016-07-21 07:33:14 +02:00
kakwa 6c3fb4975d fix many encoding errors on login and password 2016-07-07 20:22:33 +02:00
Carpentier Pierre-Francois caef6a889e Fix encoding issues in AD backend 2016-07-06 14:00:36 +02:00
kakwa b8a65a44b6 pepify the source code 2016-06-17 00:10:02 +02:00
kakwa d8631da7ba making some attributes explicitly mandatory for Active Directory backend 2016-06-16 22:32:44 +02:00
kakwa c969e730c4 fix password setting with Active Directory 2016-06-16 21:49:48 +02:00
kakwa 4e5c361e5e fix error messages/logs in ldap backend 2015-11-03 08:53:46 +01:00
kakwa 1985408324 better exceptions handling for demo backend 2015-10-20 22:17:00 +02:00
kakwa 3f9e76908e adding a demo backend 2015-08-09 18:49:44 +02:00
kakwa a8af29692e custom error handling for UserDoesntExist, UserAlreadyExists and GroupDoesntExist 2015-07-31 22:43:51 +02:00
kakwa efcaad54fc multiple modification/fix
* add display_name parameter for backend
* handle display_name in modify template (lonely groups) and error
  message
* fix bug in modify when user is in only one backend
* remove redondant exception in ad/ldap backend
* fix unit test accordingly
* fix License in AD backend (GPLv3 -> MIT, previously tought of using
  samba4 python library which is GPL, but this module finaly uses
  python-ldap which is MIT compatible)
2015-07-31 20:08:21 +02:00
kakwa 6ee0ff0354 many comment + encoding fixes 2015-07-29 08:15:54 +02:00
kakwa 383c68f8b8 fix authentification for AD backend 2015-07-29 00:22:25 +02:00
kakwa ff08e09598 more encoding error fix (on ldap auth) 2015-07-29 00:14:49 +02:00
kakwa 69700d0ce9 more encoding fixes 2015-07-29 00:09:15 +02:00
kakwa 3391ed9704 fix more encoding error 2015-07-28 23:57:14 +02:00
kakwa 9ec7a3dfbe fix rename in modify
when renaming an entry, dn must be reset to the correct value for
the modifications that come after the rename.
2015-07-28 23:38:29 +02:00
kakwa f2c1a6af44 many fixes in encoding handling 2015-07-28 23:27:02 +02:00
kakwa 5459830269 removing utf-8 crap in AD backend
the crap must be fixed in LDAP backend first
2015-07-28 22:19:49 +02:00
kakwa 4e5591db7a fix encoding error on dn 2015-07-28 22:18:57 +02:00
kakwa b9903e62ff fix pep8 compliance 2015-07-28 20:41:02 +02:00
kakwa 95d6a0e6a4 typo + add/del group in AD backend
* implementing add_to_group and del_from_group in AD backend.
* fixing typo self.objetclasses => self.objectclasses
2015-07-28 20:36:06 +02:00
kakwa e5d97cf8ff making Backend skeleton a child class of object
this enables the use of super()
2015-07-28 20:32:46 +02:00
kakwa 27fca43ac6 Better exception re-raising
re-raising the exception without specifying the exception object gives
exactly the previous exception (including the correct stacktrace)
which is nicer to have for debugging.
2015-07-28 20:30:51 +02:00
kakwa e3fe0b4bfb implementing renaming entry 2015-07-28 00:18:05 +02:00
kakwa ac0a3473f7 fix recovery of groups in AD backend 2015-07-26 14:26:59 +02:00
kakwa 0914e141ec adding filter for ad backend 2015-07-26 10:37:20 +02:00
kakwa 23b3dbfbe3 fix search template for AD backend 2015-07-26 10:23:43 +02:00
kakwa 2a4815e142 fix unit tests 2015-07-26 09:26:04 +02:00
kakwa 7d55cb2d14 Merge branch 'master' of https://github.com/kakwa/ldapcherry 2015-07-25 22:05:23 +02:00
kakwa f0d43d9460 renaming and begining implementing the ad backend 2015-07-25 22:04:48 +02:00
kakwa 8617ed5ae5 fix docstring in ldapcherry/backend/__init__.py 2015-07-21 00:53:07 +02:00