Diff

mod_unsubscriber/mod_unsubscriber.lua @ 5168:e00dc913d965

mod_unsubscriber: Revoke roster subscriptions of unreachable hosts Wrote a version of this long ago, but it was lost to time. Here it is again, from scratch!
author Kim Alvefur <zash@zash.se>
date Sun, 19 Feb 2023 17:39:04 +0100
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_unsubscriber/mod_unsubscriber.lua	Sun Feb 19 17:39:04 2023 +0100
@@ -0,0 +1,23 @@
+assert(module:get_host_type() == "component", "This module should be loaded as a Component");
+
+local st = require "util.stanza";
+
+module:hook("presence/bare", function(event)
+	local origin, stanza = event.origin, event.stanza;
+	if stanza.attr.type == "probe" then
+		-- they are subscribed and want our current presence
+		-- tell them we denied their subscription
+		local reply = st.reply(stanza)
+		reply.attr.type = "unsubcribed";
+		origin.send(reply);
+		return true;
+	elseif stanza.attr.type == nil then
+		-- they think we are subscribed and sent their current presence
+		-- tell them we unsubscribe
+		local reply = st.reply(stanza)
+		reply.attr.type = "unsubcribe";
+		origin.send(reply);
+		return true;
+	end
+	-- fall trough to default error
+end);