Software /
code /
prosody-modules
Annotate
mod_auth_any/mod_auth_any.lua @ 4651:8231774f5bfd
mod_cloud_notify_encrypted: Ensure body substring remains valid UTF-8
The `body:sub()` call risks splitting the string in the middle of a
multi-byte UTF-8 sequence. This should have been caught by util.stanza
validation, but that would have caused some havoc, at the very least causing
the notification to not be sent.
There have been no reports of this happening. Likely because this module
isn't widely deployed among users with languages that use many longer UTF-8
sequences.
The util.encodings.utf8.valid() function is O(n) where only the last
sequence really needs to be checked, but it's in C and expected to be fast.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 22 Aug 2021 13:22:59 +0200 |
parent | 2439:1f7820f68868 |
rev | line source |
---|---|
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- Prosody IM |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 -- |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 -- This project is MIT/X11 licensed. Please see the |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 -- COPYING file in the source package for more information. |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 -- |
2437
75be377b74ea
mod_auth_any: Ignore unused arguments, useful to show what arguments are given
Kim Alvefur <zash@zash.se>
parents:
1343
diff
changeset
|
8 -- luacheck: ignore 212 |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 local datamanager = require "util.datamanager"; |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 local new_sasl = require "util.sasl".new; |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
13 local host = module.host; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
14 local provider = { name = "any" }; |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
16 function provider.test_password(username, password) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
17 return true; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
18 end |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
20 function provider.set_password(username, password) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
21 local account = datamanager.load(username, host, "accounts"); |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
22 if account then |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
23 account.password = password; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
24 return datamanager.store(username, host, "accounts", account); |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 end |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
26 return nil, "Account not available."; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
27 end |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
29 function provider.user_exists(username) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
30 return true; |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 end |
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
33 function provider.create_user(username, password) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
34 return datamanager.store(username, host, "accounts", {password = password}); |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
35 end |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
36 |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
37 function provider.delete_user(username) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
38 return datamanager.store(username, host, "accounts", nil); |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
39 end |
1294
bb1fb54360ab
mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 |
2438
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
41 function provider.get_sasl_handler() |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
42 local getpass_authentication_profile = { |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
43 plain_test = function(sasl, username, password, realm) |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
44 return true, true; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
45 end |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
46 }; |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
47 return new_sasl(module.host, getpass_authentication_profile); |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
48 end |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
49 |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
50 module:add_item("auth-provider", provider); |
a528627e45ab
mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents:
2437
diff
changeset
|
51 |