annotate mod_limits_exception/mod_limits_exception.lua @ 4942:e7b9bc629ecc

mod_rest: Add special handling to catch MAM results from remote hosts Makes MAM queries to remote hosts works. As the comment says, MAM results from users' local archives or local MUCs are returned via origin.send() which is provided in the event and thus already worked. Results from remote hosts go via normal stanza routing and events, which need this extra handling to catch. This pattern of iq-set, message+, iq-result is generally limited to MAM. Closest similar thing might be MUC join, but to really handle that you would need the webhook callback mechanism.
author Kim Alvefur <zash@zash.se>
date Mon, 16 May 2022 19:47:09 +0200
parents 28c16c93d79a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4562
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local unlimited_jids = module:get_option_inherited_set("unlimited_jids", {});
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 if unlimited_jids:empty() then
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 return;
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 end
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 module:hook("authentication-success", function (event)
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 local session = event.session;
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local jid = session.username .. "@" .. session.host;
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 if unlimited_jids:contains(jid) then
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 if session.conn and session.conn.setlimit then
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 session.conn:setlimit(0);
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 elseif session.throttle then
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 session.throttle = nil;
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 end
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 end
28c16c93d79a mod_limits_exception: New module to except some JIDs from rate limiting
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 end);