diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-08-24 20:11:01 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-08-24 20:11:01 +0000 |
commit | 67559256764e2820d3d3617209ed643a54e2cb09 (patch) | |
tree | 902a656f47aaa331c008c0094134a7b84cf842c0 /src/mod_service_log.erl | |
parent | * src/mod_offline.erl: Use offline_subscription_hook (diff) |
* src/mod_service_log.erl: Support for logging of user packets via
external service (e.g. bandersnatch)
* doc/guide.tex: Updated
SVN Revision: 261
Diffstat (limited to 'src/mod_service_log.erl')
-rw-r--r-- | src/mod_service_log.erl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/mod_service_log.erl b/src/mod_service_log.erl new file mode 100644 index 000000000..0203579b1 --- /dev/null +++ b/src/mod_service_log.erl @@ -0,0 +1,59 @@ +%%%---------------------------------------------------------------------- +%%% File : mod_service_log.erl +%%% Author : Alexey Shchepin <alexey@sevcom.net> +%%% Purpose : Manage announce messages +%%% Created : 24 Aug 2003 by Alexey Shchepin <alexey@sevcom.net> +%%% Id : $Id$ +%%%---------------------------------------------------------------------- + +-module(mod_service_log). +-author('alexey@sevcom.net'). + +-behaviour(gen_mod). + +-export([start/1, + stop/0, + log_user_send/3, + log_user_receive/4]). + +-include("ejabberd.hrl"). +-include("jlib.hrl"). + +start(_) -> + ejabberd_hooks:add(user_send_packet, + ?MODULE, log_user_send, 50), + ejabberd_hooks:add(user_receive_packet, + ?MODULE, log_user_receive, 50), + ok. + +stop() -> + ejabberd_hooks:delete(user_send_packet, + ?MODULE, log_user_send, 50), + ejabberd_hooks:delete(user_receive_packet, + ?MODULE, log_user_receive, 50), + ok. + +log_user_send(From, To, Packet) -> + log_packet(From, To, Packet). + +log_user_receive(_JID, From, To, Packet) -> + log_packet(From, To, Packet). + + +log_packet(From, To, {xmlelement, Name, Attrs, Els}) -> + Loggers = gen_mod:get_module_opt(?MODULE, loggers, []), + ServerJID = #jid{user = "", server = ?MYNAME, resource = "", + luser = "", lserver = ?MYNAME, lresource = ""}, + NewAttrs = jlib:replace_from_to_attrs(jlib:jid_to_string(From), + jlib:jid_to_string(To), + Attrs), + FixedPacket = {xmlelement, Name, NewAttrs, Els}, + lists:foreach( + fun(Logger) -> + ejabberd_router:route( + ServerJID, + #jid{user = "", server = Logger, resource = "", + luser = "", lserver = Logger, lresource = ""}, + {xmlelement, "route", [], [FixedPacket]}) + end, Loggers). + |