Software / code / prosody
Comparison
plugins/mod_saslauth.lua @ 4507:32177c680d2a
Merge with 0.9
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 12 Feb 2012 14:21:09 +0000 |
| parent | 4506:6643c9753453 |
| child | 4754:449a78f91f0e |
comparison
equal
deleted
inserted
replaced
| 4503:6dc327809dfd | 4507:32177c680d2a |
|---|---|
| 14 local s2s_make_authenticated = require "core.s2smanager".make_authenticated; | 14 local s2s_make_authenticated = require "core.s2smanager".make_authenticated; |
| 15 local base64 = require "util.encodings".base64; | 15 local base64 = require "util.encodings".base64; |
| 16 | 16 |
| 17 local cert_verify_identity = require "util.x509".verify_identity; | 17 local cert_verify_identity = require "util.x509".verify_identity; |
| 18 | 18 |
| 19 local nodeprep = require "util.encodings".stringprep.nodeprep; | |
| 20 local usermanager_get_sasl_handler = require "core.usermanager".get_sasl_handler; | 19 local usermanager_get_sasl_handler = require "core.usermanager".get_sasl_handler; |
| 21 local tostring = tostring; | 20 local tostring = tostring; |
| 22 | 21 |
| 23 local secure_auth_only = module:get_option("c2s_require_encryption") or module:get_option("require_encryption"); | 22 local secure_auth_only = module:get_option("c2s_require_encryption") or module:get_option("require_encryption"); |
| 24 local allow_unencrypted_plain_auth = module:get_option("allow_unencrypted_plain_auth") | 23 local allow_unencrypted_plain_auth = module:get_option("allow_unencrypted_plain_auth") |
| 49 local function handle_status(session, status, ret, err_msg) | 48 local function handle_status(session, status, ret, err_msg) |
| 50 if status == "failure" then | 49 if status == "failure" then |
| 51 module:fire_event("authentication-failure", { session = session, condition = ret, text = err_msg }); | 50 module:fire_event("authentication-failure", { session = session, condition = ret, text = err_msg }); |
| 52 session.sasl_handler = session.sasl_handler:clean_clone(); | 51 session.sasl_handler = session.sasl_handler:clean_clone(); |
| 53 elseif status == "success" then | 52 elseif status == "success" then |
| 54 module:fire_event("authentication-success", { session = session }); | |
| 55 local username = nodeprep(session.sasl_handler.username); | |
| 56 | |
| 57 local ok, err = sm_make_authenticated(session, session.sasl_handler.username); | 53 local ok, err = sm_make_authenticated(session, session.sasl_handler.username); |
| 58 if ok then | 54 if ok then |
| 55 module:fire_event("authentication-success", { session = session }); | |
| 59 session.sasl_handler = nil; | 56 session.sasl_handler = nil; |
| 60 session:reset_stream(); | 57 session:reset_stream(); |
| 61 else | 58 else |
| 62 module:log("warn", "SASL succeeded but username was invalid"); | 59 module:log("warn", "SASL succeeded but username was invalid"); |
| 60 module:fire_event("authentication-failure", { session = session, condition = "not-authorized", text = err }); | |
| 63 session.sasl_handler = session.sasl_handler:clean_clone(); | 61 session.sasl_handler = session.sasl_handler:clean_clone(); |
| 64 return "failure", "not-authorized", "User authenticated successfully, but username was invalid"; | 62 return "failure", "not-authorized", "User authenticated successfully, but username was invalid"; |
| 65 end | 63 end |
| 66 end | 64 end |
| 67 return status, ret, err_msg; | 65 return status, ret, err_msg; |