mod_list_inactive/mod_list_inactive.lua
changeset 1497 d1836dfa4ae4
parent 1496 cccb151a4cc5
child 1770 e4c3d335b07f
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