diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index 9d081631f..8b6e27b82 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -31,6 +31,7 @@ status/0, reopen_log/0, stop_kindly/2, send_service_message_all_mucs/2, registered_vhosts/0, + reload_config/0, %% Erlang update_list/0, update/1, %% Accounts @@ -134,6 +135,11 @@ commands() -> module = ?MODULE, function = registered_vhosts, args = [], result = {vhosts, {list, {vhost, string}}}}, + #ejabberd_commands{name = reload_config, tags = [server], + desc = "Reload ejabberd configuration file into memory", + module = ?MODULE, function = reload_config, + args = [], + result = {res, rescode}}, #ejabberd_commands{name = import_file, tags = [mnesia], desc = "Import user data from jabberd14 spool file", @@ -352,6 +358,11 @@ registered_users(Host) -> registered_vhosts() -> ?MYHOSTS. +reload_config() -> + ejabberd_config:reload_file(), + acl:start(), + shaper:start(). + %%% %%% Migration management %%% diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index 666ed035b..0d25224b9 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -26,7 +26,7 @@ -module(ejabberd_config). -author('alexey@process-one.net'). --export([start/0, load_file/1, read_file/1, +-export([start/0, load_file/1, reload_file/0, read_file/1, add_global_option/2, add_local_option/2, get_global_option/2, get_local_option/2, get_global_option/3, get_local_option/3, @@ -125,6 +125,12 @@ load_file(File) -> State = read_file(File), set_opts(State). +-spec reload_file() -> ok. + +reload_file() -> + Config = get_ejabberd_config_path(), + load_file(Config). + -spec convert_to_yaml(file:filename()) -> ok | {error, any()}. convert_to_yaml(File) ->