mod_muc_rtbl/mod_muc_rtbl.lua
changeset 5180 4791e0412ff3
parent 5179 432587ad1642
child 5181 f6b5f04d4b28
equal deleted inserted replaced
5179:432587ad1642 5180:4791e0412ff3
   127 		return true;
   127 		return true;
   128 	end
   128 	end
   129 end);
   129 end);
   130 
   130 
   131 module:hook("muc-occupant-groupchat", function(event)
   131 module:hook("muc-occupant-groupchat", function(event)
       
   132 	local affiliation = event.room:get_affiliation(event.occupant.bare_jid);
       
   133 	if affiliation and affiliation ~= "none" then
       
   134 		-- Skip check for affiliated users
       
   135 		return;
       
   136 	end
       
   137 
   132 	local bare_hash, host_hash = update_hashes(event.occupant);
   138 	local bare_hash, host_hash = update_hashes(event.occupant);
   133 	if banned_hashes[bare_hash] or banned_hashes[host_hash] then
   139 	if banned_hashes[bare_hash] or banned_hashes[host_hash] then
   134 		module:log("debug", "Blocked message from user <%s> to room <%s> due to RTBL match", event.stanza.attr.from, event.stanza.attr.to);
   140 		module:log("debug", "Blocked message from user <%s> to room <%s> due to RTBL match", event.stanza.attr.from, event.stanza.attr.to);
   135 		local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
   141 		local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
   136 		event.origin.send(error_reply);
   142 		event.origin.send(error_reply);
   138 	end
   144 	end
   139 end);
   145 end);
   140 
   146 
   141 module:hook("muc-private-message", function(event)
   147 module:hook("muc-private-message", function(event)
   142 	local occupant = event.room:get_occupant_by_nick(event.stanza.attr.from);
   148 	local occupant = event.room:get_occupant_by_nick(event.stanza.attr.from);
       
   149 	local affiliation = event.room:get_affiliation(event.occupant.bare_jid);
       
   150 	if affiliation and affiliation ~= "none" then
       
   151 		-- Skip check for affiliated users
       
   152 		return;
       
   153 	end
       
   154 
   143 	local bare_hash, host_hash = update_hashes(occupant);
   155 	local bare_hash, host_hash = update_hashes(occupant);
   144 	if banned_hashes[bare_hash] or banned_hashes[host_hash] then
   156 	if banned_hashes[bare_hash] or banned_hashes[host_hash] then
   145 		module:log("debug", "Blocked private message from user <%s> from room <%s> due to RTBL match", occupant.bare_jid, event.stanza.attr.to);
   157 		module:log("debug", "Blocked private message from user <%s> from room <%s> due to RTBL match", occupant.bare_jid, event.stanza.attr.to);
   146 		local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
   158 		local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
   147 		event.origin.send(error_reply);
   159 		event.origin.send(error_reply);