Mercurial > prosody-modules
comparison mod_auth_imap/auth_imap/mod_auth_imap.lua @ 1196:f45ca6edc159
mod_auth_imap: Authentication module that works by passing through SASL to a IMAP connection
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 26 Sep 2013 13:43:27 +0200 |
parents | |
children | b21bd39c8a12 |
comparison
equal
deleted
inserted
replaced
1195:f502cbffbdd4 | 1196:f45ca6edc159 |
---|---|
1 -- IMAP authentication backend for Prosody | |
2 -- | |
3 -- Copyright (C) 2011 FIMXE from hg annotate -u | |
4 | |
5 local name = "IMAP SASL"; | |
6 local log = require "util.logger".init("auth_imap"); | |
7 | |
8 local imap_host = module:get_option_string("imap_auth_host", "localhost"); | |
9 local imap_port = module:get_option_number("imap_auth_port", 143); | |
10 | |
11 | |
12 local imap_service_realm = module:get_option("imap_service_realm"); | |
13 local imap_service_name = module:get_option("imap_service_name"); | |
14 | |
15 | |
16 local new_imap_sasl = module:require "sasl_imap".new; | |
17 | |
18 local new_sasl = function(realm) | |
19 return new_imap_sasl( | |
20 imap_service_realm or realm, | |
21 imap_service_name or "xmpp", | |
22 imap_host, imap_port | |
23 ); | |
24 end | |
25 | |
26 do | |
27 local s = new_sasl(module.host) | |
28 assert(s, "Could not create a new SASL object"); | |
29 assert(s.mechanisms, "SASL object has no mechanims method"); | |
30 local m = {}; | |
31 for k in pairs(s:mechanisms()) do | |
32 table.insert(m, k); | |
33 end | |
34 log("debug", "Mechanims found: %s", table.concat(m, ", ")); | |
35 end | |
36 | |
37 provider = { | |
38 name = module.name:gsub("^auth_",""); | |
39 }; | |
40 | |
41 function provider.test_password(username, password) | |
42 return nil, "Legacy auth not supported with "..name; | |
43 end | |
44 | |
45 function provider.get_password(username) | |
46 return nil, "Passwords unavailable for "..name; | |
47 end | |
48 | |
49 function provider.set_password(username, password) | |
50 return nil, "Passwords unavailable for "..name; | |
51 end | |
52 | |
53 function provider.user_exists(username) | |
54 -- FIXME | |
55 return true | |
56 end | |
57 | |
58 function provider.create_user(username, password) | |
59 return nil, "Account creation/modification not available with "..name; | |
60 end | |
61 | |
62 function provider.get_sasl_handler() | |
63 return new_sasl(module.host); | |
64 end | |
65 | |
66 module:add_item("auth-provider", provider); | |
67 |