mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
Improve return format of get_certificates command
This commit is contained in:
parent
ac7105d39e
commit
e6e8e64f84
@ -56,7 +56,9 @@ is_valid_verbose_opt(_) -> false.
|
|||||||
|
|
||||||
%% Needs a hell lot of cleaning
|
%% Needs a hell lot of cleaning
|
||||||
-spec get_certificates(url(), account_opt()) ->
|
-spec get_certificates(url(), account_opt()) ->
|
||||||
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}] |
|
{'ok', [{'ok', bitstring(), 'saved'}]} |
|
||||||
|
{'error',
|
||||||
|
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}]} |
|
||||||
{'error', _}.
|
{'error', _}.
|
||||||
get_certificates(CAUrl, NewAccountOpt) ->
|
get_certificates(CAUrl, NewAccountOpt) ->
|
||||||
try
|
try
|
||||||
@ -71,7 +73,9 @@ get_certificates(CAUrl, NewAccountOpt) ->
|
|||||||
end.
|
end.
|
||||||
|
|
||||||
-spec get_certificates0(url(), account_opt()) ->
|
-spec get_certificates0(url(), account_opt()) ->
|
||||||
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}] |
|
{'ok', [{'ok', bitstring(), 'saved'}]} |
|
||||||
|
{'error',
|
||||||
|
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}]} |
|
||||||
no_return().
|
no_return().
|
||||||
get_certificates0(CAUrl, "old-account") ->
|
get_certificates0(CAUrl, "old-account") ->
|
||||||
%% Get the current account
|
%% Get the current account
|
||||||
@ -86,7 +90,9 @@ get_certificates0(CAUrl, "new-account") ->
|
|||||||
get_certificates1(CAUrl, PrivateKey).
|
get_certificates1(CAUrl, PrivateKey).
|
||||||
|
|
||||||
-spec get_certificates1(url(), jose_jwk:key()) ->
|
-spec get_certificates1(url(), jose_jwk:key()) ->
|
||||||
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}] |
|
{'ok', [{'ok', bitstring(), 'saved'}]} |
|
||||||
|
{'error',
|
||||||
|
[{'ok', bitstring(), 'saved'} | {'error', bitstring(), _}]} |
|
||||||
no_return().
|
no_return().
|
||||||
get_certificates1(CAUrl, PrivateKey) ->
|
get_certificates1(CAUrl, PrivateKey) ->
|
||||||
%% Read Config
|
%% Read Config
|
||||||
@ -100,7 +106,33 @@ get_certificates1(CAUrl, PrivateKey) ->
|
|||||||
|
|
||||||
%% Format the result to send back to ejabberdctl
|
%% Format the result to send back to ejabberdctl
|
||||||
%% Result
|
%% Result
|
||||||
SavedCerts.
|
format_get_certificates_result(SavedCerts).
|
||||||
|
|
||||||
|
-spec format_get_certificates_result([{'ok', bitstring(), 'saved'} |
|
||||||
|
{'error', bitstring(), _}]) ->
|
||||||
|
string().
|
||||||
|
format_get_certificates_result(Certs) ->
|
||||||
|
Cond = lists:all(fun(Cert) ->
|
||||||
|
not is_error(Cert)
|
||||||
|
end, Certs),
|
||||||
|
FormattedCerts = lists:join($\n,
|
||||||
|
[format_get_certificate(C) || C <- Certs]),
|
||||||
|
case Cond of
|
||||||
|
true ->
|
||||||
|
Result = io_lib:format("Success:~n~s", [FormattedCerts]),
|
||||||
|
lists:flatten(Result);
|
||||||
|
_ ->
|
||||||
|
Result = io_lib:format("Error with one or more certificates~n~s", [lists:flatten(FormattedCerts)]),
|
||||||
|
lists:flatten(Result)
|
||||||
|
end.
|
||||||
|
|
||||||
|
-spec format_get_certificate({'ok', bitstring(), 'saved'} |
|
||||||
|
{'error', bitstring(), _}) ->
|
||||||
|
string().
|
||||||
|
format_get_certificate({ok, Domain, saved}) ->
|
||||||
|
io_lib:format(" Certificate for domain: \"~s\" acquired and saved", [Domain]);
|
||||||
|
format_get_certificate({error, Domain, Reason}) ->
|
||||||
|
io_lib:format(" Error for domain: \"~s\", with reason: \'~s\'", [Domain, Reason]).
|
||||||
|
|
||||||
-spec get_certificate(url(), bitstring(), jose_jwk:key()) ->
|
-spec get_certificate(url(), bitstring(), jose_jwk:key()) ->
|
||||||
{'ok', bitstring(), pem()} |
|
{'ok', bitstring(), pem()} |
|
||||||
@ -571,6 +603,7 @@ to_public(PrivateKey) ->
|
|||||||
|
|
||||||
-spec is_error(_) -> boolean().
|
-spec is_error(_) -> boolean().
|
||||||
is_error({error, _}) -> true;
|
is_error({error, _}) -> true;
|
||||||
|
is_error({error, _, _}) -> true;
|
||||||
is_error(_) -> false.
|
is_error(_) -> false.
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -248,17 +248,18 @@ get_commands_spec() ->
|
|||||||
result = {res, restuple}},
|
result = {res, restuple}},
|
||||||
|
|
||||||
#ejabberd_commands{name = get_certificate, tags = [acme],
|
#ejabberd_commands{name = get_certificate, tags = [acme],
|
||||||
desc = "Gets a certificate for the specified domain",
|
desc = "Gets a certificate for the specified domain. Can be used with {old-account|new-account}.",
|
||||||
module = ?MODULE, function = get_certificate,
|
module = ?MODULE, function = get_certificate,
|
||||||
args_desc = ["Whether to create a new account or use the existing one"],
|
args_desc = ["Whether to create a new account or use the existing one"],
|
||||||
|
args_example = ["old-account | new-account"],
|
||||||
args = [{option, string}],
|
args = [{option, string}],
|
||||||
result = {certificate, string}},
|
result = {certificates, string}},
|
||||||
#ejabberd_commands{name = list_certificates, tags = [acme],
|
#ejabberd_commands{name = list_certificates, tags = [acme],
|
||||||
desc = "Lists all curently handled certificates and their respective domains",
|
desc = "Lists all curently handled certificates and their respective domains in {plain|verbose} format",
|
||||||
module = ?MODULE, function = list_certificates,
|
module = ?MODULE, function = list_certificates,
|
||||||
args_desc = ["Whether to print the whole certificate or just some metadata. Possible values: plain | verbose"],
|
args_desc = ["Whether to print the whole certificate or just some metadata. Possible values: plain | verbose"],
|
||||||
args = [{option, string}],
|
args = [{option, string}],
|
||||||
result = {certificates, {list,{certificate, string}}}},
|
result = {certificates, {list, {certificate, string}}}},
|
||||||
#ejabberd_commands{name = revoke_certificate, tags = [acme],
|
#ejabberd_commands{name = revoke_certificate, tags = [acme],
|
||||||
desc = "Revokes the selected certificate",
|
desc = "Revokes the selected certificate",
|
||||||
module = ?MODULE, function = revoke_certificate,
|
module = ?MODULE, function = revoke_certificate,
|
||||||
|
Loading…
Reference in New Issue
Block a user