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)
