trunk

changeset 4807:2999f0fd1347

mod_admin_telnet: Add muc:room(jid) command to get the MUC room object
author Matthew Wild <mwild1@gmail.com>
date Wed, 02 May 2012 18:21:47 +0100
parents 27a99c289b90
children 07d0a3a75c8a
files plugins/mod_admin_telnet.lua
diffstat 1 files changed, 25 insertions(+), 1 deletions(-) [+]
line diff
     1.1 --- a/plugins/mod_admin_telnet.lua	Mon Apr 30 01:20:13 2012 +0100
     1.2 +++ b/plugins/mod_admin_telnet.lua	Wed May 02 18:21:47 2012 +0100
     1.3 @@ -17,7 +17,8 @@
     1.4  
     1.5  local iterators = require "util.iterators";
     1.6  local keys, values = iterators.keys, iterators.values;
     1.7 -local jid_bare = require "util.jid".bare;
     1.8 +local jid = require "util.jid";
     1.9 +local jid_bare, jid_split = jid.bare, jid.split;
    1.10  local set, array = require "util.set", require "util.array";
    1.11  local cert_verify_identity = require "util.x509".verify_identity;
    1.12  
    1.13 @@ -832,6 +833,29 @@
    1.14  	return true, "Closed "..n_closed.." ports";
    1.15  end
    1.16  
    1.17 +def_env.muc = {};
    1.18 +
    1.19 +local console_room_mt = {
    1.20 +	__index = function (self, k) return self.room[k]; end;
    1.21 +	__tostring = function (self)
    1.22 +		return "MUC room <"..self.room.jid..">";
    1.23 +	end;
    1.24 +};
    1.25 +
    1.26 +function def_env.muc:room(room_jid)
    1.27 +	local room_name, host = jid_split(room_jid);
    1.28 +	if not hosts[host] then
    1.29 +		return nil, "No such host: "..host;
    1.30 +	elseif not hosts[host].modules.muc then
    1.31 +		return nil, "Host '"..host.."' is not a MUC service";
    1.32 +	end
    1.33 +	local room_obj = hosts[host].modules.muc.rooms[room_jid];
    1.34 +	if not room_obj then
    1.35 +		return nil, "No such room: "..room_jid;
    1.36 +	end
    1.37 +	return setmetatable({ room = room_obj }, console_room_mt);
    1.38 +end
    1.39 +
    1.40  -------------
    1.41  
    1.42  function printbanner(session)