Commit Graph

2728 Commits

Author SHA1 Message Date
Shawn
9b34f6f9a3 fix(connector): add type and name in repsonse of GET /connectors 2021-12-17 16:45:42 +08:00
zhongwencool
870af6df41 fix: Limit interval between 0~65535 2021-12-17 15:51:54 +08:00
zhongwencool
fdff3c5a53 fix: keepalive ct failed 2021-12-17 15:51:51 +08:00
Zaiming (Stone) Shi
58f32c2572 fix(plugins): catch stop_app exception 2021-12-17 08:35:10 +01:00
JianBo He
92fd9c1eca chore(gw): fix adding subscription 2021-12-17 15:31:07 +08:00
zhongwencool
38d42517f7 fix: misc_SUITE:t_drain_down sometimes fails 2021-12-17 14:58:50 +08:00
JianBo He
52c78974d6 chore(gw): fix elvis warnings 2021-12-17 14:16:00 +08:00
JianBo He
561c95c31a feat(lwm2m): support subscribe/unsubscribe operations 2021-12-17 14:16:00 +08:00
JianBo He
bfbf377a45 feat(coap): support subscribe/unsubscribe operations 2021-12-17 14:16:00 +08:00
JianBo He
6b8bdfd113 chore(gw): support to get subscriptions from coap 2021-12-17 14:16:00 +08:00
JianBo He
3443aeff18 fix(gw): handle discard/kick event 2021-12-17 14:16:00 +08:00
JianBo He
a2823f2ad6 chore(gw): improve some type specs 2021-12-17 14:16:00 +08:00
zhongwencool
8be2aaf72c
Merge pull request #6452 from zhongwencool/log-trace-api
feat(trace): trace http api schema
2021-12-17 12:44:15 +08:00
JimMoen
3a3226fc78 fix(dashboard): enable dashboard by default 2021-12-17 11:20:23 +08:00
zhongwencool
38438415b8 fix: replace LOG by SLOG 2021-12-17 10:52:14 +08:00
zhongwencool
89d904b7ef feat(trace): trace http api schema 2021-12-17 09:29:37 +08:00
Zaiming (Stone) Shi
f15efb4930 chore: add a function comment 2021-12-16 22:08:16 +01:00
Zaiming (Stone) Shi
b1ec8c1aba fix(plugins): fix relative positioning 2021-12-16 21:57:08 +01:00
Zaiming (Stone) Shi
48ad0adbaa refactor: delete plugin management APIs from emqx_mgmt
Will move the APIs to emqx_plugins_api.erl
2021-12-16 21:53:42 +01:00
Zaiming (Stone) Shi
3a7924d0fd refactor(plugins): new CLI for plugins 2021-12-16 21:21:16 +01:00
Zaiming (Stone) Shi
47661042b9 fix(cli): make emqx_ctl aware of max width 2021-12-16 20:12:15 +01:00
JimMoen
477b62200d fix(authz): placeholder regular expression escape 2021-12-16 23:33:26 +08:00
Zaiming (Stone) Shi
b9a3b558ee refactor(plugins): refactor plugins configuration interface 2021-12-16 13:59:20 +01:00
k32
618113d507 fix(broker): Check broker status before dispatch
Fixes: #6388
2021-12-15 19:49:46 +01:00
zhongwencool
a43ac1b778 fix: improve rfc3339 format error 2021-12-15 16:58:07 +08:00
zhongwencool
e4a21fd90d fix: merge from master 2021-12-15 16:24:25 +08:00
zhongwencool
f95ef04cf7
Merge branch 'master' into api-key-secret 2021-12-15 16:01:09 +08:00
lafirest
141921bfc4
Merge pull request #6449 from zhongwencool/slow_sub
fix: slow_sub api return field's notice_interval is missing
2021-12-15 14:45:33 +08:00
zhongwencool
29ccc98a42 fix: slow_sub api return field's notice_interval is missing 2021-12-15 10:36:13 +08:00
Thales Macedo Garitezi
95de2d3467
fix(monitor): fix return value on badrpc
If the rpc in `emqx_dashboard_monitor_api:get_collect/1` fails, an
empty map is return.  But the current function expects a 4-tuple,
which results in a 500 error returned on such occasions.

```
curl -su admin:public localhost:8888/api/v5/monitor/current | jq .
{
  "code": "INTERNAL_ERROR",
  "message": "error, function_clause, [{emqx_dashboard_monitor_api,format_current_metrics,[[#{},{0,0,0,0},{0,0,0,0}],{0,0,0,0}],[{file,\"emqx_dashboard_monitor_api.erl\"},{line,179}]},{emqx_dashboard_monitor_api,current_counters,2,[{file,\"emqx_dashboard_monitor_api.erl\"},{line,167}]},{minirest_handler,apply_callback,3,[{file,\"minirest_handler.erl\"},{line,112}]},{minirest_handler,init,2,[{file,\"minirest_handler.erl\"},{line,38}]},{cowboy_handler,execute,2,[{file,\"cowboy_handler.erl\"},{line,41}]},{cowboy_stream_h,execute,3,[{file,\"cowboy_stream_h.erl\"},{line,318}]},{cowboy_stream_h,request_process,3,[{file,\"cowboy_stream_h.erl\"},{line,302}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,226}]}]"
}
```
2021-12-14 17:56:32 -03:00
Thales Macedo Garitezi
0300403fc0
fix(admin): inconsistent return type on empty inputs
If an empty username or password are given during the initialization
of `emqx_dashboard_admin`, it'll return just the atom `ok`, which
breaks the expected `{ok, _}` in `emqx_dashboard_app:start/2`.

```
{'EXIT',
 {{failed_to_start_app,emqx_dashboard,
   {emqx_dashboard,
    {bad_return,
     {{emqx_dashboard_app,start,[normal,[]]},
      {'EXIT',
       {{badmatch,ok},
        [{emqx_dashboard_app,start,2,
          [{file,
            "/home/thales/dev/emqx/emqx/apps/emqx_dashboard/src/emqx_dashboard_app.erl"},
           {line,32}]},
         {application_master,start_it_old,4,
          [{file,"application_master.erl"},{line,293}]}]}}}}}}}}
```
2021-12-14 17:51:50 -03:00
Ilya Averyanov
b8a68d7a9f
Merge pull request #6384 from savonarola/refactor-password-hashing
refactor(authn): unify password hashing
2021-12-14 16:21:02 +03:00
Ilya Averyanov
5538cd3708
Merge pull request #6441 from savonarola/refactor-acl
refactor(authz): hide mnesia authz implementation details
2021-12-14 11:32:25 +03:00
zhongwencool
56804ef733
Merge pull request #6427 from zmstone/feat-add-emqx-plugins-app
feat(plugins): add emqx_plugins skeleton
2021-12-14 16:26:58 +08:00
Zaiming (Stone) Shi
867ebbc8a0 docs: fix review comments for plugins config doc 2021-12-13 20:52:20 +01:00
Ilya Averyanov
708d9cfc6c refactor(authn): restore pbkdf2 password hashing functionality 2021-12-13 21:40:09 +03:00
Ilya Averyanov
abdb98ffa2 refactor(authz): hide mnesia authz implementation details
* Eliminate type and record sharing through `emqx_authz.hrl`.
* Hide all mria/mnesia interactions inside mnesia authz backend.
2021-12-13 21:23:58 +03:00
zhongwencool
3e892a337a
Merge pull request #6436 from tigercl/chore/compatibility-otp24
chore(otp): be compatibility with crypto in otp 24
2021-12-13 22:31:15 +08:00
zhongwencool
b4e2aa0dcf
Merge branch 'master' into feat-add-emqx-plugins-app 2021-12-13 22:28:03 +08:00
lafirest
cbe683c6a3
Merge pull request #6353 from lafirest/slow_subs
feat(emqx_slow_sus): ported emqx_slow_subs from v4.4
2021-12-13 17:35:17 +08:00
JimMoen
40c4880a71
Merge pull request #6435 from JimMoen/fix-ssl-file-content
fix(ssl): file content return type
2021-12-13 16:49:21 +08:00
zhouzb
69800a9e88 chore(otp): be compatibility with crypto in otp 24 2021-12-13 16:16:57 +08:00
JimMoen
5785b0c20b fix(ssl): file content return type 2021-12-13 16:08:41 +08:00
Zaiming (Stone) Shi
d3d8b3a01f fix: allow listener not_found before restart 2021-12-12 22:18:56 +01:00
Zaiming (Stone) Shi
38ac10d3e2 feat(plugins): add emqx_plugins skeleton
* added emqx_plugins app.
* emqx_plugins.erl is moved from emqx app to emqx_plugins app
  same for the test SUITE
2021-12-12 19:40:34 +01:00
Zaiming (Stone) Shi
fcb7c2c70f docs: change <module> to {module} so markdown render will not crash
<module> is treated as an HTML tag
2021-12-12 19:34:29 +01:00
Zaiming (Stone) Shi
41aa958ac9 refactor(authn): root type as array of union
Deleted the wrapping union.
i.e. previously it's
union([union([...]), array(union([...]))]).
not it's
array(union([...]))

It is after-all a lazy type, and the dynamic check allows
single-elemented arrays not to have `[]` around it.

the old union of array of union schema was just adding confusion
2021-12-11 22:20:53 +01:00
Zaiming (Stone) Shi
7d36079f0a docs(connector): better namespace for http schema 2021-12-11 22:17:52 +01:00
Ilya Averyanov
59f1bfeaac
Merge pull request #6373 from savonarola/authz-backend-behaviours
chore(authz): encapsulate authz backend logic
2021-12-11 00:11:16 +03:00
Ilya Averyanov
fddb28a4b0 fix(wss): update cowboy & ranch for OTP24 compatibility 2021-12-10 20:38:44 +03:00
JianBo He
5224da57dc
Merge pull request #6411 from HJianBo/gw-improve-apis-3
More precise gateway http-api examples
2021-12-10 16:52:49 +08:00
lafirest
82746134bb feat(emqx_slow_sus): ported emqx_slow_subs from v4.4 2021-12-10 16:42:55 +08:00
firest
8493b61cb5 refactor(eqmx_limiter): use the new hierarchical token bucket to replace the old ratelimit code 2021-12-10 14:37:23 +08:00
JianBo He
fa11c6df9c test(gw): fix bad test cases 2021-12-10 10:41:38 +08:00
zhongwencool
64341fdc23 fix(swagger): remote api_secret field form api_key api 2021-12-09 17:57:57 +08:00
k32
98be2e15b1
Merge pull request #6405 from k32/sysmon
feat(system_monitor): Add system_monitor application
2021-12-09 10:22:40 +01:00
zhongwencool
0614c157ec fix(elvis): elvis warning 2021-12-09 16:42:10 +08:00
zhongwencool
cf11f3f8ee feat(api-key): support api_key/secret 2021-12-09 16:42:10 +08:00
JianBo He
159ba63530 chore: upgrade grpc-erl to 0.6.4 2021-12-09 15:06:18 +08:00
JianBo He
5d4604701c chore: fix elvis warnings 2021-12-09 15:06:18 +08:00
JianBo He
34cc8cc7f5 chore: put the pool_size default value to avoid hot upgrade failure 2021-12-09 15:06:18 +08:00
JianBo He
e7ccd88719 test(props): cover messages headers 2021-12-09 15:06:18 +08:00
JianBo He
f132d09483 chore(exhook): parse pool_size 2021-12-09 15:06:18 +08:00
JianBo He
143c685452 feat(exhook): expose process pool_size for grpc client 2021-12-09 15:06:18 +08:00
JianBo He
2b7c311807 chore: upgrade grpc to 0.6.4 2021-12-09 15:06:18 +08:00
JianBo He
262fb13a71 chore(exhook): fix diaylzer warnings 2021-12-09 15:06:17 +08:00
JianBo He
20ba9d285f feat(exhook): expose headers for on_messages_publish hook 2021-12-09 15:06:17 +08:00
lafirest
f25c8cdf0f
Merge pull request #6410 from lafirest/fix/lw_cmd_record
fix(emqx_lwm2m): limit the max size of cmd record
2021-12-09 14:57:01 +08:00
JianBo He
e662628581 chore(gw): fix bad default value in query-string 2021-12-09 14:50:28 +08:00
lafirest
c9cbaeff95 fix(emqx_lwm2m): limit the max size of cmd record 2021-12-09 14:39:11 +08:00
JianBo He
028f1fa71c chore(gw): fix listener examples 2021-12-09 11:33:09 +08:00
Shawn
f7941cd2bb
Merge pull request #6387 from terry-xiaoyu/improve_connector_apis
Improve bridge and connector APIs
2021-12-09 10:54:55 +08:00
DDDHuang
7aa08a82d5
Merge pull request #6283 from DDDHuang/as_doc_example
fix: add auto subscription swagger example
2021-12-09 10:35:08 +08:00
Ilya Averyanov
1c9d867c5e chore(authz): add test for authz backend creation dry run 2021-12-08 21:38:10 +03:00
Ilya Averyanov
b7d227d2ef chore(authz): move file backend to a separate module 2021-12-08 21:38:10 +03:00
Ilya Averyanov
056558e445 chore(authz): encapsulate authz backend logic 2021-12-08 21:38:10 +03:00
Thales Macedo Garitezi
2b5fe9179e
fix(live_conn): fix live connection count on race condition (5.0)
Port from #6406 to 5.0.

When multiple clients try to connect concurrently using the same
client ID, they all call `emqx_channel:ensure_connected`, increasing
the live connection count, but only one will successfully acquire the
lock for that client ID.  This means that all other clients that
increased the live connection count will not get to call neither
`emqx_channel:ensure_disconnected` nor be monitored for `DOWN`
messages, effectively causing a count leak.

By moving the increment to `emqx_cm:register_channel`, which is only
called inside the lock, we can remove this leakage.

Also, during the handling of `DOWN` messages, we now iterate over all
channel PIDs returned by `eqmx_misc:drain_down`, since it could be
that one or more PIDs are not contained in the `pmon` state.
2021-12-08 15:15:27 -03:00
k32
9fbc247e29 feat(system_monitor): Add system_monitor application 2021-12-08 16:34:10 +01:00
Shawn
d76f82d3d2 fix(bridges): add new option 'enable' for bridge configs 2021-12-08 18:16:38 +08:00
JianBo He
afb2cf19c2
Merge pull request #6297 from HJianBo/gw-improve-apis-2
Standardize HTTP-APIs return value and Status/Error Code
2021-12-08 18:02:13 +08:00
Tobias Lindahl
92f116afa4
Merge pull request #6393 from emqx/fix-takeover-race-on-enqueued-messages 2021-12-08 11:00:46 +01:00
JianBo He
7c261b5356 chore(gw): improve examples for _gateway_api 2021-12-08 17:18:39 +08:00
JianBo He
e48f10d2d6 chore(gw): ignore needless args 2021-12-08 11:33:11 +08:00
JianBo He
a937a3d4dc chore(gw): fix bad argument type 2021-12-08 11:13:00 +08:00
JianBo He
0eff5358ca chore(gw): add examples for gw&client api 2021-12-08 10:52:27 +08:00
Ilya Averyanov
2b0a3e8ba3 refactor(authn): unify password hashing 2021-12-07 23:38:26 +03:00
Zaiming (Stone) Shi
9276a5bc3c
Merge pull request #6394 from zmstone/fix-typo-in-hook-point-name
fix: typo takeovered -> takenover
2021-12-07 21:06:30 +01:00
Tobias Lindahl
14bef1ba31 refactor: make clauses safe for future reordering 2021-12-07 16:14:32 +01:00
Zaiming (Stone) Shi
5440b431a1 fix: typo takeovered -> takenover 2021-12-07 16:06:23 +01:00
Tobias Lindahl
e6ecc6ca60 fix(emqx_channel): fix race condition in session takeover
Sessions must not enqueue messages when another process is taking over
the client id, since it already passed on the message queue in the
session state.

Without this fix, messages arriving after `{takeover, 'begin'} to a
channel with no connection (i.e., a persistent session) would be lost.
2021-12-07 14:17:59 +01:00
Shawn
12fbcd8181 feat(connector): add num_of_bridges to the response of GET /connectors 2021-12-07 15:09:08 +08:00
Shawn
098d8eacb7 fix(metrics): update testcases for plugin_libs_metrics 2021-12-07 10:12:04 +08:00
Shawn
cc96880f18 fix(dialyzer): some dialyzer issue 2021-12-07 09:56:57 +08:00
Shawn
6903997b94 feat(connector): add new option 'mode' to mqtt connectors 2021-12-07 09:56:57 +08:00
Shawn
9b4fe87ed0 fix(bridges): update testcases for bridge APIs 2021-12-07 09:56:57 +08:00
Shawn
e1794fbce6 fix(connector): create different schema for POST,PUT,GET methods 2021-12-07 09:56:57 +08:00
Shawn
56d46c80eb refactor(rule): generate swagger from hocon schema for /bridges 2021-12-07 09:56:57 +08:00
Shawn
affe69afd6 fix(rules): update the test cases for rule APIs 2021-12-07 09:48:47 +08:00
Shawn
416b9f8d7c refactor(rule): generate swagger from hocon schema for /rules 2021-12-07 09:48:47 +08:00
Shawn
24bded99d5 refactor(metrics): rename speed to rate in emqx_plugin_libs_metrics 2021-12-07 09:47:53 +08:00