aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/server.lua16
-rw-r--r--net/server_select.lua3
-rw-r--r--plugins/mod_admin_telnet.lua26
-rw-r--r--util/timer.lua13
4 files changed, 34 insertions, 24 deletions
diff --git a/net/server.lua b/net/server.lua
index 1c1a63a4..d644af56 100644
--- a/net/server.lua
+++ b/net/server.lua
@@ -18,19 +18,8 @@ end
local server;
if use_luaevent then
- server = require "net.server_event";
- -- util.timer requires "net.server", so instead of having
- -- Lua look for, and load us again (causing a loop) - set this here
- -- (usually it isn't set until we return, look down there...)
- package.loaded["net.server"] = server;
-
- -- Backwards compatibility for timers, addtimer
- -- called a function roughly every second
- local add_task = require "util.timer".add_task;
- function server.addtimer(f)
- return add_task(1, function (...) f(...); return 1; end);
- end
-
+ server = require "net.server_select";
+
-- Overwrite signal.signal() because we need to ask libevent to
-- handle them instead
local ok, signal = pcall(require, "util.signal");
@@ -48,7 +37,6 @@ if use_luaevent then
end
else
server = require "net.server_select";
- package.loaded["net.server"] = server;
end
-- require "net.server" shall now forever return this,
diff --git a/net/server_select.lua b/net/server_select.lua
index d6cfc1f8..70825ada 100644
--- a/net/server_select.lua
+++ b/net/server_select.lua
@@ -75,7 +75,6 @@ local id
local loop
local stats
local idfalse
-local addtimer
local closeall
local addsocket
local addserver
@@ -921,6 +920,7 @@ end
----------------------------------// PUBLIC INTERFACE //--
return {
+ _addtimer = addtimer,
addclient = addclient,
wrapclient = wrapclient,
@@ -930,7 +930,6 @@ return {
step = step,
stats = stats,
closeall = closeall,
- addtimer = addtimer,
addserver = addserver,
getserver = getserver,
setlogger = setlogger,
diff --git a/plugins/mod_admin_telnet.lua b/plugins/mod_admin_telnet.lua
index 544ea161..f4fdb39e 100644
--- a/plugins/mod_admin_telnet.lua
+++ b/plugins/mod_admin_telnet.lua
@@ -17,7 +17,8 @@ local console_listener = { default_port = 5582; default_mode = "*l"; interface =
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 @@ function def_env.port:close(close_port, close_interface)
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)
diff --git a/util/timer.lua b/util/timer.lua
index d36fb8c4..ba7dd429 100644
--- a/util/timer.lua
+++ b/util/timer.lua
@@ -6,11 +6,7 @@
-- COPYING file in the source package for more information.
--
-
-local ns_addtimer = require "net.server".addtimer;
-local event = require "net.server".event;
-local event_base = require "net.server".event_base;
-
+local server = require "net.server";
local math_min = math.min
local math_huge = math.huge
local get_time = require "socket".gettime;
@@ -24,7 +20,7 @@ local new_data = {};
module "timer"
local _add_task;
-if not event then
+if not server.event then
function _add_task(delay, callback)
local current_time = get_time();
delay = delay + current_time;
@@ -38,7 +34,7 @@ if not event then
end
end
- ns_addtimer(function()
+ server._addtimer(function()
local current_time = get_time();
if #new_data > 0 then
for _, d in pairs(new_data) do
@@ -64,7 +60,10 @@ if not event then
return next_time;
end);
else
+ local event = require "net.server".event;
+ local event_base = require "net.server".event_base;
local EVENT_LEAVE = (event.core and event.core.LEAVE) or -1;
+
function _add_task(delay, callback)
local event_handle;
event_handle = event_base:addevent(nil, 0, function ()