aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog6
-rw-r--r--doc/guide.html44
-rw-r--r--doc/guide.tex25
-rw-r--r--src/mod_service_log.erl59
4 files changed, 124 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 8adc98569..b12d4bed5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-08-24 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/mod_service_log.erl: Support for logging of user packets via
+ external service (e.g. bandersnatch)
+ * doc/guide.tex: Updated
+
2004-08-23 Alexey Shchepin <alexey@sevcom.net>
* src/mod_offline.erl: Added entire table locking on large message
diff --git a/doc/guide.html b/doc/guide.html
index 9090e5b9b..ad110bb15 100644
--- a/doc/guide.html
+++ b/doc/guide.html
@@ -98,12 +98,13 @@
<LI><A HREF="#htoc42">A.12&nbsp;&nbsp;<TT>mod_pubsub</TT></A>
<LI><A HREF="#htoc43">A.13&nbsp;&nbsp;<TT>mod_register</TT></A>
<LI><A HREF="#htoc44">A.14&nbsp;&nbsp;<TT>mod_roster</TT></A>
-<LI><A HREF="#htoc45">A.15&nbsp;&nbsp;<TT>mod_stats</TT></A>
-<LI><A HREF="#htoc46">A.16&nbsp;&nbsp;<TT>mod_time</TT></A>
-<LI><A HREF="#htoc47">A.17&nbsp;&nbsp;<TT>mod_vcard</TT></A>
-<LI><A HREF="#htoc48">A.18&nbsp;&nbsp;<TT>mod_version</TT></A>
+<LI><A HREF="#htoc45">A.15&nbsp;&nbsp;<TT>mod_service_log</TT></A>
+<LI><A HREF="#htoc46">A.16&nbsp;&nbsp;<TT>mod_stats</TT></A>
+<LI><A HREF="#htoc47">A.17&nbsp;&nbsp;<TT>mod_time</TT></A>
+<LI><A HREF="#htoc48">A.18&nbsp;&nbsp;<TT>mod_vcard</TT></A>
+<LI><A HREF="#htoc49">A.19&nbsp;&nbsp;<TT>mod_version</TT></A>
</UL>
-<LI><A HREF="#htoc49">B&nbsp;&nbsp;I18n/L10n</A>
+<LI><A HREF="#htoc50">B&nbsp;&nbsp;I18n/L10n</A>
</UL>
<!--TOC section Introduction-->
@@ -1083,9 +1084,32 @@ Options:
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:roster</TT> IQ queries processing
discipline (see&nbsp;<A HREF="#sec:modiqdiscoption">A.1.1</A>).
</DL>
+<!--TOC subsection <TT>mod_service_log</TT>-->
+
+<H3><A NAME="htoc45">A.15</A>&nbsp;&nbsp;<TT>mod_service_log</TT></H3><!--SEC END -->
+
+<A NAME="sec:modservicelog"></A>
+This module adds support for logging of user packets via any jabber service.
+These packets encapsulated in &lt;route/&gt; element and sended to specified
+services.<BR>
+<BR>
+Options:
+<DL COMPACT=compact><DT>
+ <B><TT>loggers</TT></B><DD> Specifies a list of services which will receive users
+ packets.
+</DL>
+Example:
+<PRE>
+ {modules,
+ [
+ ...
+ {mod_service_log, [{loggers, ["bandersnatch.example.com"]}]},
+ ...
+ ]}.
+</PRE>
<!--TOC subsection <TT>mod_stats</TT>-->
-<H3><A NAME="htoc45">A.15</A>&nbsp;&nbsp;<TT>mod_stats</TT></H3><!--SEC END -->
+<H3><A NAME="htoc46">A.16</A>&nbsp;&nbsp;<TT>mod_stats</TT></H3><!--SEC END -->
<A NAME="sec:modstats"></A>
This module adds support for <A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics Gathering).<BR>
@@ -1099,7 +1123,7 @@ TBD about access.<BR>
<BR>
<!--TOC subsection <TT>mod_time</TT>-->
-<H3><A NAME="htoc46">A.16</A>&nbsp;&nbsp;<TT>mod_time</TT></H3><!--SEC END -->
+<H3><A NAME="htoc47">A.17</A>&nbsp;&nbsp;<TT>mod_time</TT></H3><!--SEC END -->
<A NAME="sec:modtime"></A>
This module answers UTC time on <TT>jabber:iq:time</TT> queries.<BR>
@@ -1111,7 +1135,7 @@ discipline (see&nbsp;<A HREF="#sec:modiqdiscoption">A.1.1</A>).
</DL>
<!--TOC subsection <TT>mod_vcard</TT>-->
-<H3><A NAME="htoc47">A.17</A>&nbsp;&nbsp;<TT>mod_vcard</TT></H3><!--SEC END -->
+<H3><A NAME="htoc48">A.18</A>&nbsp;&nbsp;<TT>mod_vcard</TT></H3><!--SEC END -->
<A NAME="sec:modvcard"></A>
This module implements simple Jabber User Directory (based on user vCards)
@@ -1139,7 +1163,7 @@ Example:
</PRE>
<!--TOC subsection <TT>mod_version</TT>-->
-<H3><A NAME="htoc48">A.18</A>&nbsp;&nbsp;<TT>mod_version</TT></H3><!--SEC END -->
+<H3><A NAME="htoc49">A.19</A>&nbsp;&nbsp;<TT>mod_version</TT></H3><!--SEC END -->
<A NAME="sec:modversion"></A>
This module answers <TT>ejabberd</TT> version on <TT>jabber:iq:version</TT> queries.<BR>
@@ -1151,7 +1175,7 @@ discipline (see&nbsp;<A HREF="#sec:modiqdiscoption">A.1.1</A>).
</DL>
<!--TOC section I18n/L10n-->
-<H2><A NAME="htoc49">B</A>&nbsp;&nbsp;I18n/L10n</H2><!--SEC END -->
+<H2><A NAME="htoc50">B</A>&nbsp;&nbsp;I18n/L10n</H2><!--SEC END -->
<A NAME="sec:i18nl10n"></A>
All built-in modules support <TT>xml:lang</TT> attribute inside IQ queries.
diff --git a/doc/guide.tex b/doc/guide.tex
index 573fdfd6d..0558de949 100644
--- a/doc/guide.tex
+++ b/doc/guide.tex
@@ -47,6 +47,7 @@
\newcommand{\modpubsub}{\module{mod\_pubsub}}
\newcommand{\modregister}{\module{mod\_register}}
\newcommand{\modroster}{\module{mod\_roster}}
+\newcommand{\modservicelog}{\module{mod\_service\_log}}
\newcommand{\modstats}{\module{mod\_stats}}
\newcommand{\modtime}{\module{mod\_time}}
\newcommand{\modvcard}{\module{mod\_vcard}}
@@ -1068,6 +1069,30 @@ Options:
\end{description}
+\subsection{\modservicelog{}}
+\label{sec:modservicelog}
+
+This module adds support for logging of user packets via any jabber service.
+These packets encapsulated in <route/> element and sended to specified
+services.
+
+Options:
+\begin{description}
+ \titem{loggers} Specifies a list of services which will receive users
+ packets.
+\end{description}
+
+Example:
+\begin{verbatim}
+ {modules,
+ [
+ ...
+ {mod_service_log, [{loggers, ["bandersnatch.example.com"]}]},
+ ...
+ ]}.
+\end{verbatim}
+
+
\subsection{\modstats{}}
\label{sec:modstats}
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).
+