view mod_spam_reporting/mod_spam_reporting.lua @ 4409:44f6537f6427

mod_invites_adhoc: Fail contact invite if user is not on current host Only the username was being used, and the host of the requester ignored. Luckily this only affects admins of the host. If they want to create an account they can use the other command. If they want to create a contact they should request from their account on this host.
author Matthew Wild <mwild1@gmail.com>
date Thu, 28 Jan 2021 07:04:11 +0000
parents a59671b3dd43
children fe24bda72838
line wrap: on
line source

-- XEP-0377: Spam Reporting for Prosody
-- Copyright (C) -2016 Kim Alvefur
--
-- This file is MIT/X11 licensed.

local jid_prep = require "util.jid".prep;

module:depends("blocklist");

module:add_feature("urn:xmpp:reporting:0");
module:add_feature("urn:xmpp:reporting:reason:spam:0");
module:add_feature("urn:xmpp:reporting:reason:abuse:0");

module:hook("iq-set/self/urn:xmpp:blocking:block", function (event)
	for item in event.stanza.tags[1]:childtags("item") do
		local report = item:get_child("report", "urn:xmpp:reporting:0");
		local jid = jid_prep(item.attr.jid);
		if report and jid then
			local type = report:get_child("spam") and "spam" or
				report:get_child("abuse") and "abuse" or
				"unknown";
			local reason = report:get_child_text("text") or "no reason given";
			module:log("warn", "Received report of %s from JID '%s', %s", type, jid, reason);
			module:fire_event(module.name.."/"..type.."-report", {
				origin = event.origin, stanza = event.stanza, jid = jid,
				item = item, report = report, reason = reason, });
		end
	end
end, 1);