diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index 4b7c15806..83e8df641 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -978,7 +978,19 @@ default_db(Opt, Host, Module) -> get_modules() -> {ok, Mods} = application:get_key(ejabberd, modules), ExtMods = [Name || {Name, _Details} <- ext_mod:installed()], - ExtMods ++ Mods. + case application:get_env(ejabberd, external_beams) of + {ok, Path} -> + case lists:member(Path, code:get_path()) of + true -> ok; + false -> code:add_patha(Path) + end, + Beams = filelib:wildcard(filename:join(Path, "*\.beam")), + CustMods = [list_to_atom(filename:rootname(filename:basename(Beam))) + || Beam <- Beams], + CustMods ++ ExtMods ++ Mods; + _ -> + ExtMods ++ Mods + end. get_modules_with_options(Modules) -> lists:foldl(