Mercurial > prosody-modules
annotate mod_list_active/mod_list_active.lua @ 4976:75b6e5df65f9
various: Improve error reporting if missing file server module on 0.12
If there is some error loading net.http.files then it would be swallowed
by the pcall and then it would proceed to trying mod_http_files, which
might cause unexpected behavior on 0.12
Ref #1765
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 18 Jul 2022 22:47:54 +0200 |
parents | c06c59b99b3c |
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"; |
2637
39c39844cd4c
mod_list_active: Inverse of mod_list_inactive (closes #705)
Kim Alvefur <zash@zash.se>
parents:
1766
diff
changeset
|
5 local dm = require "util.datamanager"; |
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", |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
17 event = "%s %s", |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
18 } |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
19 |
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
|
20 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
|
21 if #arg < 2 then |
2637
39c39844cd4c
mod_list_active: Inverse of mod_list_inactive (closes #705)
Kim Alvefur <zash@zash.se>
parents:
1766
diff
changeset
|
22 print("usage: prosodyctl mod_list_active example.net time [format]"); |
1766
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("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
|
24 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
|
25 for name, fmt in pairs(output_formats) do |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
26 print(name, fmt:format("user@example.com", "last action")) |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
27 end |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
28 return; |
e4c3d335b07f
mod_list_inactive: Print some usage info when not called with enough arguments
Kim Alvefur <zash@zash.se>
parents:
1497
diff
changeset
|
29 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
|
30 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
|
31 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
|
32 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
|
33 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
|
34 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
|
35 |
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 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
|
37 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
|
38 |
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
39 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
|
40 |
2637
39c39844cd4c
mod_list_active: Inverse of mod_list_inactive (closes #705)
Kim Alvefur <zash@zash.se>
parents:
1766
diff
changeset
|
41 for user in dm.users(host, "lastlog") do |
39c39844cd4c
mod_list_active: Inverse of mod_list_inactive (closes #705)
Kim Alvefur <zash@zash.se>
parents:
1766
diff
changeset
|
42 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
|
43 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
|
44 last_active = last_active and last_active.timestamp or 0; |
2640
c06c59b99b3c
mod_list_active: Actually invert condition (thanks Dan)
Kim Alvefur <zash@zash.se>
parents:
2637
diff
changeset
|
45 if last_active > max_age then |
1497
d1836dfa4ae4
mod_list_inactive: Add different output formats
Kim Alvefur <zash@zash.se>
parents:
1496
diff
changeset
|
46 print(output:format(jid_join(user, host), last_action)); |
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
|
47 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
|
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 |