소스 검색

support .config suffix

Feng Lee 9 년 전
부모
커밋
12d362a674
2개의 변경된 파일24개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 0
      src/emqttd_app.erl
  2. 23 2
      src/emqttd_plugins.erl

+ 1 - 0
src/emqttd_app.erl

@@ -47,6 +47,7 @@ start(_StartType, _StartArgs) ->
     start_servers(Sup),
     emqttd_cli:load(),
     load_all_mods(),
+    emqttd_plugins:init(),
     emqttd_plugins:load(),
     start_listeners(),
     register(emqttd, self()),

+ 23 - 2
src/emqttd_plugins.erl

@@ -18,12 +18,32 @@
 
 -include("emqttd.hrl").
 
+-export([init/0]).
+
 -export([load/0, unload/0]).
 
 -export([load/1, unload/1]).
 
 -export([list/0]).
 
+%% @doc Init plugins' config
+-spec(init() -> ok).
+init() ->
+    case emqttd:env(plugins_etc_dir) of
+        {ok, PluginsEtc} ->
+            CfgFiles = [filename:join(PluginsEtc, File) ||
+                          File <- filelib:wildcard("*.config", PluginsEtc)],
+            lists:foreach(fun init_config/1, CfgFiles);
+        undefined ->
+            ok
+    end.
+
+init_config(CfgFile) ->
+    {ok, [AppsEnv]} = file:consult(CfgFile),
+    lists:foreach(fun({AppName, Envs}) ->
+                      [application:set_env(AppName, Par, Val) || {Par, Val} <- Envs]
+                  end, AppsEnv).
+
 %% @doc Load all plugins when the broker started.
 -spec(load() -> list() | {error, any()}).
 load() ->
@@ -75,8 +95,8 @@ stop_plugins(Names) ->
 -spec(list() -> [mqtt_plugin()]).
 list() ->
     case emqttd:env(plugins_etc_dir) of
-        {ok, PluginsEtc} -> 
-            CfgFiles = filelib:wildcard("*.conf", PluginsEtc),
+        {ok, PluginsEtc} ->
+            CfgFiles = filelib:wildcard("*.{conf,config}", PluginsEtc),
             Plugins = [plugin(CfgFile) || CfgFile <- CfgFiles],
             StartedApps = names(started_app),
             lists:map(fun(Plugin = #mqtt_plugin{name = Name}) ->
@@ -247,3 +267,4 @@ write_loaded(AppNames) ->
             lager:error("Open File ~p Error: ~p", [File, Error]),
             {error, Error}
     end.
+