aboutsummaryrefslogtreecommitdiff
path: root/src/mod_service_log.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-08-24 20:11:01 +0000
committerAlexey Shchepin <alexey@process-one.net>2004-08-24 20:11:01 +0000
commit67559256764e2820d3d3617209ed643a54e2cb09 (patch)
tree902a656f47aaa331c008c0094134a7b84cf842c0 /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.erl59
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).
+