Diff

plugins/mod_console.lua @ 1919:b641068d61a9

mod_console: Add module:list() command to show modules loaded on a host
author Matthew Wild <mwild1@gmail.com>
date Mon, 05 Oct 2009 14:40:01 +0100
parent 1821:05ed826da89b
child 1907:1dd4443e7d93
line wrap: on
line diff
--- a/plugins/mod_console.lua	Mon Oct 05 14:38:04 2009 +0100
+++ b/plugins/mod_console.lua	Mon Oct 05 14:40:01 2009 +0100
@@ -318,6 +318,31 @@
 	return ok, (ok and "Module reloaded on "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err));
 end
 
+function def_env.module:list(hosts)
+	if hosts == nil then
+		hosts = array.collect(keys(prosody.hosts));
+	end
+	if type(hosts) == "string" then
+		hosts = { hosts };
+	end
+	if type(hosts) ~= "table" then
+		return false, "Please supply a host or a list of hosts you would like to see";
+	end
+	
+	local print = self.session.print;
+	for _, host in ipairs(hosts) do
+		print(host..":");
+		local modules = array.collect(keys(prosody.hosts[host].modules or {})):sort();
+		if #modules == 0 then
+			print("    No modules loaded");
+		else
+			for _, name in ipairs(modules) do
+				print("    "..name);
+			end
+		end
+	end
+end
+
 def_env.config = {};
 function def_env.config:load(filename, format)
 	local config_load = require "core.configmanager".load;