plugins/rtbl_admin.lua

changeset 165
ec0567256b11
child 166
95b668d73ff9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/rtbl_admin.lua	Sun Dec 05 18:35:39 2021 +0000
@@ -0,0 +1,44 @@
+local verse = require "verse";
+local jid = require "util.jid";
+local sha256 = require "util.hashes".sha256;
+
+function riddim.plugins.rtbl_admin(bot)
+	bot.stream:add_plugin("pubsub");
+
+	local config = bot.config.rtbl_admin;
+
+	bot:hook("commands/rtbl-add", function (command)
+		local reported_jid = command.param and jid.prep(command.param:match("^%S+"));
+		local hash = sha256(reported_jid, true);
+		bot.stream.pubsub(config.host, config.node):publish(
+			hash, -- item id
+			nil, -- options (not implemented anyway)
+			-- <report xmlns="urn:xmpp:reporting:1" reason="urn:xmpp:reporting:abuse"/>
+			verse.stanza("report", {
+				xmlns = "urn:xmpp:reporting:1";
+				reason = "urn:xmpp:reporting:spam"; }),
+			function (success) -- callback
+				if not success then
+					command:reply("Failed to update RTBL");
+					return;
+				end
+				command:reply("RTBL entry added");
+			end
+		);
+	end);
+
+	bot:hook("commands/rtbl-remove", function (command)
+		local reported_jid = command.param and jid.prep(command.param:match("^%S+"));
+		local hash = sha256(reported_jid, true);
+		bot.stream.pubsub(config.host, config.node):retract(
+			hash, -- item id
+			function (success) -- callback
+				if not success then
+					command:reply("Failed to update RTBL");
+					return;
+				end
+				command:reply("RTBL entry removed");
+			end
+		);
+	end);
+end

mercurial