Annotate

util/sasl/external.lua @ 12254:5b0c8e499288

modulemanager: Add plugin load filter that reads module metadata from source Metadata in modules is added using lines formatted as: --% key: value Where key is a valid identifier string, and value is also a string (leading and trailing whitespace are trimmed during parsing). The initial supported keys are: --% requires_core_features: feature1, feature2, ... --% conflicts_core_features: feature1, feature2. ... These 'features' map to features reported by the new core.features module. A benefit of this load-time metadata approach compared to e.g. something like module:requires()/module:conflicts() is that we can continue to look in module search paths for a suitable module. Aborting an already-loaded module due to a version conflict would be too late.
author Matthew Wild <mwild1@gmail.com>
date Fri, 04 Feb 2022 14:20:00 +0000
parent 8555:4f0f5b49bb03
child 12975:d10957394a3c
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
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5687
diff changeset
3 local _ENV = nil;
8555
4f0f5b49bb03 vairious: Add annotation when an empty environment is set [luacheck]
Kim Alvefur <zash@zash.se>
parents: 6777
diff changeset
4 -- luacheck: std none
5687
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local function external(self, message)
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 message = saslprep(message);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local state
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 self.username, state = self.profile.external(message);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 if state == false then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 return "failure", "account-disabled";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 elseif state == nil then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 return "failure", "not-authorized";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 elseif state == "expired" then
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 return "false", "credentials-expired";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 return "success";
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5687
diff changeset
22 local function init(registerMechanism)
5687
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 registerMechanism("EXTERNAL", {"external"}, external);
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end
e879b53e9df8 util.sasl.external: Add SASL EXTERNAL mechanism
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5687
diff changeset
26 return {
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5687
diff changeset
27 init = init;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5687
diff changeset
28 }