--- /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);