Software /
code /
prosody-modules
Changeset
4562:28c16c93d79a
mod_limits_exception: New module to except some JIDs from rate limiting
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 24 May 2021 15:46:11 +0100 |
parents | 4561:c6b740ccf6ec |
children | 4563:30f2d7c3f946 |
files | mod_limits_exception/README.markdown mod_limits_exception/mod_limits_exception.lua |
diffstat | 2 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_limits_exception/README.markdown Mon May 24 15:46:11 2021 +0100 @@ -0,0 +1,26 @@ +--- +summary: Allow specified JIDs to bypass rate limits +... + +This module allows you to configure a list of JIDs that should be allowed to +bypass rate limit restrictions. + +It is designed for Prosody 0.11.x. Prosody 0.12.x supports this feature +natively. + +## Configuration + +First, enable this module by adding `"limits_exception"` to your +`modules_enabled` list. + +Next, configure a list of JIDs to exclude from rate limiting: + +``` +unlimited_jids = { "user1@example.com", "user2@example.net" } +``` + +## Compatibility + +Made for Prosody 0.11.x only. + +Using this module with Prosody trunk/0.12 may cause unexpected behaviour.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_limits_exception/mod_limits_exception.lua Mon May 24 15:46:11 2021 +0100 @@ -0,0 +1,17 @@ +local unlimited_jids = module:get_option_inherited_set("unlimited_jids", {}); + +if unlimited_jids:empty() then + return; +end + +module:hook("authentication-success", function (event) + local session = event.session; + local jid = session.username .. "@" .. session.host; + if unlimited_jids:contains(jid) then + if session.conn and session.conn.setlimit then + session.conn:setlimit(0); + elseif session.throttle then + session.throttle = nil; + end + end +end);