Mercurial > prosody-modules
diff mod_audit/mod_audit.lua @ 5326:dc058fcc3fe3
mod_audit: Improve filtering options and add documentation to README
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 07 Apr 2023 13:44:18 +0100 |
parents | 11b37063d80a |
children | 7e3862a26e55 |
line wrap: on
line diff
--- a/mod_audit/mod_audit.lua Fri Apr 07 13:25:34 2023 +0100 +++ b/mod_audit/mod_audit.lua Fri Apr 07 13:44:18 2023 +0100 @@ -125,8 +125,9 @@ end function module.command(_arg) - local arg = require "util.argparse".parse(_arg, { value_params = { "limit", "user" } }); - local host = arg[1]; + local jid = require "util.jid"; + local arg = require "util.argparse".parse(_arg, { value_params = { "limit" } }); + local query_user, host = jid.prepped_split(arg[1]); if not host then print("EE: Please supply the host for which you want to show events"); return 1; @@ -139,8 +140,15 @@ local store = stores[host]; local c = 0; + if arg.global then + if query_user then + print("WW: Specifying a user account is incompatible with --global. Showing only global events."); + end + query_user = "@"; + end + local results, err = store:find(nil, { - with = arg.user; + with = query_user; limit = arg.limit and tonumber(arg.limit) or nil; reverse = true; }) @@ -155,7 +163,7 @@ { title = "Event", key = "event_type", width = "2p" }; }; - if arg.show_user ~= false and (not arg.global or arg.show_user) then + if arg.show_user ~= false and (not arg.global and not query_user) or arg.show_user then table.insert(colspec, { title = "User", key = "username", width = "2p", mapper = function (user) @@ -166,12 +174,12 @@ end; }); end - if arg.show_ip ~= false and (not arg.global and attach_ips or arg.show_ip) then + if arg.show_ip ~= false and (not arg.global and attach_ips) or arg.show_ip then table.insert(colspec, { title = "IP", key = "ip", width = "2p"; }); end - if arg.show_location ~= false and (not arg.global and attach_location or arg.show_location) then + if arg.show_location ~= false and (not arg.global and attach_location) or arg.show_location then table.insert(colspec, { title = "Location", key = "country", width = 2; }); @@ -183,15 +191,17 @@ print(row()); print(string.rep("-", width)); for _, entry, when, user in results do - c = c + 1; - print(row({ - when = when; - source = entry.attr.source; - event_type = entry.attr.type:gsub("%-", " "); - username = user; - ip = entry:get_child_text("remote-ip"); - location = entry:find("location@country"); - })); + if arg.global ~= false or user ~= "@" then + c = c + 1; + print(row({ + when = when; + source = entry.attr.source; + event_type = entry.attr.type:gsub("%-", " "); + username = user; + ip = entry:get_child_text("remote-ip"); + location = entry:find("location@country"); + })); + end end print(string.rep("-", width)); print(("%d records displayed"):format(c));