152 lines
5.2 KiB
Erlang
152 lines
5.2 KiB
Erlang
%%-*- mode: erlang -*-
|
|
%% emqx_dashboard config mapping
|
|
|
|
{mapping, "dashboard.default_user.login", "emqx_dashboard.default_user_username", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.default_user.password", "emqx_dashboard.default_user_passwd", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http", "emqx_dashboard.listeners", [
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http.acceptors", "emqx_dashboard.listeners", [
|
|
{default, 4},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http.max_clients", "emqx_dashboard.listeners", [
|
|
{default, 512},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http.access.$id", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http.inet6", "emqx_dashboard.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.http.ipv6_v6only", "emqx_dashboard.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https", "emqx_dashboard.listeners", [
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.acceptors", "emqx_dashboard.listeners", [
|
|
{default, 8},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.max_clients", "emqx_dashboard.listeners", [
|
|
{default, 64},
|
|
{datatype, integer}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.inet6", "emqx_dashboard.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.ipv6_v6only", "emqx_dashboard.listeners", [
|
|
{default, false},
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.tls_versions", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.dhfile", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.keyfile", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.certfile", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.cacertfile", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.verify", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.fail_if_no_peer_cert", "emqx_dashboard.listeners", [
|
|
{datatype, {enum, [true, false]}}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.ciphers", "emqx_dashboard.listeners", [
|
|
{datatype, string}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.secure_renegotiate", "emqx_dashboard.listeners", [
|
|
{datatype, flag}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.reuse_sessions", "emqx_dashboard.listeners", [
|
|
{default, on},
|
|
{datatype, flag}
|
|
]}.
|
|
|
|
{mapping, "dashboard.listener.https.honor_cipher_order", "emqx_dashboard.listeners", [
|
|
{datatype, flag}
|
|
]}.
|
|
|
|
{translation, "emqx_dashboard.listeners", fun(Conf) ->
|
|
Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end,
|
|
LisOpts = fun(Prefix) ->
|
|
Filter([{num_acceptors, cuttlefish:conf_get(Prefix ++ ".acceptors", Conf)},
|
|
{max_connections, cuttlefish:conf_get(Prefix ++ ".max_clients", Conf)},
|
|
{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))},
|
|
{dhfile, cuttlefish:conf_get(Prefix ++ ".dhfile", 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)},
|
|
{secure_renegotiate, cuttlefish:conf_get(Prefix ++ ".secure_renegotiate", Conf, undefined)},
|
|
{reuse_sessions, cuttlefish:conf_get(Prefix ++ ".reuse_sessions", Conf, undefined)},
|
|
{honor_cipher_order, cuttlefish:conf_get(Prefix ++ ".honor_cipher_order", Conf, undefined)}])
|
|
end,
|
|
lists:append(
|
|
lists:map(
|
|
fun(Proto) ->
|
|
Prefix = "dashboard.listener." ++ atom_to_list(Proto),
|
|
case cuttlefish:conf_get(Prefix, Conf, undefined) of
|
|
undefined -> [];
|
|
Port ->
|
|
[{Proto, Port, case Proto of
|
|
http -> LisOpts(Prefix);
|
|
https -> LisOpts(Prefix) ++ SslOpts(Prefix)
|
|
end}]
|
|
end
|
|
end, [http, https]))
|
|
end}.
|
|
|