1 -- Copyright (C) 2015 Travis Burtrum
2 -- This file is MIT/X11 licensed.
4 -- set like so in prosody config, works on full or bare jids, or hosts:
6 -- ["old@example.net"] = "new@example.net";
7 -- ["you@example.com"] = "you@example.net";
8 -- ["conference.example.com"] = "conference.example.net";
11 local aliases
= module
:get_option("aliases", {});
12 local alias_response
= module
:get_option("alias_response", "User $alias can be contacted at $target");
14 local st
= require
"util.stanza";
16 function handle_alias(event
)
18 if event
.stanza
.attr
.type ~= "error" then
19 local alias
= event
.stanza
.attr
.to
;
20 local target
= aliases
[alias
];
22 local replacements
= {
26 local error_message
= alias_response
:gsub("%$([%w_]+)", function (v
)
27 return replacements
[v
] or nil;
29 local message
= st
.message({ type = "chat", from
= alias
, to
= event
.stanza
.attr
.from
}, error_message
);
31 return event
.origin
.send(st
.error_reply(event
.stanza
, "cancel", "gone", error_message
));
37 module
:hook("message/bare", handle_alias
, 300);
38 module
:hook("message/full", handle_alias
, 300);
39 module
:hook("message/host", handle_alias
, 300);
41 module
:hook("presence/bare", handle_alias
, 300);
42 module
:hook("presence/full", handle_alias
, 300);
43 module
:hook("presence/host", handle_alias
, 300);