# HG changeset patch # User Waqas Hussain # Date 1287195481 -18000 # Node ID b953b0c0f203bcd788e259b1fb9e3a8044e6f5c1 # Parent c68590b13a6d137c24c0c1c3dc2b3177b2dbcae9 mod_saslauth: Updated to use the new events API. diff -r c68590b13a6d -r b953b0c0f203 plugins/mod_saslauth.lua --- a/plugins/mod_saslauth.lua Sat Oct 16 07:08:19 2010 +0500 +++ b/plugins/mod_saslauth.lua Sat Oct 16 07:18:01 2010 +0500 @@ -72,26 +72,33 @@ return status, ret, err_msg; end -local function sasl_handler(session, stanza) +local function sasl_handler(event) + local session, stanza = event.origin, event.stanza; + if session.type ~= "c2s_unauthed" then return; end + if stanza.name == "auth" then -- FIXME ignoring duplicates because ejabberd does local mechanism = stanza.attr.mechanism; if anonymous_login then if mechanism ~= "ANONYMOUS" then - return session.send(build_reply("failure", "invalid-mechanism")); + session.send(build_reply("failure", "invalid-mechanism")); + return true; end elseif mechanism == "ANONYMOUS" then - return session.send(build_reply("failure", "mechanism-too-weak")); + session.send(build_reply("failure", "mechanism-too-weak")); + return true; end if not session.secure and (secure_auth_only or (mechanism == "PLAIN" and not allow_unencrypted_plain_auth)) then - return session.send(build_reply("failure", "encryption-required")); + session.send(build_reply("failure", "encryption-required")); + return true; end local valid_mechanism = session.sasl_handler:select(mechanism); if not valid_mechanism then - return session.send(build_reply("failure", "invalid-mechanism")); + session.send(build_reply("failure", "invalid-mechanism")); + return true; end elseif not session.sasl_handler then - return; -- FIXME ignoring out of order stanzas because ejabberd does + return true; -- FIXME ignoring out of order stanzas because ejabberd does end local text = stanza[1]; if text then @@ -100,7 +107,7 @@ if not text then session.sasl_handler = nil; session.send(build_reply("failure", "incorrect-encoding")); - return; + return true; end end local status, ret, err_msg = session.sasl_handler:process(text); @@ -108,11 +115,12 @@ local s = build_reply(status, ret, err_msg); log("debug", "sasl reply: %s", tostring(s)); session.send(s); + return true; end -module:add_handler("c2s_unauthed", "auth", xmlns_sasl, sasl_handler); -module:add_handler("c2s_unauthed", "abort", xmlns_sasl, sasl_handler); -module:add_handler("c2s_unauthed", "response", xmlns_sasl, sasl_handler); +module:hook("stanza/urn:ietf:params:xml:ns:xmpp-sasl:auth", sasl_handler); +module:hook("stanza/urn:ietf:params:xml:ns:xmpp-sasl:abort", sasl_handler); +module:hook("stanza/urn:ietf:params:xml:ns:xmpp-sasl:response", sasl_handler); local mechanisms_attr = { xmlns='urn:ietf:params:xml:ns:xmpp-sasl' }; local bind_attr = { xmlns='urn:ietf:params:xml:ns:xmpp-bind' };