diff options
author | Mickaël Rémond <mickael.remond@process-one.net> | 2006-10-25 07:56:49 +0000 |
---|---|---|
committer | Mickaël Rémond <mickael.remond@process-one.net> | 2006-10-25 07:56:49 +0000 |
commit | b2a944a4a2ddb8d46a3d6447d1f2253ce0aaa605 (patch) | |
tree | 1f45fb6297dac8b32e9866b93148455d58013a5b /src | |
parent | * src/ejabberd_socket.erl: Added sockname/1 and peername/1 (diff) |
* src/ejabberd_rdbms.erl: It is now possible to use ldap or
internal authentication with some other modules using relationnal
database storage (EJAB-152). Refactored relational databases
connections initialisation.
* src/ejabberd_auth_odbc.erl: Likewise. odbc supervisor startup is now
delegated to the ejabberd rdbms module.
* src/ejabberd_app.erl: Likewise.
SVN Revision: 664
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_app.erl | 1 | ||||
-rw-r--r-- | src/ejabberd_auth_odbc.erl | 8 | ||||
-rw-r--r-- | src/ejabberd_rdbms.erl | 54 |
3 files changed, 55 insertions, 8 deletions
diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl index c1ea274a2..7c44c8fab 100644 --- a/src/ejabberd_app.erl +++ b/src/ejabberd_app.erl @@ -28,6 +28,7 @@ start(normal, _Args) -> gen_mod:start(), ejabberd_config:start(), Sup = ejabberd_sup:start_link(), + ejabberd_rdbms:start(), ejabberd_auth:start(), cyrsasl:start(), % Profiling diff --git a/src/ejabberd_auth_odbc.erl b/src/ejabberd_auth_odbc.erl index d946bfd48..60fce6d79 100644 --- a/src/ejabberd_auth_odbc.erl +++ b/src/ejabberd_auth_odbc.erl @@ -34,14 +34,6 @@ %%% API %%%---------------------------------------------------------------------- start(Host) -> - ChildSpec = - {gen_mod:get_module_proc(Host, ejabberd_odbc_sup), - {ejabberd_odbc_sup, start_link, [Host]}, - temporary, - infinity, - supervisor, - [ejabberd_odbc_sup]}, - supervisor:start_child(ejabberd_sup, ChildSpec), ejabberd_ctl:register_commands( Host, [{"registered-users", "list all registered users"}], diff --git a/src/ejabberd_rdbms.erl b/src/ejabberd_rdbms.erl new file mode 100644 index 000000000..66515af4f --- /dev/null +++ b/src/ejabberd_rdbms.erl @@ -0,0 +1,54 @@ +%%%---------------------------------------------------------------------- +%%% File : ejabberd_rdbms.erl +%%% Author : Mickael Remond <mickael.remond@process-one.net> +%%% Purpose : Manage the start of the database modules when needed +%%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@sevcom.net> +%%% Id : $Id: $ +%%%---------------------------------------------------------------------- + +-module(ejabberd_rdbms). +-author('alexey@sevcom.net'). +-svn('$Revision: $ '). + +-export([start/0]). +-include("ejabberd.hrl"). + +start() -> + %% Check if ejabberd has been compiled with ODBC + case catch ejabberd_odbc_sup:module_info() of + {'EXIT',{undef,_}} -> + ?INFO_MSG("ejabberd has not been compiled with relational database support. Skipping database startup.", []); + _ -> + %% If compiled with ODBC, start ODBC on the needed host + start_hosts() + end. + +%% Start relationnal DB module on the nodes where it is needed +start_hosts() -> + lists:foreach( + fun(Host) -> + case needs_odbc(Host) of + true -> start_odbc(Host); + false -> ok + end + end, ?MYHOSTS). + +%% Start the ODBC module on the given host +start_odbc(Host) -> + ChildSpec = + {gen_mod:get_module_proc(Host, ejabberd_odbc_sup), + {ejabberd_odbc_sup, start_link, [Host]}, + temporary, + infinity, + supervisor, + [ejabberd_odbc_sup]}, + supervisor:start_child(ejabberd_sup, ChildSpec). + +%% Returns true if we have configured odbc_server for the given host +needs_odbc(Host) -> + LHost = jlib:nameprep(Host), + case ejabberd_config:get_local_option({odbc_server, LHost}) of + undefined -> + false; + _ -> true + end. |