Software /
code /
prosody-modules
Annotate
mod_list_active/mod_list_active.lua @ 4738:5aee8d86629a
mod_bookmarks2: Fix handling of nick and password elements
This form of child retrieval fails when the stanza elements internally
don't have an 'xmlns' attribute, which can happen sometimes for some
reason, including when they have been constructed via the stanza builder
API. When that is the case then the explicit namespace arguemnt does not
match the nil value of the internal attribute. Calling `:get_child()`
without the namespace argument does the right thing here, with both nil
and the parent namespace as valid values for the internal attribute.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 03 Nov 2021 21:11:55 +0100 |
parent | 2640:c06c59b99b3c |
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 |