mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-28 16:34:13 +01:00
Add get_last to ejabberdctl for last user activity (thanks to lehrblogger)
The logic for determining the response is borrowed from here:
6d811f5178/src/web/ejabberd_web_admin.erl (L1583-L1601)
This commit is contained in:
parent
f0cf90c11e
commit
e6a9c5ccee
@ -69,6 +69,7 @@
|
|||||||
push_roster_all/1,
|
push_roster_all/1,
|
||||||
push_alltoall/2,
|
push_alltoall/2,
|
||||||
%% mod_last
|
%% mod_last
|
||||||
|
get_last/2,
|
||||||
set_last/4,
|
set_last/4,
|
||||||
%% mod_private
|
%% mod_private
|
||||||
private_get/4,
|
private_get/4,
|
||||||
@ -436,6 +437,13 @@ commands() ->
|
|||||||
args = [{host, string}, {group, string}],
|
args = [{host, string}, {group, string}],
|
||||||
result = {res, rescode}},
|
result = {res, rescode}},
|
||||||
|
|
||||||
|
#ejabberd_commands{name = get_last, tags = [last],
|
||||||
|
desc = "Get last activity information",
|
||||||
|
longdesc = "Timestamp is the seconds since"
|
||||||
|
"1970-01-01 00:00:00 UTC, for example: date +%s",
|
||||||
|
module = ?MODULE, function = get_last,
|
||||||
|
args = [{user, string}, {host, string}],
|
||||||
|
result = {last_activity, string}},
|
||||||
#ejabberd_commands{name = set_last, tags = [last],
|
#ejabberd_commands{name = set_last, tags = [last],
|
||||||
desc = "Set last activity information",
|
desc = "Set last activity information",
|
||||||
longdesc = "Timestamp is the seconds since"
|
longdesc = "Timestamp is the seconds since"
|
||||||
@ -1233,6 +1241,28 @@ build_broadcast(U, S, SubsAtom) when is_atom(SubsAtom) ->
|
|||||||
%%% Last Activity
|
%%% Last Activity
|
||||||
%%%
|
%%%
|
||||||
|
|
||||||
|
get_last(User, Server) ->
|
||||||
|
Mod = get_lastactivity_module(Server),
|
||||||
|
case ejabberd_sm:get_user_resources(User, Server) of
|
||||||
|
[] ->
|
||||||
|
case Mod:get_last_info(User, Server) of
|
||||||
|
not_found ->
|
||||||
|
"Never";
|
||||||
|
{ok, Shift, _Status} ->
|
||||||
|
TimeStamp = {Shift div 1000000,
|
||||||
|
Shift rem 1000000,
|
||||||
|
0},
|
||||||
|
{{Year, Month, Day}, {Hour, Minute, Second}} =
|
||||||
|
calendar:now_to_local_time(TimeStamp),
|
||||||
|
lists:flatten(
|
||||||
|
io_lib:format(
|
||||||
|
"~w-~.2.0w-~.2.0w ~.2.0w:~.2.0w:~.2.0w",
|
||||||
|
[Year, Month, Day, Hour, Minute, Second]))
|
||||||
|
end;
|
||||||
|
_ ->
|
||||||
|
"Online"
|
||||||
|
end.
|
||||||
|
|
||||||
set_last(User, Server, Timestamp, Status) ->
|
set_last(User, Server, Timestamp, Status) ->
|
||||||
Mod = get_lastactivity_module(Server),
|
Mod = get_lastactivity_module(Server),
|
||||||
Mod:store_last_info(User, Server, Timestamp, Status).
|
Mod:store_last_info(User, Server, Timestamp, Status).
|
||||||
|
Loading…
Reference in New Issue
Block a user