]> granicus.if.org Git - ejabberd/commitdiff
Improve ACME options validation
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 17 Nov 2017 10:06:04 +0000 (13:06 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 17 Nov 2017 10:06:04 +0000 (13:06 +0300)
src/ejabberd_acme.erl

index 5cb15dcc5ec09b34fbade3223ef6ad3395fe2e33..0d54918d94deddddf312a0fe2789b00a1b96e1ca 100644 (file)
@@ -1203,19 +1203,20 @@ generate_key() ->
 %% Option Parsing Code
 %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-parse_acme_opts(AcmeOpt) ->
-    [parse_acme_opt(Opt) || Opt <- AcmeOpt].
-
-
-parse_acme_opt({ca_url, CaUrl}) when is_bitstring(CaUrl) ->
-    {ca_url, binary_to_list(CaUrl)};
-parse_acme_opt({contact, Contact}) when is_bitstring(Contact) ->
-    {contact, Contact}.
-
 -spec opt_type(acme) -> fun((acme_config()) -> (acme_config()));
              (atom()) -> [atom()].
 opt_type(acme) ->
-    fun parse_acme_opts/1;
+    fun(L) ->
+           lists:map(
+             fun({ca_url, URL}) ->
+                     URL1 = binary_to_list(URL),
+                     {ok, _} = http_uri:parse(URL1),
+                     URL1;
+                ({contact, Contact}) ->
+                     [<<_, _/binary>>, <<_, _/binary>>] =
+                         binary:split(Contact, <<":">>),
+                     Contact
+             end, L)
+    end;
 opt_type(_) ->
     [acme].