10 w = 604800, -- week |
10 w = 604800, -- week |
11 m = 2629746, -- month |
11 m = 2629746, -- month |
12 y = 31556952, -- year |
12 y = 31556952, -- year |
13 } |
13 } |
14 |
14 |
|
15 local output_formats = { |
|
16 default = "%s", |
|
17 event = "%s %s", |
|
18 delete = "user:delete%q -- %s" |
|
19 } |
|
20 |
15 function module.command(arg) |
21 function module.command(arg) |
16 local items = {}; |
22 local items = {}; |
17 local host = arg[1]; |
23 local host = arg[1]; |
18 assert(hosts[host], "Host "..tostring(host).." does not exist"); |
24 assert(hosts[host], "Host "..tostring(host).." does not exist"); |
19 sm.initialize_host(host); |
25 sm.initialize_host(host); |
20 um.initialize_host(host); |
26 um.initialize_host(host); |
21 |
27 |
22 local max_age, unit = assert(arg[2], "No time range given"):match("^(%d*)%s*([dwmy]?)"); |
28 local max_age, unit = assert(arg[2], "No time range given"):match("^(%d*)%s*([dwmy]?)"); |
23 max_age = os.time() - ( tonumber(max_age) or 1 ) * ( multipliers[unit] or 1 ); |
29 max_age = os.time() - ( tonumber(max_age) or 1 ) * ( multipliers[unit] or 1 ); |
|
30 |
|
31 local output = assert(output_formats[arg[3] or "default"], "No such output format: "..tostring(arg[3] or "default")); |
|
32 |
24 for user in um.users(host) do |
33 for user in um.users(host) do |
25 local last_active = dm_load(user, host, "lastlog"); |
34 local last_active = dm_load(user, host, "lastlog"); |
|
35 local last_action = last_active and last_active.event or "?" |
26 last_active = last_active and last_active.timestamp or 0; |
36 last_active = last_active and last_active.timestamp or 0; |
27 if last_active < max_age then |
37 if last_active < max_age then |
28 print(("user:delete%q"):format(jid_join(user, host))); |
38 print(output:format(jid_join(user, host), last_action)); |
29 end |
39 end |
30 end |
40 end |
31 end |
41 end |
32 |
42 |