From 67559256764e2820d3d3617209ed643a54e2cb09 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Tue, 24 Aug 2004 20:11:01 +0000 Subject: * src/mod_service_log.erl: Support for logging of user packets via external service (e.g. bandersnatch) * doc/guide.tex: Updated SVN Revision: 261 --- src/mod_service_log.erl | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/mod_service_log.erl (limited to 'src/mod_service_log.erl') 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 +%%% Purpose : Manage announce messages +%%% Created : 24 Aug 2003 by Alexey Shchepin +%%% 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). + -- cgit v1.2.3