comparison mod_list_inactive/mod_list_inactive.lua @ 1496:cccb151a4cc5

mod_list_inactive: Delay joining JIDs until they are used
author Kim Alvefur <zash@zash.se>
date Tue, 26 Aug 2014 16:15:23 +0200
parents 589991b148e8
children d1836dfa4ae4
comparison
equal deleted inserted replaced
1495:9a1b3f0d0939 1496:cccb151a4cc5
1 -- Copyright (C) 2012-2013 Kim Alvefur 1 -- Copyright (C) 2012-2013 Kim Alvefur
2 2
3 local um = require "core.usermanager"; 3 local um = require "core.usermanager";
4 local sm = require "core.storagemanager"; 4 local sm = require "core.storagemanager";
5 local dm_load = require "util.datamanager".load; 5 local dm_load = require "util.datamanager".load;
6 local jid_join = require"util.jid".join;
6 7
7 local multipliers = { 8 local multipliers = {
8 d = 86400, -- day 9 d = 86400, -- day
9 w = 604800, -- week 10 w = 604800, -- week
10 m = 2629746, -- month 11 m = 2629746, -- month
21 local max_age, unit = assert(arg[2], "No time range given"):match("^(%d*)%s*([dwmy]?)"); 22 local max_age, unit = assert(arg[2], "No time range given"):match("^(%d*)%s*([dwmy]?)");
22 max_age = os.time() - ( tonumber(max_age) or 1 ) * ( multipliers[unit] or 1 ); 23 max_age = os.time() - ( tonumber(max_age) or 1 ) * ( multipliers[unit] or 1 );
23 for user in um.users(host) do 24 for user in um.users(host) do
24 local last_active = dm_load(user, host, "lastlog"); 25 local last_active = dm_load(user, host, "lastlog");
25 last_active = last_active and last_active.timestamp or 0; 26 last_active = last_active and last_active.timestamp or 0;
26 local bare = user.."@"..host;
27 if last_active < max_age then 27 if last_active < max_age then
28 print(("user:delete%q"):format(bare)); 28 print(("user:delete%q"):format(jid_join(user, host)));
29 end 29 end
30 end 30 end
31 end 31 end
32 32