Software /
code /
prosody
Annotate
plugins/mod_auth_cyrus.lua @ 3382:fea0f8e19e4c
net.server_select: Ensure that onconnect is called for server sockets as well as clients, rather than onincoming. Fixes mod_console traceback, issue #197
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 16 Jul 2010 22:28:50 +0100 |
parent | 3292:f2ac2ead80b1 |
child | 3425:26751c628207 |
rev | line source |
---|---|
3192
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 -- Prosody IM |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 -- Copyright (C) 2010 Jeff Mitchell |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
5 -- |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
6 -- This project is MIT/X11 licensed. Please see the |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
7 -- COPYING file in the source package for more information. |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
8 -- |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
9 |
3271
1b6c2984c1f4
mod_auth_cyrus: Log as "auth_cyrus", not as "usermanager".
Waqas Hussain <waqas20@gmail.com>
parents:
3192
diff
changeset
|
10 local log = require "util.logger".init("auth_cyrus"); |
3192
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
11 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
12 local cyrus_service_realm = module:get_option("cyrus_service_realm"); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
13 local cyrus_service_name = module:get_option("cyrus_service_name"); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
14 local cyrus_application_name = module:get_option("cyrus_application_name"); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
15 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
16 prosody.unlock_globals(); --FIXME: Figure out why this is needed and |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
17 -- why cyrussasl isn't caught by the sandbox |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
18 local cyrus_new = require "util.sasl_cyrus".new; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
19 prosody.lock_globals(); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
20 local new_sasl = function(realm) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
21 return cyrus_new( |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
22 cyrus_service_realm or realm, |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
23 cyrus_service_name or "xmpp", |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
24 cyrus_application_name or "prosody" |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
25 ); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
26 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
27 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
28 function new_default_provider(host) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
29 local provider = { name = "cyrus" }; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
30 log("debug", "initializing default authentication provider for host '%s'", host); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
31 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
32 function provider.test_password(username, password) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
33 return nil, "Legacy auth not supported with Cyrus SASL."; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
34 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
35 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
36 function provider.get_password(username) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
37 return nil, "Passwords unavailable for Cyrus SASL."; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
38 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
39 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
40 function provider.set_password(username, password) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
41 return nil, "Passwords unavailable for Cyrus SASL."; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
42 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
43 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
44 function provider.user_exists(username) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
45 return true; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
46 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
47 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
48 function provider.create_user(username, password) |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
49 return nil, "Account creation/modification not available with Cyrus SASL."; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
50 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
51 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
52 function provider.get_sasl_handler() |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
53 local realm = module:get_option("sasl_realm") or module.host; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
54 return new_sasl(realm); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
55 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
56 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
57 return provider; |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
58 end |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
59 |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
60 module:add_item("auth-provider", new_default_provider(module.host)); |
8ad50989d79e
mod_auth_cyrus: Auth provider with support for Cyrus SASL.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
61 |