Projet

Général

Profil

0003-ldap-only-wrap-LDAPObject.result4-31273.patch

Benjamin Dauvergne, 11 mars 2019 20:54

Télécharger (5,7 ko)

Voir les différences:

Subject: [PATCH 3/5] ldap: only wrap LDAPObject.result4 (#31273)

result4() is the only function in python-ldap really handling results from LDAP requests,
all other methods calls it; if we encode attributes from other function we
duplicate work.
 src/authentic2/backends/ldap_backend.py | 64 +++++++++++--------------
 1 file changed, 28 insertions(+), 36 deletions(-)
src/authentic2/backends/ldap_backend.py
90 90
                    attrs = {attribute: filter_non_unicode_values(attrs[attribute]) for attribute in attrs}
91 91
                    yield dn, attrs
92 92

  
93
        def search_s(self, base, scope, filterstr='(objectclass=*)', attrlist=None, attrsonly=0):
94
            return self._convert_results_to_unicode(
95
                NativeLDAPObject.search_s(self, base, scope,
96
                                          filterstr=filterstr,
97
                                          attrlist=attrlist,
98
                                          attrsonly=attrsonly))
99

  
100 93
        def modify_s(self, dn, modlist):
101 94
            new_modlist = []
102 95
            for mod_op, mod_typ, mod_vals in modlist:
......
114 107
                new_modlist.append((mod_op, mod_typ, mod_vals))
115 108
            return NativeLDAPObject.modify_s(self, dn, new_modlist)
116 109

  
117
    def result3(self, msgid=ldap.RES_ANY, all=1, timeout=None, resp_ctrl_classes=None):
118
        result_type, data, msgid, serverctrls = NativeLDAPObject.result3(self,
119
                                                                         msgid=msgid,
120
                                                                         all=all,
121
                                                                         timeout=timeout,
122
                                                                         resp_ctrl_classes=resp_ctrl_classes)
123
        if data:
124
            data = self._convert_results_to_unicode(data)
125
        return result_type, data, msgid, serverctrls
110
        def result4(self, msgid=ldap.RES_ANY, all=1, timeout=None, add_ctrls=0,
111
                    add_intermediates=0, add_extop=0, resp_ctrl_classes=None):
112
            resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value = NativeLDAPObject.result4(
113
                self,
114
                msgid=msgid,
115
                all=all,
116
                timeout=timeout,
117
                add_ctrls=add_ctrls,
118
                add_intermediates=add_intermediates,
119
                add_extop=add_extop,
120
                resp_ctrl_classes=resp_ctrl_classes)
121
            if resp_data:
122
                resp_data = self._convert_results_to_unicode(resp_data)
123
            return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value
126 124

  
127 125
elif PYTHON_LDAP3 is False:
128 126
    class LDAPObject(NativeLDAPObject):
......
149 147
                    attrs = {attribute: filter_non_unicode_values(attrs[attribute]) for attribute in attrs}
150 148
                    yield force_text(dn), attrs
151 149

  
152
        def search_s(self, base, scope, filterstr='(objectclass=*)', attrlist=None, attrsonly=0):
153
            base = force_bytes(base)
154
            filterstr = force_bytes(filterstr)
155
            if attrlist:
156
                attrlist = map(force_bytes, attrlist)
157
            return self._convert_results_to_unicode(
158
                NativeLDAPObject.search_s(self, base, scope,
159
                                          filterstr=filterstr,
160
                                          attrlist=attrlist,
161
                                          attrsonly=attrsonly))
162

  
163 150
        def search_ext(self, base, scope, filterstr='(objectclass=*)',
164 151
                       attrlist=None, attrsonly=0, serverctrls=None,
165 152
                       clientctrls=None, timeout=-1, sizelimit=0):
......
196 183
                new_modlist.append((mod_op, mod_typ, mod_vals))
197 184
            return NativeLDAPObject.modify_s(self, dn, new_modlist)
198 185

  
199
    def result3(self, msgid=ldap.RES_ANY, all=1, timeout=None, resp_ctrl_classes=None):
200
        result_type, data, msgid, serverctrls = NativeLDAPObject.result3(self,
201
                                                                         msgid=msgid,
202
                                                                         all=all,
203
                                                                         timeout=timeout,
204
                                                                         resp_ctrl_classes=resp_ctrl_classes)
205
        if data:
206
            data = self._convert_results_to_unicode(data)
207
        return result_type, data, msgid, serverctrls
186
        def result4(self, msgid=ldap.RES_ANY, all=1, timeout=None, add_ctrls=0,
187
                    add_intermediates=0, add_extop=0, resp_ctrl_classes=None):
188
            resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value = NativeLDAPObject.result4(
189
                self,
190
                msgid=msgid,
191
                all=all,
192
                timeout=timeout,
193
                add_ctrls=add_ctrls,
194
                add_intermediates=add_intermediates,
195
                add_extop=add_extop,
196
                resp_ctrl_classes=resp_ctrl_classes)
197
            if resp_data:
198
                resp_data = self._convert_results_to_unicode(resp_data)
199
            return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value
208 200

  
209 201

  
210 202
def map_text(d):
211
-