Mercurial > prosody-modules
comparison mod_sasl2/mod_sasl2.lua @ 6028:56fa3bad16cc
mod_sasl2/mod_sasl2.lua: rollback until fixed
| author | Menel <menel@snikket.de> |
|---|---|
| date | Tue, 19 Nov 2024 10:44:00 +0100 |
| parents | 23c4c61a1068 |
| children | 8da64ecdbcaa |
comparison
equal
deleted
inserted
replaced
| 6027:23c4c61a1068 | 6028: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); |
