File

plugins/muc/util.lib.lua @ 7706:d92e186c2a1c

MUC: Include the appropriate status code if nickname is changed during join process
author Kim Alvefur <zash@zash.se>
date Wed, 26 Oct 2016 13:10:22 +0200
parent 6271:006b0e0f0de2
child 9599:5a2135964ed3
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
-- Copyright (C) 2014 Daurnimator
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local _M = {};

_M.valid_affiliations = {
	outcast = -1;
	none = 0;
	member = 1;
	admin = 2;
	owner = 3;
};

_M.valid_roles = {
	none = 0;
	visitor = 1;
	participant = 2;
	moderator = 3;
};

local kickable_error_conditions = {
	["gone"] = true;
	["internal-server-error"] = true;
	["item-not-found"] = true;
	["jid-malformed"] = true;
	["recipient-unavailable"] = true;
	["redirect"] = true;
	["remote-server-not-found"] = true;
	["remote-server-timeout"] = true;
	["service-unavailable"] = true;
	["malformed error"] = true;
};
function _M.is_kickable_error(stanza)
	local cond = select(2, stanza:get_error()) or "malformed error";
	return kickable_error_conditions[cond];
end

local muc_x_filters = {
	["http://jabber.org/protocol/muc"] = true;
	["http://jabber.org/protocol/muc#user"] = true;
}
local function muc_x_filter(tag)
	if muc_x_filters[tag.attr.xmlns] then
		return nil;
	end
	return tag;
end
function _M.filter_muc_x(stanza)
	return stanza:maptags(muc_x_filter);
end

return _M;