diff --git a/crans_utils.py b/crans_utils.py index aaa6c9b..b4b498c 100644 --- a/crans_utils.py +++ b/crans_utils.py @@ -110,3 +110,22 @@ def validate_name(value, more_chars=""): else: raise ValueError("Nom invalide ('%s')" % value) +def ldap_sanitize(s): + """ Échappe les caractères spéciaux ldap. + (Si vous avez une méthode plus propre pour coder ça, je suis preneur) + Todo: rajouter conversion pour caractère utf-8 multioctets ? + (cf http://blog.dzhuvinov.com/?p=585 ) + """ + replace = { + '*': '\\2a', + '(': '\\28', + ')': '\\29', + '\\': '\\5c', + '\x00': '\\00'} + def conv(c): + try: return replace[c] + except KeyError: return c + return "".join([conv(c) for c in s]) + + +