refactor: change confs for dashboard listeners from array to map

Don't use arrays in the config path to make it easier to change
configs via environments varibles.
This commit is contained in:
Shawn 2022-04-19 00:46:16 +08:00
parent 7cc99284ba
commit 8e6b98af68
3 changed files with 46 additions and 50 deletions

View File

@ -10,9 +10,7 @@ dashboard {
sample_interval = 10s sample_interval = 10s
## JWT token expiration time. ## JWT token expiration time.
token_expired_time = 60m token_expired_time = 60m
listeners = [ listeners.http {
{
protocol = http
num_acceptors = 4 num_acceptors = 4
max_connections = 512 max_connections = 512
bind = 18083 bind = 18083
@ -21,11 +19,9 @@ dashboard {
inet6 = false inet6 = false
ipv6_v6only = false ipv6_v6only = false
} }
# , #listeners.https {
# {
# protocol = https
# bind = "127.0.0.1:18084" # bind = "127.0.0.1:18084"
# num_acceptors = 2 # num_acceptors = 4
# backlog = 512 # backlog = 512
# send_timeout = 5s # send_timeout = 5s
# inet6 = false # inet6 = false
@ -36,8 +32,7 @@ dashboard {
# verify = verify_peer # verify = verify_peer
# versions = ["tlsv1.3","tlsv1.2","tlsv1.1","tlsv1"] # versions = ["tlsv1.3","tlsv1.2","tlsv1.1","tlsv1"]
# ciphers = ["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256","TLS_CHACHA20_POLY1305_SHA256","TLS_AES_128_CCM_SHA256","TLS_AES_128_CCM_8_SHA256","ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384","ECDHE-ECDSA-AES256-SHA384","ECDHE-RSA-AES256-SHA384","ECDHE-ECDSA-DES-CBC3-SHA","ECDH-ECDSA-AES256-GCM-SHA384","ECDH-RSA-AES256-GCM-SHA384","ECDH-ECDSA-AES256-SHA384","ECDH-RSA-AES256-SHA384","DHE-DSS-AES256-GCM-SHA384","DHE-DSS-AES256-SHA256","AES256-GCM-SHA384","AES256-SHA256","ECDHE-ECDSA-AES128-GCM-SHA256","ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES128-SHA256","ECDHE-RSA-AES128-SHA256","ECDH-ECDSA-AES128-GCM-SHA256","ECDH-RSA-AES128-GCM-SHA256","ECDH-ECDSA-AES128-SHA256","ECDH-RSA-AES128-SHA256","DHE-DSS-AES128-GCM-SHA256","DHE-DSS-AES128-SHA256","AES128-GCM-SHA256","AES128-SHA256","ECDHE-ECDSA-AES256-SHA","ECDHE-RSA-AES256-SHA","DHE-DSS-AES256-SHA","ECDH-ECDSA-AES256-SHA","ECDH-RSA-AES256-SHA","AES256-SHA","ECDHE-ECDSA-AES128-SHA","ECDHE-RSA-AES128-SHA","DHE-DSS-AES128-SHA","ECDH-ECDSA-AES128-SHA","ECDH-RSA-AES128-SHA","AES128-SHA"] # ciphers = ["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256","TLS_CHACHA20_POLY1305_SHA256","TLS_AES_128_CCM_SHA256","TLS_AES_128_CCM_8_SHA256","ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384","ECDHE-ECDSA-AES256-SHA384","ECDHE-RSA-AES256-SHA384","ECDHE-ECDSA-DES-CBC3-SHA","ECDH-ECDSA-AES256-GCM-SHA384","ECDH-RSA-AES256-GCM-SHA384","ECDH-ECDSA-AES256-SHA384","ECDH-RSA-AES256-SHA384","DHE-DSS-AES256-GCM-SHA384","DHE-DSS-AES256-SHA256","AES256-GCM-SHA384","AES256-SHA256","ECDHE-ECDSA-AES128-GCM-SHA256","ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES128-SHA256","ECDHE-RSA-AES128-SHA256","ECDH-ECDSA-AES128-GCM-SHA256","ECDH-RSA-AES128-GCM-SHA256","ECDH-ECDSA-AES128-SHA256","ECDH-RSA-AES128-SHA256","DHE-DSS-AES128-GCM-SHA256","DHE-DSS-AES128-SHA256","AES128-GCM-SHA256","AES128-SHA256","ECDHE-ECDSA-AES256-SHA","ECDHE-RSA-AES256-SHA","DHE-DSS-AES256-SHA","ECDH-ECDSA-AES256-SHA","ECDH-RSA-AES256-SHA","AES256-SHA","ECDHE-ECDSA-AES128-SHA","ECDHE-RSA-AES128-SHA","DHE-DSS-AES128-SHA","ECDH-ECDSA-AES128-SHA","ECDH-RSA-AES128-SHA","AES128-SHA"]
# } #}
]
## CORS Support. don't set cors true if you don't know what it means. ## CORS Support. don't set cors true if you don't know what it means.
# cors = false # cors = false

View File

@ -155,16 +155,10 @@ apps() ->
]. ].
listeners(Listeners) -> listeners(Listeners) ->
[ lists:map(fun({Protocol, Conf}) ->
begin {Conf1, Bind} = ip_port(Conf),
Protocol = maps:get(protocol, ListenerOption0, http), {listener_name(Protocol, Conf1), Protocol, Bind, ranch_opts(Conf1)}
{ListenerOption, Bind} = ip_port(ListenerOption0), end, maps:to_list(Listeners)).
Name = listener_name(Protocol, ListenerOption),
RanchOptions = ranch_opts(maps:without([protocol], ListenerOption)),
{Name, Protocol, Bind, RanchOptions}
end
|| ListenerOption0 <- Listeners
].
ip_port(Opts) -> ip_port(maps:take(bind, Opts), Opts). ip_port(Opts) -> ip_port(maps:take(bind, Opts), Opts).

View File

@ -31,12 +31,7 @@ fields("dashboard") ->
[ [
{listeners, {listeners,
sc( sc(
hoconsc:array( ref("listeners"),
hoconsc:union([
hoconsc:ref(?MODULE, "http"),
hoconsc:ref(?MODULE, "https")
])
),
#{ #{
desc => desc =>
"HTTP(s) listeners are identified by their protocol type and are\n" "HTTP(s) listeners are identified by their protocol type and are\n"
@ -71,17 +66,27 @@ fields("dashboard") ->
{cors, fun cors/1}, {cors, fun cors/1},
{i18n_lang, fun i18n_lang/1} {i18n_lang, fun i18n_lang/1}
]; ];
fields("http") -> fields("listeners") ->
[ [
{"protocol", {"http",
sc( sc(
hoconsc:enum([http, https]), ref("http"),
#{ #{
desc => ?DESC("protocol"), desc => "TCP listeners",
required => true, required => {false, recursively}
default => http
} }
)}, )},
{"https",
sc(
ref("https"),
#{
desc => "SSL listeners",
required => {false, recursively}
}
)}
];
fields("http") ->
[
{"bind", fun bind/1}, {"bind", fun bind/1},
{"num_acceptors", {"num_acceptors",
sc( sc(
@ -201,3 +206,5 @@ i18n_lang(desc) -> "Internationalization language support.";
i18n_lang(_) -> undefined. i18n_lang(_) -> undefined.
sc(Type, Meta) -> hoconsc:mk(Type, Meta). sc(Type, Meta) -> hoconsc:mk(Type, Meta).
ref(Field) -> hoconsc:ref(?MODULE, Field).