Mercurial > prosody-modules
annotate mod_block_registrations/mod_block_registrations.lua @ 6167:886c985ece61
mod_lastlog2: Skip initializing internal API (and storage) in prosodyctl
Initializing storage in the global context under prosodyctl causes the
module.command to fail to execute because the storage module has already
been loaded.
Introduced in 7b722955c59b
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 08 Feb 2025 14:12:18 +0100 |
| parents | 368bf9b06484 |
| children | 2f01497b04c9 |
| rev | line source |
|---|---|
|
1053
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local st = require "util.stanza"; |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local nodeprep = require "util.encodings".stringprep.nodeprep; |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
|
5065
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
4 local block_users = module:get_option_set("block_registrations_users", { |
|
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
5 "abuse", "admin", "administrator", "hostmaster", "info", "news", |
|
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
6 "noc", "operator", "owner", "postmaster", "register", "registration", |
|
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
7 "root", "security", "service", "signup", "support", "sysadmin", |
|
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
8 "sysop", "system", "test", "trouble", "webmaster", "www", "xmpp", |
|
368bf9b06484
mod_block_registrations: Expand default list of blocked usernames (RFC 2142)
Matthew Wild <mwild1@gmail.com>
parents:
1697
diff
changeset
|
9 }); |
|
1053
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 local block_patterns = module:get_option_set("block_registrations_matching", {}); |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 local require_pattern = module:get_option_string("block_registrations_require"); |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 function is_blocked(username) |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 -- Check if the username is simply blocked |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 if block_users:contains(username) then return true; end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 for pattern in block_patterns do |
|
1697
27aa58ed3e2e
mod_block_registrations: string.find is faster than string.match when only needing a boolean answer
Kim Alvefur <zash@zash.se>
parents:
1331
diff
changeset
|
18 if username:find(pattern) then |
|
1053
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 return true; |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 -- Not blocked, but check that username matches allowed pattern |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 if require_pattern and not username:match(require_pattern) then |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 return true; |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 |
|
1331
dbaa67babeb4
mod_block_registrations: Switch to using the 'user-registering' event
Kim Alvefur <zash@zash.se>
parents:
1053
diff
changeset
|
28 module:hook("user-registering", function(event) |
|
dbaa67babeb4
mod_block_registrations: Switch to using the 'user-registering' event
Kim Alvefur <zash@zash.se>
parents:
1053
diff
changeset
|
29 local username = event.username; |
|
dbaa67babeb4
mod_block_registrations: Switch to using the 'user-registering' event
Kim Alvefur <zash@zash.se>
parents:
1053
diff
changeset
|
30 if is_blocked(username) then |
|
dbaa67babeb4
mod_block_registrations: Switch to using the 'user-registering' event
Kim Alvefur <zash@zash.se>
parents:
1053
diff
changeset
|
31 event.allowed = false; |
|
dbaa67babeb4
mod_block_registrations: Switch to using the 'user-registering' event
Kim Alvefur <zash@zash.se>
parents:
1053
diff
changeset
|
32 return true; |
|
1053
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 end |
|
cabbcc1997d9
mod_block_registrations: Allow restricting registrations of certain user accounts, and/or ensure that registered accounts conform to a given pattern
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 end, 10); |
