Software /
code /
prosody
Diff
plugins/mod_admin_telnet.lua @ 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 |
parent | 4779:9f2639b3d9b1 |
child | 4912:8d0643281fe2 |
line wrap: on
line diff
--- a/plugins/mod_admin_telnet.lua Mon Apr 30 01:20:13 2012 +0100 +++ b/plugins/mod_admin_telnet.lua Wed May 02 18:21:47 2012 +0100 @@ -17,7 +17,8 @@ local iterators = require "util.iterators"; local keys, values = iterators.keys, iterators.values; -local jid_bare = require "util.jid".bare; +local jid = require "util.jid"; +local jid_bare, jid_split = jid.bare, jid.split; local set, array = require "util.set", require "util.array"; local cert_verify_identity = require "util.x509".verify_identity; @@ -832,6 +833,29 @@ return true, "Closed "..n_closed.." ports"; end +def_env.muc = {}; + +local console_room_mt = { + __index = function (self, k) return self.room[k]; end; + __tostring = function (self) + return "MUC room <"..self.room.jid..">"; + end; +}; + +function def_env.muc:room(room_jid) + local room_name, host = jid_split(room_jid); + if not hosts[host] then + return nil, "No such host: "..host; + elseif not hosts[host].modules.muc then + return nil, "Host '"..host.."' is not a MUC service"; + end + local room_obj = hosts[host].modules.muc.rooms[room_jid]; + if not room_obj then + return nil, "No such room: "..room_jid; + end + return setmetatable({ room = room_obj }, console_room_mt); +end + ------------- function printbanner(session)