Software /
code /
prosody-modules
Annotate
mod_auth_pam/mod_auth_pam.lua @ 4941:e7b9bc629ecc
mod_rest: Add special handling to catch MAM results from remote hosts
Makes MAM queries to remote hosts works.
As the comment says, MAM results from users' local archives or local
MUCs are returned via origin.send() which is provided in the event and
thus already worked. Results from remote hosts go via normal stanza
routing and events, which need this extra handling to catch.
This pattern of iq-set, message+, iq-result is generally limited to MAM.
Closest similar thing might be MUC join, but to really handle that you
would need the webhook callback mechanism.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 16 May 2022 19:47:09 +0200 |
parent | 1538:57bb2497fadc |
rev | line source |
---|---|
1165
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- PAM authentication for Prosody |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 -- Copyright (C) 2013 Kim Alvefur |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 -- |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 -- Requires https://github.com/devurandom/lua-pam |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 -- and LuaPosix |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local posix = require "posix"; |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local pam = require "pam"; |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 local new_sasl = require "util.sasl".new; |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 function user_exists(username) |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 return not not posix.getpasswd(username); |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 function test_password(username, password) |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local h, err = pam.start("xmpp", username, { |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 function (t) |
1538
57bb2497fadc
mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents:
1165
diff
changeset
|
18 if #t == 1 and t[1][1] == pam.PROMPT_ECHO_OFF then |
1165
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 return { { password, 0} }; |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 }); |
1538
57bb2497fadc
mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents:
1165
diff
changeset
|
23 if h and h:authenticate() and h:endx(pam.SUCCESS) then |
57bb2497fadc
mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents:
1165
diff
changeset
|
24 return user_exists(username), true; |
1165
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 return nil, true; |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 function get_sasl_handler() |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 return new_sasl(module.host, { |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 plain_test = function(sasl, ...) |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 return test_password(...) |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 }); |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 end |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
b8762c9fb270
mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 module:provides"auth"; |