Software /
code /
prosody-modules
Diff
misc/sasl/example.lua @ 2354:7d2fcc7a15f7
Example SASL mechanism implementation
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 08 Nov 2016 00:15:02 +0100 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/sasl/example.lua Tue Nov 08 00:15:02 2016 +0100 @@ -0,0 +1,47 @@ +local method = {} +local method_mt = { __index = method } + +-- This should return a set of supported mechanisms +function method:mechanisms() + return { + ["OAUTH-SOMETHING"] = true; + } +end + +-- Called when a mechanism is selecetd +function method:select(mechanism) + return mechanism == "OAUTH-SOMETHING"; +end + +-- Called for each message received +function method:process(message) + -- parse the message + if false then + -- To send a SASL challenge: + return "challenge", "respond-to-this"; + end + + if false then + -- To fail, send: + return "failure", "not-authorized", "Helpful error message here"; + end + + self.username = "someone"; + return "success"; +end + +local function new_sasl() + return setmetatable({}, method_mt); +end + +function method:clean_clone() + return setmetatable({}, method_mt); +end + +local provider = {} + +function provider.get_sasl_handler() + return new_sasl(); +end + +module:provides("auth", provider);