1"""
2filters.py - misc stuff for handling LDAP filter strings (see RFC2254)
3written by Michael Stroeder <michael@stroeder.com>
4
5See http://python-ldap.sourceforge.net for details.
6
7\$Id: filter.py,v 1.3 2003/05/26 08:34:03 stroeder Exp $
8
9Compability:
10- Tested with Python 2.0+
11"""
12
13__version__ = '0.0.2'
14
15
16def escape_filter_chars(assertion_value):
17  """
18  Replace all special characters found in assertion_value
19  by quoted notation
20  """
21  s = assertion_value.replace('\\', r'\5c')
22  s = s.replace(r'*', r'\2a')
23  s = s.replace(r'(', r'\28')
24  s = s.replace(r')', r'\29')
25  s = s.replace('\x00', r'\00')
26  return s
27
28
29def filter_format(filter_template,assertion_values):
30  """
31  filter_template
32        String containing %s as placeholder for assertion values.
33  assertion_values
34        List or tuple of assertion values. Length must match
35        count of %s in filter_template.
36  """
37  return filter_template % (tuple(map(escape_filter_chars,assertion_values)))
38