diff options
author | Alexey Shchepin <alexey@process-one.net> | 2007-07-31 04:13:29 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2007-07-31 04:13:29 +0000 |
commit | 27a826cfe84b7c0e1afe1a86d6d3f3a66151bf9c (patch) | |
tree | 34865bb7810906ad960c8632930f7bc9aa54c0c7 | |
parent | * src/xml.erl: Better escaping management with CDATA. We only add CDATA enclo... (diff) |
* src/ejabberd_config.erl: Added possibility for appending values
to config options (thanks to Badlop)
* doc/guide.tex: Updated
SVN Revision: 845
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | doc/guide.tex | 19 | ||||
-rw-r--r-- | src/ejabberd_config.erl | 24 |
3 files changed, 45 insertions, 4 deletions
@@ -1,3 +1,9 @@ +2007-07-31 Alexey Shchepin <alexey@sevcom.net> + + * src/ejabberd_config.erl: Added possibility for appending values + to config options (thanks to Badlop) + * doc/guide.tex: Updated + 2007-07-30 Mickael Remond <mickael.remond@process-one.net> * src/xml.erl: Better escaping management with CDATA. We only add diff --git a/doc/guide.tex b/doc/guide.tex index b5175f93c..dc42f6bc8 100644 --- a/doc/guide.tex +++ b/doc/guide.tex @@ -740,6 +740,25 @@ Examples: \end{verbatim} \end{itemize} +If you want to define more \term{registration\_watchers} or \term{modules} for a virtual host and add them to the defined for all the Jabber server, instead of defining the option name simply as \term{modules} use this: \term{\{add, modules\}}. + +Examples: +\begin{itemize} + \item If you defined two global watchers but on a certain virtual host only Ann should be watcher: +\begin{verbatim} +{registration_watchers, ["tom@example.com", "moe@example.net"]}. + +{host_config, "example.org", [{registration_watchers, ["ann@example.net"]}]}. +\end{verbatim} + +\item If you prefer all three to be registration watchers on that virtual host: +\begin{verbatim} +{registration_watchers, ["tom@example.com", "moe@example.net"]}. + +{host_config, "example.org", [{{add, registration_watchers}, ["ann@example.net"]}]}. +\end{verbatim} +\end{itemize} + \subsubsection{SASL Anonymous and Anonymous Login} \label{saslanonymous} \ind{sasl anonymous}\ind{anonymous login} diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index a44c9378f..a06d4e2bc 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -3,12 +3,10 @@ %%% Author : Alexey Shchepin <alexey@sevcom.net> %%% Purpose : Load config file %%% Created : 14 Dec 2002 by Alexey Shchepin <alexey@sevcom.net> -%%% Id : $Id$ %%%---------------------------------------------------------------------- -module(ejabberd_config). -author('alexey@sevcom.net'). --vsn('$Revision$ '). -export([start/0, load_file/1, add_global_option/2, add_local_option/2, @@ -188,8 +186,26 @@ add_option(Opt, Val, State) -> State#state{opts = [#config{key = Opt, value = Val} | State#state.opts]}; local_config -> - State#state{opts = [#local_config{key = Opt, value = Val} | - State#state.opts]} + case Opt of + {{add, OptName}, Host} -> + State#state{opts = compact({OptName, Host}, Val, + State#state.opts, [])}; + _ -> + State#state{opts = [#local_config{key = Opt, value = Val} | + State#state.opts]} + end + end. + +compact(Opt, Val, [], Os) -> + [#local_config{key = Opt, value = Val}] ++ Os; +compact(Opt, Val, [O | Os1], Os2) -> + case O#local_config.key of + Opt -> + Os2 ++ [#local_config{key = Opt, + value = Val++O#local_config.value} + ] ++ Os1; + _ -> + compact(Opt, Val, Os1, Os2++[O]) end. |