Mercurial > prosody-modules
annotate mod_list_inactive/mod_list_inactive.lua @ 5787:e79f9dec35c0
mod_c2s_conn_throttle: Reduce log level from error->info
Our general policy is that "error" should never be triggerable by remote
entities, and that it is always about something that requires admin
intervention. This satisfies neither condition.
The "warn" level can be used for unexpected events/behaviour triggered by
remote entities, and this could qualify. However I don't think failed auth
attempts are unexpected enough.
I selected "info" because it is what is also used for other notable session
lifecycle events.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 07 Dec 2023 15:46:50 +0000 |
parents | 38504ec4c89b |
children |
rev | line source |
---|---|
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- Copyright (C) 2012-2013 Kim Alvefur |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local um = require "core.usermanager"; |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local sm = require "core.storagemanager"; |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local dm_load = require "util.datamanager".load; |
1496
cccb151a4cc5
mod_list_inactive: Delay joining JIDs until they are used
Kim Alvefur <zash@zash.se>
parents:
1267
diff
changeset
|
6 local jid_join = require"util.jid".join; |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local multipliers = { |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 d = 86400, -- day |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 w = 604800, -- week |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 m = 2629746, -- month |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 y = 31556952, -- year |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 } |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
1497
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
15 local output_formats = { |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
16 default = "%s", |
3891
38504ec4c89b
mod_list_inactive: report last action timestamp
Georg Lukas <georg@op-co.de>
parents:
1766
diff
changeset
|
17 event = "%s %s %s", |
38504ec4c89b
mod_list_inactive: report last action timestamp
Georg Lukas <georg@op-co.de>
parents:
1766
diff
changeset
|
18 delete = "user:delete%q -- %s -- %s" |
1497
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
19 } |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
20 |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 function module.command(arg) |
1766
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
22 if #arg < 2 then |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
23 print("usage: prosodyctl mod_list_inactive example.net time [format]"); |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
24 print("time is a number followed by 'day', 'week', 'month' or 'year'"); |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
25 print("formats are:"); |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
26 for name, fmt in pairs(output_formats) do |
3891
38504ec4c89b
mod_list_inactive: report last action timestamp
Georg Lukas <georg@op-co.de>
parents:
1766
diff
changeset
|
27 print(name, fmt:format("user@example.com", "<last action>", "<last action timestamp>")) |
1766
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
28 end |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
29 return; |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
30 end |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 local items = {}; |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 local host = arg[1]; |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 assert(hosts[host], "Host "..tostring(host).." does not exist"); |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 sm.initialize_host(host); |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 um.initialize_host(host); |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 local max_age, unit = assert(arg[2], "No time range given"):match("^(%d*)%s*([dwmy]?)"); |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 max_age = os.time() - ( tonumber(max_age) or 1 ) * ( multipliers[unit] or 1 ); |
1497
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
39 |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
40 local output = assert(output_formats[arg[3] or "default"], "No such output format: "..tostring(arg[3] or "default")); |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
41 |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 for user in um.users(host) do |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 local last_active = dm_load(user, host, "lastlog"); |
1497
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
44 local last_action = last_active and last_active.event or "?" |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 last_active = last_active and last_active.timestamp or 0; |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 if last_active < max_age then |
3891
38504ec4c89b
mod_list_inactive: report last action timestamp
Georg Lukas <georg@op-co.de>
parents:
1766
diff
changeset
|
47 print(output:format(jid_join(user, host), last_action, os.date('%Y-%m-%d %H:%M:%S', last_active))); |
1267
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 end |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 end |
589991b148e8
mod_list_inactive: Parse data collected by mod_lastlog and print users who have not logged in for some time
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 |