comparison mod_list_inactive/mod_list_inactive.lua @ 1497:d1836dfa4ae4

mod_list_inactive: Add different output formats
author Kim Alvefur <zash@zash.se>
date Tue, 26 Aug 2014 16:15:31 +0200
parents cccb151a4cc5
children e4c3d335b07f
comparison
equal deleted inserted replaced
1496:cccb151a4cc5 1497:d1836dfa4ae4
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