mirror of
https://gitee.com/dgiiot/dgiot.git
synced 2024-12-05 05:37:40 +08:00
240 lines
7.7 KiB
Erlang
240 lines
7.7 KiB
Erlang
%%-*- mode: erlang -*-
|
|
%% emqx_management config mapping
|
|
|
|
{mapping, "management.max_row_limit", "emqx_management.max_row_limit", [
|
|
{default, 10000},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.default_application.id", "emqx_management.default_application_id", [
|
|
{default, undefined},
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.default_application.secret", "emqx_management.default_application_secret", [
|
|
{default, undefined},
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.application.default_secret", "emqx_management.application", [
|
|
{default, undefined},
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http", "emqx_management.listeners", [
|
|
{datatype, [integer, ip]}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.acceptors", "emqx_management.listeners", [
|
|
{default, 4},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.max_clients", "emqx_management.listeners", [
|
|
{default, 512},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.backlog", "emqx_management.listeners", [
|
|
{default, 1024},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.send_timeout", "emqx_management.listeners", [
|
|
{datatype, {duration, ms}},
|
|
{default, "15s"}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.send_timeout_close", "emqx_management.listeners", [
|
|
{datatype, flag},
|
|
{default, on}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.recbuf", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.sndbuf", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.buffer", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.tune_buffer", "emqx_management.listeners", [
|
|
{datatype, flag},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.nodelay", "emqx_management.listeners", [
|
|
{datatype, {enum, [true, false]}},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.inet6", "emqx_management.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "management.listener.http.ipv6_v6only", "emqx_management.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https", "emqx_management.listeners", [
|
|
{datatype, [integer, ip]}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.acceptors", "emqx_management.listeners", [
|
|
{default, 8},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.max_clients", "emqx_management.listeners", [
|
|
{default, 64},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.backlog", "emqx_management.listeners", [
|
|
{default, 1024},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.send_timeout", "emqx_management.listeners", [
|
|
{datatype, {duration, ms}},
|
|
{default, "15s"}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.send_timeout_close", "emqx_management.listeners", [
|
|
{datatype, flag},
|
|
{default, on}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.recbuf", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.sndbuf", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.buffer", "emqx_management.listeners", [
|
|
{datatype, bytesize},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.tune_buffer", "emqx_management.listeners", [
|
|
{datatype, flag},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.nodelay", "emqx_management.listeners", [
|
|
{datatype, {enum, [true, false]}},
|
|
hidden
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.keyfile", "emqx_management.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.certfile", "emqx_management.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.cacertfile", "emqx_management.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.verify", "emqx_management.listeners", [
|
|
{datatype, atom}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.ciphers", "emqx_management.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.tls_versions", "emqx_management.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.fail_if_no_peer_cert", "emqx_management.listeners", [
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.inet6", "emqx_management.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "management.listener.https.ipv6_v6only", "emqx_management.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{translation, "emqx_management.application", fun(Conf) ->
|
|
Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end,
|
|
Opts = fun(Prefix) ->
|
|
Filter([{default_secret, cuttlefish:conf_get(Prefix ++ ".default_secret", Conf)}])
|
|
end,
|
|
Prefix = "management.application",
|
|
Transfer = fun(default_secret, V) -> list_to_binary(V);
|
|
(_, V) -> V
|
|
end,
|
|
[{K, Transfer(K, V)}|| {K, V} <- Opts(Prefix)]
|
|
end}.
|
|
|
|
{translation, "emqx_management.listeners", fun(Conf) ->
|
|
Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end,
|
|
Opts = fun(Prefix) ->
|
|
Filter([{num_acceptors, cuttlefish:conf_get(Prefix ++ ".acceptors", Conf)},
|
|
{max_connections, cuttlefish:conf_get(Prefix ++ ".max_clients", Conf)}])
|
|
end,
|
|
TcpOpts = fun(Prefix) ->
|
|
Filter([{backlog, cuttlefish:conf_get(Prefix ++ ".backlog", Conf, undefined)},
|
|
{send_timeout, cuttlefish:conf_get(Prefix ++ ".send_timeout", Conf, undefined)},
|
|
{send_timeout_close, cuttlefish:conf_get(Prefix ++ ".send_timeout_close", Conf, undefined)},
|
|
{recbuf, cuttlefish:conf_get(Prefix ++ ".recbuf", Conf, undefined)},
|
|
{sndbuf, cuttlefish:conf_get(Prefix ++ ".sndbuf", Conf, undefined)},
|
|
{buffer, cuttlefish:conf_get(Prefix ++ ".buffer", Conf, undefined)},
|
|
{nodelay, cuttlefish:conf_get(Prefix ++ ".nodelay", Conf, true)},
|
|
{inet6, cuttlefish:conf_get(Prefix ++ ".inet6", Conf)},
|
|
{ipv6_v6only, cuttlefish:conf_get(Prefix ++ ".ipv6_v6only", Conf)}])
|
|
end,
|
|
|
|
SplitFun = fun(undefined) -> undefined; (S) -> string:tokens(S, ",") end,
|
|
|
|
SslOpts = fun(Prefix) ->
|
|
Versions = case SplitFun(cuttlefish:conf_get(Prefix ++ ".tls_versions", Conf, undefined)) of
|
|
undefined -> undefined;
|
|
L -> [list_to_atom(V) || V <- L]
|
|
end,
|
|
Filter([{versions, Versions},
|
|
{ciphers, SplitFun(cuttlefish:conf_get(Prefix ++ ".ciphers", Conf, undefined))},
|
|
{keyfile, cuttlefish:conf_get(Prefix ++ ".keyfile", Conf, undefined)},
|
|
{certfile, cuttlefish:conf_get(Prefix ++ ".certfile", Conf, undefined)},
|
|
{cacertfile, cuttlefish:conf_get(Prefix ++ ".cacertfile", Conf, undefined)},
|
|
{verify, cuttlefish:conf_get(Prefix ++ ".verify", Conf, undefined)},
|
|
{fail_if_no_peer_cert, cuttlefish:conf_get(Prefix ++ ".fail_if_no_peer_cert", Conf, undefined)}])
|
|
end,
|
|
lists:foldl(
|
|
fun(Proto, Acc) ->
|
|
Prefix = "management.listener." ++ atom_to_list(Proto),
|
|
case cuttlefish:conf_get(Prefix, Conf, undefined) of
|
|
undefined -> Acc;
|
|
Port ->
|
|
[{Proto, Port, TcpOpts(Prefix) ++ Opts(Prefix)
|
|
++ case Proto of
|
|
http -> [];
|
|
https -> SslOpts(Prefix)
|
|
end} | Acc]
|
|
end
|
|
end, [], [http, https])
|
|
end}.
|
|
|