mod_storage_gdbm: Use require directly instead of util.import (which is not available in prosodyctl, breaks adduser etc)
module:set_global();
local tostring = tostring;
local filters = require "util.filters";
local def_env = module:shared("admin_telnet/env");
local rawdebug_enabled = module:shared("sessions");
local full_sessions = prosody.full_sessions;
local log = module._log;
local rawdebug = {};
def_env.rawdebug = rawdebug;
local function new_logger(log, prefix)
local msg = prefix .. ": %s";
return function (data)
log("debug", msg, tostring(data))
return data;
end
end
function rawdebug:enable(sessionid, typ)
local session = full_sessions[sessionid];
typ = typ or "stanzas";
if not session then
return nil, "No such session";
end
local f = {
[typ .. "/in"] = new_logger(session.log or log, "RECV");
[typ .. "/out"] = new_logger(session.log or log, "SEND");
};
for type, callback in pairs(f) do
filters.add_filter(session, type, callback)
end
rawdebug_enabled[session] = f;
end
function rawdebug:disable(sessionid)
local session = full_sessions[sessionid];
if not session then
return nil, "No such session";
end
local f = rawdebug_enabled[session];
for type, callback in pairs(f) do
filters.remove_filter(session, type, callback)
end
end
function module.unload()
def_env.rawdebug = nil;
for session, f in pairs(rawdebug_enabled) do
for type, callback in pairs(f) do
filters.remove_filter(session, type, callback)
end
end
end