diff --git a/src/emqttd_cli_config.erl b/src/emqttd_cli_config.erl index aca2a45bb..489182fb8 100644 --- a/src/emqttd_cli_config.erl +++ b/src/emqttd_cli_config.erl @@ -22,15 +22,43 @@ set_usage/0, all_cfgs/0, get_cfg/2, - get_cfg/3]). + get_cfg/3, + read_config/1, + write_config/2]). -define(APP, emqttd). +-define(TAB, emqttd_config). register_config() -> application:start(clique), F = fun() -> ekka_mnesia:running_nodes() end, clique:register_node_finder(F), - register_config_cli(). + register_config_cli(), + create_config_tab(). + +create_config_tab() -> + case ets:info(?TAB, name) of + undefined -> + ets:new(?TAB, [named_table, public]), + {ok, PluginsEtcDir} = emqttd:env(plugins_etc_dir), + Files = filelib:wildcard("*.conf", PluginsEtcDir), + lists:foreach(fun(File) -> + [FileName, _] = string:split(File, "."), + Configs = cuttlefish_conf:file(lists:concat([PluginsEtcDir, File])), + ets:insert(?TAB, {list_to_atom(FileName), Configs}) + end, Files); + _ -> + ok + end. + +read_config(App) -> + case ets:lookup(?TAB, App) of + [] -> []; + [{_, Value}] -> Value + end. + +write_config(App, Terms) -> + ets:insert(?TAB, {App, Terms}). run(Cmd) -> clique:run(Cmd). diff --git a/src/emqttd_config.erl b/src/emqttd_config.erl index cae8ad33c..50561bdee 100644 --- a/src/emqttd_config.erl +++ b/src/emqttd_config.erl @@ -57,6 +57,7 @@ write(App, Terms) -> Schema = cuttlefish_schema:files([Path]), case cuttlefish_generator:map(Schema, Configs) of [{App, Configs1}] -> + emqttd_cli_config:write_config(App, Configs), lists:foreach(fun({Key, Val}) -> application:set_env(App, Key, Val) end, Configs1); _ -> error @@ -87,9 +88,8 @@ get(App, Par, Def) -> read_(App) -> - {ok, PluginsEtcDir} = emqttd:env(plugins_etc_dir), - Configs = cuttlefish_conf:file(lists:concat([PluginsEtcDir, App, ".conf"])), - Path= lists:concat([code:priv_dir(App), "/", App, ".schema"]), + Configs = emqttd_cli_config:read_config(App), + Path = lists:concat([code:priv_dir(App), "/", App, ".schema"]), {_, Mappings, _} = cuttlefish_schema:files([Path]), OptionalCfg = lists:foldl(fun(Map, Acc) -> Key = cuttlefish_mapping:variable(Map),