38 lines
1.1 KiB
Lua
38 lines
1.1 KiB
Lua
-- XEP-0307: Unique Room Names for Multi-User Chat
|
|
local st = require "util.stanza";
|
|
local unique_name = require "util.id".medium;
|
|
module:add_feature "http://jabber.org/protocol/muc#unique"
|
|
|
|
module:log("info", "uniqe activated");
|
|
|
|
local function handle_iq(event)
|
|
local origin, stanza = event.origin, event.stanza;
|
|
local uname = unique_name():lower();
|
|
local origto = stanza.attr.to or nil;
|
|
|
|
-- module:log("info", "orig to: %s", origto);
|
|
-- module:log("info", "uname: %s", uname);
|
|
|
|
|
|
origin.send(st.reply(stanza)
|
|
:tag("unique", {xmlns = "http://jabber.org/protocol/muc#unique"})
|
|
:text(unique_name():lower())
|
|
);
|
|
|
|
end;
|
|
|
|
local function handle_iq_tobare(event)
|
|
local origin, stanza = event.origin, event.stanza;
|
|
local uname = unique_name():lower();
|
|
local origto = stanza.attr.to or nil;
|
|
|
|
-- module:log("info", "orig to: %s", origto);
|
|
-- module:log("info", "uname: %s", uname);
|
|
|
|
origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
|
|
|
|
end;
|
|
|
|
module:hook("iq-get/bare/http://jabber.org/protocol/muc#unique:unique", handle_iq_tobare, 1);
|
|
module:hook("iq-get/host/http://jabber.org/protocol/muc#unique:unique", handle_iq, -1);
|