21 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
21 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
22 """ |
22 """ |
23 |
23 |
24 from base64 import b64decode |
24 from base64 import b64decode |
25 |
25 |
26 from logilab.common.textutils import get_csv |
26 from logilab.common.textutils import splitstrip |
27 from rql.nodes import Relation, VariableRef, Constant, Function |
27 from rql.nodes import Relation, VariableRef, Constant, Function |
28 |
28 |
29 import ldap |
29 import ldap |
30 from ldap.ldapobject import ReconnectLDAPObject |
30 from ldap.ldapobject import ReconnectLDAPObject |
31 from ldap.filter import filter_format, escape_filter_chars |
31 from ldap.filter import filter_format, escape_filter_chars |
129 AbstractSource.__init__(self, repo, appschema, source_config, |
129 AbstractSource.__init__(self, repo, appschema, source_config, |
130 *args, **kwargs) |
130 *args, **kwargs) |
131 self.host = source_config['host'] |
131 self.host = source_config['host'] |
132 self.user_base_dn = source_config['user-base-dn'] |
132 self.user_base_dn = source_config['user-base-dn'] |
133 self.user_base_scope = globals()[source_config['user-scope']] |
133 self.user_base_scope = globals()[source_config['user-scope']] |
134 self.user_classes = get_csv(source_config['user-classes']) |
134 self.user_classes = splitstrip(source_config['user-classes']) |
135 self.user_login_attr = source_config['user-login-attr'] |
135 self.user_login_attr = source_config['user-login-attr'] |
136 self.user_default_groups = get_csv(source_config['user-default-group']) |
136 self.user_default_groups = splitstrip(source_config['user-default-group']) |
137 self.user_attrs = dict(v.split(':', 1) for v in get_csv(source_config['user-attrs-map'])) |
137 self.user_attrs = dict(v.split(':', 1) for v in splitstrip(source_config['user-attrs-map'])) |
138 self.user_rev_attrs = {'eid': 'dn'} |
138 self.user_rev_attrs = {'eid': 'dn'} |
139 for ldapattr, cwattr in self.user_attrs.items(): |
139 for ldapattr, cwattr in self.user_attrs.items(): |
140 self.user_rev_attrs[cwattr] = ldapattr |
140 self.user_rev_attrs[cwattr] = ldapattr |
141 self.base_filters = [filter_format('(%s=%s)', ('objectClass', o)) |
141 self.base_filters = [filter_format('(%s=%s)', ('objectClass', o)) |
142 for o in self.user_classes] |
142 for o in self.user_classes] |