Comparison

mod_sasl2/mod_sasl2.lua @ 6056:56fa3bad16cc

mod_sasl2/mod_sasl2.lua: rollback until fixed
author Menel <menel@snikket.de>
date Tue, 19 Nov 2024 10:44:00 +0100
parent 6055:23c4c61a1068
child 6136:8da64ecdbcaa
comparison
equal deleted inserted replaced
6055:23c4c61a1068 6056:56fa3bad16cc
153 local ok, err = sm_make_authenticated(session, session.sasl_handler.username); 153 local ok, err = sm_make_authenticated(session, session.sasl_handler.username);
154 if not ok then 154 if not ok then
155 handle_status(session, "failure", err); 155 handle_status(session, "failure", err);
156 return true; 156 return true;
157 end 157 end
158 local tasks = module:fire_event("sasl2/c2s/tasks", { session = session }) 158 event.success = st.stanza("success", { xmlns = xmlns_sasl2 });
159 if tasks then 159 if event.message then
160 local continue = st.stanza("continue", { xmlns = xmlns_sasl2 }); 160 event.success:text_tag("additional-data", base64.encode(event.message));
161 if event.message then
162 continue:text_tag("additional-data", base64.encode(event.message));
163 end
164 if tasks.text then
165 continue:text_tag("text", tasks.text)
166 end
167 continue:tag("tasks");
168 for task in pairs(tasks.tasks) do
169 continue:text_tag("task", task)
170 end
171 session.tasks = tasks.tasks;
172 session.send(continue);
173 return true;
174 else
175 event.success = st.stanza("success", { xmlns = xmlns_sasl2 });
176 if event.message then
177 event.success:text_tag("additional-data", base64.encode(event.message));
178 end
179 end 161 end
180 end, 1000); 162 end, 1000);
181
182 module:hook("sasl2/c2s/tasks", function(event)
183 if event.session.tested then
184 return;
185 end
186
187 return { tasks = { TEST = function(session, el)
188 local data = st.stanza("task-data", { xmlns = xmlns_sasl2 });
189 local count = tonumber(el:get_child_text("test", "test") or "0");
190 if count >= 10000 then
191 session.tested = true
192 module:fire_event("sasl2/"..session.base_type.."/success", {
193 session = session,
194 });
195 else
196 data:text_tag("test", tostring(count + 1), { xmlns = "test" })
197 session.send(data);
198 end
199 end }, text = "Need to test this" };
200 end);
201 163
202 module:hook("sasl2/c2s/success", function (event) 164 module:hook("sasl2/c2s/success", function (event)
203 local session = event.session 165 local session = event.session
204 event.success:text_tag("authorization-identifier", jid_join(session.username, session.host, session.resource)); 166 event.success:text_tag("authorization-identifier", jid_join(session.username, session.host, session.resource));
205 session.send(event.success); 167 session.send(event.success);
262 if not sasl_handler or not sasl_handler.selected then 224 if not sasl_handler or not sasl_handler.selected then
263 return handle_status(session, "failure", "invalid-mechanism"); 225 return handle_status(session, "failure", "invalid-mechanism");
264 end 226 end
265 return process_cdata(session, response:get_text()); 227 return process_cdata(session, response:get_text());
266 end); 228 end);
267
268 module:hook_tag(xmlns_sasl2, "next", function (session, next)
269 if not session.tasks or not next.attr.task or not session.tasks[next.attr.task] then
270 return handle_status(session, "failure", "invalid-mechanism");
271 end
272
273 session.task = session.tasks[next.attr.task];
274 session.tasks = nil;
275 session.task(session, next);
276 return true;
277 end);
278
279 module:hook_tag(xmlns_sasl2, "task-data", function (session, data)
280 if not session.task then
281 return handle_status(session, "failure", "invalid-mechanism");
282 end
283
284 session.task(session, data);
285 return true;
286 end);