2021-05-24 20:52:25 +00:00
|
|
|
-- we use async to detect Prosody 0.10 and earlier
|
|
|
|
local have_async = pcall(require, 'util.async');
|
|
|
|
|
|
|
|
if not have_async then
|
|
|
|
return;
|
|
|
|
end
|
|
|
|
|
|
|
|
local unlimited_jids = module:get_option_inherited_set("unlimited_jids", {});
|
|
|
|
|
2021-08-09 16:08:02 +00:00
|
|
|
-- rises the limit of the stanza size for the unlimited jids, default is 10MB
|
|
|
|
local unlimited_stanza_size_limit = module:get_option_number("unlimited_size", 10*1024*1024);
|
|
|
|
|
2021-05-24 20:52:25 +00:00
|
|
|
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
|
2021-08-09 16:08:02 +00:00
|
|
|
|
2021-08-10 19:23:45 +00:00
|
|
|
if unlimited_stanza_size_limit and session.stream.set_stanza_size_limit then
|
2021-08-09 16:08:02 +00:00
|
|
|
module:log('info', 'Setting stanza size limits for %s to %s', jid, unlimited_stanza_size_limit)
|
|
|
|
session.stream:set_stanza_size_limit(unlimited_stanza_size_limit);
|
|
|
|
end
|
2021-05-24 20:52:25 +00:00
|
|
|
end
|
|
|
|
end);
|