Software /
code /
prosody
Annotate
plugins/mod_watchregistrations.lua @ 12995:e385f3a06673
moduleapi: Add 'peek' to :may() and new :could() helper to suppress logging
The current method logs scary "access denied" messages on failure - this is
generally very useful when debugging access control stuff, but in some cases
the call is simply a check to see if someone *could* perform an action, even
if they haven't requested it yet. One example is determining whether to show
the user as an admin in disco.
The 'peek' parameter, if true, will suppress such logging.
The :could() method is just a simple helper that can make the calling code a
bit more readable (suggested by Zash).
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 26 Mar 2023 14:06:04 +0100 |
parent | 12977:74b9e05af71e |
child | 13202:173038306750 |
rev | line source |
---|---|
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1251
diff
changeset
|
1 -- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1654
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1654
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
5014
diff
changeset
|
4 -- |
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1251
diff
changeset
|
5 -- This project is MIT/X11 licensed. Please see the |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1251
diff
changeset
|
6 -- COPYING file in the source package for more information. |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1251
diff
changeset
|
7 -- |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1251
diff
changeset
|
8 |
1201
9d5c1b2cf89c
mod_watchregistrations: New plugin to send a message to admins when a new user registers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
9d5c1b2cf89c
mod_watchregistrations: New plugin to send a message to admins when a new user registers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 local host = module:get_host(); |
12977
74b9e05af71e
plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
8812
diff
changeset
|
11 local jid_prep = require "prosody.util.jid".prep; |
1201
9d5c1b2cf89c
mod_watchregistrations: New plugin to send a message to admins when a new user registers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
4909
01bfb9a76660
mod_watchregistrations: Convert JID list to a set, and prep before use to fix traceback on invalid JIDs (thanks sMi)
Matthew Wild <mwild1@gmail.com>
parents:
4453
diff
changeset
|
13 local registration_watchers = module:get_option_set("registration_watchers", module:get_option("admins", {})) / jid_prep; |
7860
49ff363f3a3d
mod_watchregistrations: add a "registration_from" option
mathieui
parents:
7268
diff
changeset
|
14 local registration_from = module:get_option_string("registration_from", host); |
7268
29861845e0e0
mod_watchregistrations: Use type-specific config API for 'registration_notification'
Kim Alvefur <zash@zash.se>
parents:
5776
diff
changeset
|
15 local registration_notification = module:get_option_string("registration_notification", "User $username just registered on $host from $ip"); |
8812
3d7fceaff230
mod_watchregistrations: Allow making the message type configurable
Kim Alvefur <zash@zash.se>
parents:
8154
diff
changeset
|
16 local msg_type = module:get_option_string("registration_notification_type", "chat"); |
1201
9d5c1b2cf89c
mod_watchregistrations: New plugin to send a message to admins when a new user registers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
12977
74b9e05af71e
plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
8812
diff
changeset
|
18 local st = require "prosody.util.stanza"; |
1201
9d5c1b2cf89c
mod_watchregistrations: New plugin to send a message to admins when a new user registers
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
4391
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
20 module:hook("user-registered", function (user) |
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
21 module:log("debug", "Notifying of new registration"); |
8812
3d7fceaff230
mod_watchregistrations: Allow making the message type configurable
Kim Alvefur <zash@zash.se>
parents:
8154
diff
changeset
|
22 local message = st.message{ type = msg_type, from = registration_from } |
4391
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
23 :tag("body") |
4453
7dc743378e1e
mod_watchregistrations: Fixed an undefined global access (thanks Medics).
Waqas Hussain <waqas20@gmail.com>
parents:
4391
diff
changeset
|
24 :text(registration_notification:gsub("%$(%w+)", function (v) |
4391
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
25 return user[v] or user.session and user.session[v] or nil; |
8152
8e26672df704
mod_watchregistrations: Return the pointer to the root of the stanza, fixes #922.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5014
diff
changeset
|
26 end)) |
8e26672df704
mod_watchregistrations: Return the pointer to the root of the stanza, fixes #922.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5014
diff
changeset
|
27 :up(); |
4909
01bfb9a76660
mod_watchregistrations: Convert JID list to a set, and prep before use to fix traceback on invalid JIDs (thanks sMi)
Matthew Wild <mwild1@gmail.com>
parents:
4453
diff
changeset
|
28 for jid in registration_watchers do |
4391
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
29 module:log("debug", "Notifying %s", jid); |
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
30 message.attr.to = jid; |
5014
b2006c1cfa85
mod_announce, mod_motd, mod_pubsub, mod_register, mod_watchregistrations, mod_welcome: Use module:send() instead of core_*_stanza()
Kim Alvefur <zash@zash.se>
parents:
4909
diff
changeset
|
31 module:send(message); |
4391
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
32 end |
71083327f608
mod_watchregistrations: Update to pass default options to module:get_option(), and reformat the code a little
Matthew Wild <mwild1@gmail.com>
parents:
3540
diff
changeset
|
33 end); |