55 lines
1.2 KiB
Lua
55 lines
1.2 KiB
Lua
local jid_split = require "util.jid".split;
|
|
module:depends"muc";
|
|
|
|
|
|
local function get_e2e(room)
|
|
local e2e = room._data.e2e;
|
|
if e2e then -- explicitly configured
|
|
return e2e;
|
|
end
|
|
return false;
|
|
end
|
|
|
|
module:hook("muc-config-form", function(event)
|
|
local room, form = event.room, event.form;
|
|
local re2e = get_e2e(room);
|
|
table.insert(form, {
|
|
name = "muc#roomconfig_e2e",
|
|
type = "boolean",
|
|
label = "if the room is E2E ecnrypted",
|
|
value = re2e,
|
|
});
|
|
-- value = get_e2e(room),
|
|
end);
|
|
|
|
module:hook("muc-config-submitted", function(event)
|
|
local room, fields, changed = event.room, event.fields, event.changed;
|
|
local new = fields["muc#roomconfig_e2e"];
|
|
if new ~= get_e2e(room) then
|
|
if new == get_e2e(room) then
|
|
room._data.e2e = false;
|
|
else
|
|
room._data.e2e = new;
|
|
end
|
|
if type(changed) == "table" then
|
|
changed["muc#roomconfig_e2e"] = true;
|
|
else
|
|
event.changed = true;
|
|
end
|
|
end
|
|
end);
|
|
|
|
module:hook("muc-disco#info", function (event)
|
|
local room, form, formdata = event.room, event.form, event.formdata;
|
|
|
|
local e2e = get_e2e(room);
|
|
module:log("info", "got e2e as %s", e2e);
|
|
-- if not e2e or e2e == "" then
|
|
--return;
|
|
-- end
|
|
table.insert(form, {
|
|
name = "muc#roominfo_e2e",
|
|
});
|
|
formdata["muc#roominfo_e2e"] = e2e;
|
|
end);
|