mod_audit/mod_audit.lua
changeset 5761 08a635862201
parent 5735 1bdc6b5979ee
child 5765 754f8eaad34c
equal deleted inserted replaced
5760:e199f33f7a2e 5761:08a635862201
   170 	local arg = require "util.argparse".parse(arg_, {
   170 	local arg = require "util.argparse".parse(arg_, {
   171 		value_params = { "limit" };
   171 		value_params = { "limit" };
   172 	 });
   172 	 });
   173 
   173 
   174 	module:log("debug", "arg = %q", arg);
   174 	module:log("debug", "arg = %q", arg);
   175 	local query_user, host = jid.prepped_split(arg[1]);
   175 	local query_jid = jid.prep(arg[1]);
       
   176 	local host = jid.host(query_jid);
   176 
   177 
   177 	if arg.prune then
   178 	if arg.prune then
   178 		local sm = require "core.storagemanager";
   179 		local sm = require "core.storagemanager";
   179 		if host then
   180 		if host then
   180 			sm.initialize_host(host);
   181 			sm.initialize_host(host);
   199 	require "core.storagemanager".initialize_host(host);
   200 	require "core.storagemanager".initialize_host(host);
   200 	local store = stores[host];
   201 	local store = stores[host];
   201 	local c = 0;
   202 	local c = 0;
   202 
   203 
   203 	if arg.global then
   204 	if arg.global then
   204 		if query_user then
   205 		if jid.node(query_jid) then
   205 			print("WW: Specifying a user account is incompatible with --global. Showing only global events.");
   206 			print("WW: Specifying a user account is incompatible with --global. Showing only global events.");
   206 		end
   207 		end
   207 		query_user = "@";
   208 		query_jid = "@";
       
   209 	elseif host == query_jid then
       
   210 		query_jid = "@";
   208 	end
   211 	end
   209 
   212 
   210 	local results, err = store:find(nil, {
   213 	local results, err = store:find(nil, {
   211 		with = query_user;
   214 		with = query_jid;
   212 		limit = arg.limit and tonumber(arg.limit) or nil;
   215 		limit = arg.limit and tonumber(arg.limit) or nil;
   213 		reverse = true;
   216 		reverse = true;
   214 	})
   217 	})
   215 	if not results then
   218 	if not results then
   216 		print("EE: Failed to query audit log: "..tostring(err));
   219 		print("EE: Failed to query audit log: "..tostring(err));
   221 		{ title = "Date", key = "when", width = 19, mapper = function (when) return os.date("%Y-%m-%d %R:%S", when); end };
   224 		{ title = "Date", key = "when", width = 19, mapper = function (when) return os.date("%Y-%m-%d %R:%S", when); end };
   222 		{ title = "Source", key = "source", width = "2p" };
   225 		{ title = "Source", key = "source", width = "2p" };
   223 		{ title = "Event", key = "event_type", width = "2p" };
   226 		{ title = "Event", key = "event_type", width = "2p" };
   224 	};
   227 	};
   225 
   228 
   226 	if arg.show_user ~= false and (not arg.global and not query_user) or arg.show_user then
   229 	if arg.show_user ~= false and (not arg.global and not query_jid) or arg.show_user then
   227 		table.insert(colspec, {
   230 		table.insert(colspec, {
   228 			title = "User", key = "username", width = "2p",
   231 			title = "User", key = "username", width = "2p",
   229 			mapper = function (user)
   232 			mapper = function (user)
   230 				if user == "@" then return ""; end
   233 				if user == "@" then return ""; end
   231 				if user:sub(-#host-1, -1) == ("@"..host) then
   234 				if user:sub(-#host-1, -1) == ("@"..host) then