Mercurial > prosody-modules
comparison mod_auth_pam/mod_auth_pam.lua @ 1165:b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 15 Aug 2013 18:38:02 +0200 |
parents | |
children | 57bb2497fadc |
comparison
equal
deleted
inserted
replaced
1164:b6280e8886f4 | 1165:b8762c9fb270 |
---|---|
1 -- PAM authentication for Prosody | |
2 -- Copyright (C) 2013 Kim Alvefur | |
3 -- | |
4 -- Requires https://github.com/devurandom/lua-pam | |
5 -- and LuaPosix | |
6 | |
7 local posix = require "posix"; | |
8 local pam = require "pam"; | |
9 local new_sasl = require "util.sasl".new; | |
10 | |
11 function user_exists(username) | |
12 return not not posix.getpasswd(username); | |
13 end | |
14 | |
15 function test_password(username, password) | |
16 local h, err = pam.start("xmpp", username, { | |
17 function (t) | |
18 if #t == 1 and t[1][1] == pam.PAM_PROMPT_ECHO_OFF then | |
19 return { { password, 0} }; | |
20 end | |
21 end | |
22 }); | |
23 if h and h:authenticate() and h:endx(pam.PAM_SUCCESS) then | |
24 return true, true; | |
25 end | |
26 return nil, true; | |
27 end | |
28 | |
29 function get_sasl_handler() | |
30 return new_sasl(module.host, { | |
31 plain_test = function(sasl, ...) | |
32 return test_password(...) | |
33 end | |
34 }); | |
35 end | |
36 | |
37 module:provides"auth"; |