File

mod_alias/mod_alias.lua @ 5719:66986f5271c3

mod_storage_s3: Skip archive items matching on date but not full datetime Since it only encodes dates in paths, it would have returned items from outside the specified start..end range if they were from earlier or later in the same (UTC) day.
author Kim Alvefur <zash@zash.se>
date Sat, 11 Nov 2023 22:26:39 +0100
parent 2887:65082d91950e
line wrap: on
line source

-- Copyright (C) 2015 Travis Burtrum
-- This file is MIT/X11 licensed.

-- set like so in prosody config, works on full or bare jids, or hosts:
--aliases = {
--		["old@example.net"] = "new@example.net";
--		["you@example.com"] = "you@example.net";
--		["conference.example.com"] = "conference.example.net";
--}

local aliases = module:get_option("aliases", {});
local alias_response = module:get_option("alias_response", "User $alias can be contacted at $target");

local st = require "util.stanza";

function handle_alias(event)

	if event.stanza.attr.type ~= "error" then
		local alias = event.stanza.attr.to;
		local target = aliases[alias];
		if target then
			local replacements = {
				alias = alias,
				target = target
			};
			local error_message = alias_response:gsub("%$([%w_]+)", function (v)
					return replacements[v] or nil;
				end);
			local message = st.message({ type = "chat", from = alias, to = event.stanza.attr.from }, error_message);
			module:send(message);
			return event.origin.send(st.error_reply(event.stanza, "cancel", "gone", error_message));
		end
	end

end

module:hook("message/bare", handle_alias, 300);
module:hook("message/full", handle_alias, 300);
module:hook("message/host", handle_alias, 300);

module:hook("presence/bare", handle_alias, 300);
module:hook("presence/full", handle_alias, 300);
module:hook("presence/host", handle_alias, 300);