annotate mod_filter_words/mod_filter_words.lua @ 4326:f6fdefc5c6ac

mod_roster_command: Fix subscription when the "user JID" is a bare domain. Do not attempt to update the roster when the user is bare domain (e.g. a component), since they don't have rosters and the attempt results in an error: $ prosodyctl mod_roster_command subscribe proxy.example.com contact@example.com xxxxxxxxxxFailed to execute command: Error: /usr/lib/prosody/core/rostermanager.lua:104: attempt to concatenate local 'username' (a nil value) stack traceback: /usr/lib/prosody/core/rostermanager.lua:104: in function 'load_roster' /usr/lib/prosody/core/rostermanager.lua:305: in function 'set_contact_pending_out' mod_roster_command.lua:44: in function 'subscribe'
author Boris Grozev <boris@jitsi.org>
date Tue, 05 Jan 2021 13:15:00 -0600
parents 677fc0203da0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2273
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local filters = require "util.filters";
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local replacements = module:get_option("filter_words", {});
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 if not replacements then
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 module:log("warn", "No 'filter_words' option set, filters inactive");
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 return
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 function filter_stanza(stanza)
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 if stanza.name == "message" then
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 local body = stanza:get_child("body");
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 if body then
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 body[1] = body[1]:gsub("%a+", replacements);
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 return stanza;
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 function filter_session(session)
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 filters.add_filter(session, "stanzas/in", filter_stanza);
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 function module.load()
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 if module.reloading then
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 module:log("warn", "RELOADING!!!");
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 filters.add_filter_hook(filter_session);
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 function module.unload()
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 filters.remove_filter_hook(filter_session);
677fc0203da0 mod_filter_words: Very basic module in its early stages, to filter words in messages
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 end