diff --git a/.gitmodules b/.gitmodules index 093a4a897..4015d5e02 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "plugins/emqttd_dashboard"] path = plugins/emqttd_dashboard url = https://github.com/emqtt/emqttd_dashboard.git +[submodule "plugins/emysql"] + path = plugins/emysql + url = https://github.com/erylee/emysql.git +[submodule "plugins/emqttd_plugin_mysql"] + path = plugins/emqttd_plugin_mysql + url = https://github.com/emqtt/emqttd_plugin_mysql.git diff --git a/Makefile b/Makefile index 2d8b5b01a..b319d3928 100644 --- a/Makefile +++ b/Makefile @@ -29,11 +29,14 @@ edoc: @$(REBAR) doc rel: compile - @cd rel && ../rebar generate -f + @cd rel && $(REBAR) generate -f plugins: @for plugin in ./plugins/* ; do \ + if [ -d $${plugin} ]; then \ + echo "copy $${plugin}"; \ cp -R $${plugin} $(DIST)/plugins/ && rm -rf $(DIST)/$${plugin}/src/ ; \ + fi \ done dist: rel plugins diff --git a/PLUGIN.md b/PLUGIN.md new file mode 100644 index 000000000..7991de2cd --- /dev/null +++ b/PLUGIN.md @@ -0,0 +1,4 @@ + +Please see [Plugin Design](https://github.com/emqtt/emqttd/wiki/Plugin%20Design). + + diff --git a/plugins/emqttd_dashboard b/plugins/emqttd_dashboard new file mode 160000 index 000000000..2d3c9aeab --- /dev/null +++ b/plugins/emqttd_dashboard @@ -0,0 +1 @@ +Subproject commit 2d3c9aeabeb5289b9ae27c503f017ad71bd81174 diff --git a/plugins/emqttd_plugin_mysql b/plugins/emqttd_plugin_mysql new file mode 160000 index 000000000..892810dbc --- /dev/null +++ b/plugins/emqttd_plugin_mysql @@ -0,0 +1 @@ +Subproject commit 892810dbc853ba147f9acabecd52bb51218275e2 diff --git a/plugins/emysql b/plugins/emysql new file mode 160000 index 000000000..38927104b --- /dev/null +++ b/plugins/emysql @@ -0,0 +1 @@ +Subproject commit 38927104b44b3f8d237bcf3a2b50f2e0608291b3 diff --git a/rel/files/emqttd b/rel/files/emqttd index 83b0368d0..8574571c1 100755 --- a/rel/files/emqttd +++ b/rel/files/emqttd @@ -141,13 +141,6 @@ case "$1" in echo $RES exit 1 fi - # Sanity check the plugins.config file - RES=`$NODETOOL_LITE chkconfig $RUNNER_ETC_DIR/plugins.config` - if [ $? != 0 ]; then - echo "Error reading $RUNNER_ETC_DIR/plugins.config" - echo $RES - exit 1 - fi HEART_COMMAND="$RUNNER_SCRIPT_DIR/$SCRIPT start" export HEART_COMMAND mkdir -p $PIPE_DIR @@ -265,13 +258,6 @@ case "$1" in echo $RES exit 1 fi - # Sanity check the plugins.config file - RES=`$NODETOOL_LITE chkconfig $RUNNER_ETC_DIR/plugins.config` - if [ $? != 0 ]; then - echo "Error reading $RUNNER_ETC_DIR/plugins.config" - echo $RES - exit 1 - fi # Setup beam-required vars ROOTDIR=$RUNNER_BASE_DIR ERL_LIBS=$ROOTDIR/plugins @@ -279,7 +265,7 @@ case "$1" in EMU=beam PROGNAME=`echo $0 | sed 's/.*\///'` CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$SCRIPT \ - -embedded -config $RUNNER_ETC_DIR/emqttd.config -config $RUNNER_ETC_DIR/plugins.config \ + -embedded -config $RUNNER_ETC_DIR/emqttd.config \ -pa $RUNNER_LIB_DIR/basho-patches \ -args_file $RUNNER_ETC_DIR/vm.args -- ${1+"$@"}" export EMU @@ -305,13 +291,6 @@ case "$1" in echo $RES exit 1 fi - # Sanity check the plugins.config file - RES=`$NODETOOL_LITE chkconfig $RUNNER_ETC_DIR/plugins.config` - if [ $? != 0 ]; then - echo "Error reading $RUNNER_ETC_DIR/plugins.config" - echo $RES - exit 1 - fi echo "config is OK" ;; escript) diff --git a/rel/files/emqttd.config b/rel/files/emqttd.config index 7ff3e49ba..f49718ff6 100644 --- a/rel/files/emqttd.config +++ b/rel/files/emqttd.config @@ -165,7 +165,7 @@ %% Plugins {plugins, [ {dir, "./plugins"}, - {loaded_file, "./data/loaded_plugins"} + {loaded_file, "./data/plugins.config"} ]}, %% Listeners {listeners, [ diff --git a/rel/files/plugins.config b/rel/files/plugins.config index 0a5655c66..68ba6a41d 100644 --- a/rel/files/plugins.config +++ b/rel/files/plugins.config @@ -1,26 +1 @@ -[ -% {emysql, [ -% {pool_size, 4}, -% {host, "localhost"}, -% {port, 3306}, -% {username, "root"}, -% {password, "public"}, -% {database, "mqtt"}, -% {encoding, utf8} -% ]}, -% {emqttd_auth_mysql, [ -% {user_table, mqtt_users}, -% {password_hash, plain}, -% {field_mapper, [ -% {username, username}, -% {password, password} -% ]} -% ]}, -% {emqttd_dashboard, [ -% {listener, -% {emqttd_dashboard, 18083, [ -% {acceptors, 4}, -% {max_clients, 512}]}} -% ]} -% -]. +emqttd_dashboard. diff --git a/rel/reltool.config b/rel/reltool.config index 768b793f0..19c11600a 100644 --- a/rel/reltool.config +++ b/rel/reltool.config @@ -87,7 +87,6 @@ {template, "files/acl.config", "etc/acl.config"}, {template, "files/rewrite.config", "etc/rewrite.config"}, {template, "files/clients.config", "etc/clients.config"}, - {template, "files/plugins.config", "etc/plugins.config"}, {template, "files/vm.args", "etc/vm.args"}, - {copy, "files/loaded_plugins", "data/loaded_plugins"} + {copy, "files/plugins.config", "data/plugins.config"} ]}. diff --git a/src/emqttd_plugins.erl b/src/emqttd_plugins.erl index 4372ca3c7..f8bcc7696 100644 --- a/src/emqttd_plugins.erl +++ b/src/emqttd_plugins.erl @@ -213,8 +213,9 @@ read_loaded() -> write_loaded(AppNames) -> case file:open(env(loaded_file), [binary, write]) of {ok, Fd} -> - Line = list_to_binary(io_lib:format("~w.~n", [AppNames])), - file:write(Fd, Line); + lists:foreach(fun(Name) -> + file:write(Fd, iolist_to_binary(io_lib:format("~s.~n", [Name]))) + end, AppNames); {error, Error} -> {error, Error} end. diff --git a/src/emqttd_session_sup.erl b/src/emqttd_session_sup.erl index ff12b5055..1375c9fda 100644 --- a/src/emqttd_session_sup.erl +++ b/src/emqttd_session_sup.erl @@ -57,6 +57,6 @@ start_session(CleanSess, ClientId, ClientPid) -> init([]) -> {ok, {{simple_one_for_one, 10, 10}, [{session, {emqttd_session, start_link, []}, - transient, 10000, worker, [emqttd_session]}]}}. + temporary, 10000, worker, [emqttd_session]}]}}.