From b11a15fa0008ba9b5d26b3edfcc6bbc1e1b2aaaa Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 22 Dec 2021 14:24:58 +0800 Subject: [PATCH] fix(banned): create banned with utf8 failed by 500 --- apps/emqx/src/emqx_trace/emqx_trace.erl | 1 + apps/emqx_dashboard/src/emqx_dashboard_swagger.erl | 10 ++++++++-- apps/emqx_gateway/src/emqx_gateway_api_listeners.erl | 2 +- apps/emqx_management/src/emqx_mgmt_api_banned.erl | 6 +++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/emqx/src/emqx_trace/emqx_trace.erl b/apps/emqx/src/emqx_trace/emqx_trace.erl index 0d7f66323..42e4d0baf 100644 --- a/apps/emqx/src/emqx_trace/emqx_trace.erl +++ b/apps/emqx/src/emqx_trace/emqx_trace.erl @@ -194,6 +194,7 @@ format(Traces) -> end, Traces). init([]) -> + ok = mria:wait_for_tables([?TRACE]), erlang:process_flag(trap_exit, true), OriginLogLevel = emqx_logger:get_primary_log_level(), ok = filelib:ensure_dir(trace_dir()), diff --git a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl index 2dcdba643..9a54be9c5 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl @@ -211,11 +211,16 @@ check_request_body(#{body := Body}, Schema, Module, CheckFun, true) -> %% {good_nest_2, mk(ref(?MODULE, good_ref), #{})} %% ]} %% ] -check_request_body(#{body := Body}, Spec, _Module, CheckFun, false) -> +check_request_body(#{body := Body}, Spec, _Module, CheckFun, false)when is_list(Spec) -> lists:foldl(fun({Name, Type}, Acc) -> Schema = ?INIT_SCHEMA#{roots => [{Name, Type}]}, maps:merge(Acc, CheckFun(Schema, Body, #{})) - end, #{}, Spec). + end, #{}, Spec); + +%% requestBody => #{content => #{ 'application/octet-stream' => +%% #{schema => #{ type => string, format => binary}}} +check_request_body(#{body := Body}, Spec, _Module, _CheckFun, false)when is_map(Spec) -> + Body. %% tags, description, summary, security, deprecated meta_to_spec(Meta, Module) -> @@ -287,6 +292,7 @@ trans_desc(Spec, Hocon) -> Desc -> Spec#{description => to_bin(Desc)} end. +request_body(#{content := _} = Content, _Module) -> {Content, []}; request_body([], _Module) -> {[], []}; request_body(Schema, Module) -> {{Props, Refs}, Examples} = diff --git a/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl b/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl index fbf923700..ad381ce44 100644 --- a/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl +++ b/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl @@ -32,7 +32,7 @@ -import(emqx_gateway_api_authn, [schema_authn/0]). -%% minirest/dashbaord_swagger behaviour callbacks +%% minirest/dashboard_swagger behaviour callbacks -export([ api_spec/0 , paths/0 , schema/1 diff --git a/apps/emqx_management/src/emqx_mgmt_api_banned.erl b/apps/emqx_management/src/emqx_mgmt_api_banned.erl index c9ae1401d..6521a549c 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_banned.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_banned.erl @@ -101,15 +101,15 @@ fields(ban) -> desc => <<"Banned type clientid, username, peerhost">>, nullable => false, example => username})}, - {who, hoconsc:mk(binary(), #{ + {who, hoconsc:mk(emqx_schema:unicode_binary(), #{ desc => <<"Client info as banned type">>, nullable => false, - example => <<"Badass">>})}, + example => <<"Badass坏"/utf8>>})}, {by, hoconsc:mk(binary(), #{ desc => <<"Commander">>, nullable => true, example => <<"mgmt_api">>})}, - {reason, hoconsc:mk(binary(), #{ + {reason, hoconsc:mk(emqx_schema:unicode_binary(), #{ desc => <<"Banned reason">>, nullable => true, example => <<"Too many requests">>})},