aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_app.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_app.erl')
-rw-r--r--src/ejabberd_app.erl18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl
index daf8919a6..46fbf81dc 100644
--- a/src/ejabberd_app.erl
+++ b/src/ejabberd_app.erl
@@ -24,11 +24,14 @@
%%%----------------------------------------------------------------------
-module(ejabberd_app).
+
+-behaviour(ejabberd_config).
-author('alexey@process-one.net').
-behaviour(application).
--export([start_modules/0,start/2, prep_stop/1, stop/1, init/0]).
+-export([start_modules/0, start/2, prep_stop/1, stop/1,
+ init/0, opt_type/1]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -248,3 +251,16 @@ start_apps() ->
ejabberd:start_app(p1_stringprep),
ejabberd:start_app(p1_zlib),
ejabberd:start_app(p1_cache_tab).
+
+opt_type(cluster_nodes) ->
+ fun (Ns) -> true = lists:all(fun is_atom/1, Ns), Ns end;
+opt_type(loglevel) ->
+ fun (P) when P >= 0, P =< 5 -> P end;
+opt_type(modules) ->
+ fun (Mods) ->
+ lists:map(fun ({M, A}) when is_atom(M), is_list(A) ->
+ {M, A}
+ end,
+ Mods)
+ end;
+opt_type(_) -> [cluster_nodes, loglevel, modules].