Annotate

util/sasl/external.lua @ 5956:59997f3f5502

net/server_select: pcall require ssl (easy to forget to require ssl)
author daurnimator <quae@daurnimator.com>
date Wed, 18 Dec 2013 17:50:38 -0500
parent 5687:e879b53e9df8
child 6777:5de6b93d0190
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5687
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local saslprep = require "util.encodings".stringprep.saslprep;
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 module "sasl.external"
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local function external(self, message)
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 message = saslprep(message);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local state
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 self.username, state = self.profile.external(message);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 if state == false then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 return "failure", "account-disabled";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 elseif state == nil then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 return "failure", "not-authorized";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 elseif state == "expired" then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 return "false", "credentials-expired";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 return "success";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 function init(registerMechanism)
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 registerMechanism("EXTERNAL", {"external"}, external);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 return _M;