Software /
code /
prosody
Changeset
454:21105a005eef
Merge from waqas
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 28 Nov 2008 18:06:29 +0000 |
parents | 451:e9f269e5204e (diff) 453:a1efb2cb4f9c (current diff) |
children | 455:2eeae9c314b0 456:27cb85d4059e |
files | |
diffstat | 5 files changed, 52 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/core/modulemanager.lua Fri Nov 28 22:47:22 2008 +0500 +++ b/core/modulemanager.lua Fri Nov 28 18:06:29 2008 +0000 @@ -27,6 +27,9 @@ function load(host, module_name, config) + if not (host and module_name) then + return nil, "insufficient-parameters"; + end local mod, err = loadfile("plugins/mod_"..module_name..".lua"); if not mod then log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); @@ -59,6 +62,23 @@ return true; end +function is_loaded(host, name) + return modulemap[host] and modulemap[host][name] and true; +end + +function unload(host, name, ...) + local mod = modulemap[host] and modulemap[host][name]; + if not mod then return nil, "module-not-loaded"; end + + if type(mod.unload) == "function" then + local ok, err = pcall(mod.unload, ...) + if (not ok) and err then + log("warn", "Non-fatal error unloading module '%s' from '%s': %s", name, host, err); + end + end + +end + function handle_stanza(host, origin, stanza) local name, xmlns, origin_type = stanza.name, stanza.attr.xmlns, origin.type;
--- a/core/s2smanager.lua Fri Nov 28 22:47:22 2008 +0500 +++ b/core/s2smanager.lua Fri Nov 28 18:06:29 2008 +0000 @@ -143,7 +143,7 @@ end local cl = connlisteners_get("xmppserver"); - conn = wraptlsclient(cl, conn, connect_host, connect_port, 0, 1, hosts[from_host].ssl_ctx ); + conn = wraptlsclient(cl, conn, connect_host, connect_port, 0, cl.default_mode or 1, hosts[from_host].ssl_ctx ); host_session.conn = conn; -- Register this outgoing connection so that xmppserver_listener knows about it
--- a/net/xmppclient_listener.lua Fri Nov 28 22:47:22 2008 +0500 +++ b/net/xmppclient_listener.lua Fri Nov 28 18:06:29 2008 +0000 @@ -19,7 +19,7 @@ local stream_callbacks = { streamopened = sm_streamopened, streamclosed = sm_streamclosed }; local sessions = {}; -local xmppclient = { default_port = 5222 }; +local xmppclient = { default_port = 5222, default_mode = "*a" }; -- These are session methods --
--- a/net/xmppserver_listener.lua Fri Nov 28 22:47:22 2008 +0500 +++ b/net/xmppserver_listener.lua Fri Nov 28 18:06:29 2008 +0000 @@ -21,7 +21,7 @@ local st = stanza; local sessions = {}; -local xmppserver = { default_port = 5269 }; +local xmppserver = { default_port = 5269, default_mode = "*a" }; -- These are session methods --
--- a/plugins/mod_console.lua Fri Nov 28 22:47:22 2008 +0500 +++ b/plugins/mod_console.lua Fri Nov 28 18:06:29 2008 +0000 @@ -37,7 +37,7 @@ -- Handle new connection session = console:new_session(conn); sessions[conn] = session; - session.print("Welcome to the lxmppd admin console!"); + printbanner(session); end if data then -- Handle data @@ -129,15 +129,24 @@ end def_env.module = {}; -function def_env.module:load(name) +function def_env.module:load(name, host, config) local mm = require "modulemanager"; - local ok, err = mm.load(name); + local ok, err = mm.load(host or self.env.host, name, config); if not ok then return false, err or "Unknown error loading module"; end return true, "Module loaded"; end +function def_env.module:unload(name, host) + local mm = require "modulemanager"; + local ok, err = mm.unload(host or self.env.host, name); + if not ok then + return false, err or "Unknown error unloading module"; + end + return true, "Module unloaded"; +end + def_env.config = {}; function def_env.config:load(filename, format) local config_load = require "core.configmanager".load; @@ -163,3 +172,20 @@ function def_env.hosts:add(name) end + +------------- + +function printbanner(session) +session.print [[ + ____ \ / _ + | _ \ _ __ ___ ___ _-_ __| |_ _ + | |_) | '__/ _ \/ __|/ _ \ / _` | | | | + | __/| | | (_) \__ \ |_| | (_| | |_| | + |_| |_| \___/|___/\___/ \__,_|\__, | + A study in simplicity |___/ + +]] +session.print("Welcome to the Prosody administration console. For a list of commands, type: help"); +session.print("You may find more help on using this console in our online documentation at "); +session.print("http://prosody.im/doc/console\n"); +end