# HG changeset patch # User Matthew Wild # Date 1621867571 -3600 # Node ID 28c16c93d79a91f3fb19ac486642a9e7e2dd37a5 # Parent c6b740ccf6ec4090995843d352f3e6fd6e0e6e16 mod_limits_exception: New module to except some JIDs from rate limiting diff -r c6b740ccf6ec -r 28c16c93d79a mod_limits_exception/README.markdown --- /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. diff -r c6b740ccf6ec -r 28c16c93d79a mod_limits_exception/mod_limits_exception.lua --- /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);