|
32 | 32 | %% gen_server callbacks
|
33 | 33 | -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
|
34 | 34 | terminate/2, code_change/3]).
|
| 35 | +%% WebAdmin |
| 36 | +-export([webadmin_menu_node/3, webadmin_page_node/3]). |
35 | 37 |
|
36 | 38 | -include("logger.hrl").
|
37 | 39 | -include("ejabberd_commands.hrl").
|
| 40 | +-include("ejabberd_http.hrl"). |
| 41 | +-include("ejabberd_web_admin.hrl"). |
38 | 42 | -include_lib("public_key/include/public_key.hrl").
|
39 | 43 | -include_lib("stdlib/include/ms_transform.hrl").
|
| 44 | +-include_lib("xmpp/include/xmpp.hrl"). |
40 | 45 |
|
41 | 46 | -define(CALL_TIMEOUT, timer:minutes(10)).
|
42 | 47 |
|
@@ -108,6 +113,8 @@ init([]) ->
|
108 | 113 | ejabberd_hooks:add(config_reloaded, ?MODULE, register_certfiles, 40),
|
109 | 114 | ejabberd_hooks:add(ejabberd_started, ?MODULE, ejabberd_started, 110),
|
110 | 115 | ejabberd_hooks:add(config_reloaded, ?MODULE, ejabberd_started, 110),
|
| 116 | + ejabberd_hooks:add(webadmin_menu_node, ?MODULE, webadmin_menu_node, 110), |
| 117 | + ejabberd_hooks:add(webadmin_page_node, ?MODULE, webadmin_page_node, 110), |
111 | 118 | ejabberd_commands:register_commands(get_commands_spec()),
|
112 | 119 | register_certfiles(),
|
113 | 120 | {ok, #state{}}.
|
@@ -153,6 +160,8 @@ terminate(_Reason, _State) ->
|
153 | 160 | ejabberd_hooks:delete(config_reloaded, ?MODULE, register_certfiles, 40),
|
154 | 161 | ejabberd_hooks:delete(ejabberd_started, ?MODULE, ejabberd_started, 110),
|
155 | 162 | ejabberd_hooks:delete(config_reloaded, ?MODULE, ejabberd_started, 110),
|
| 163 | + ejabberd_hooks:delete(webadmin_menu_node, ?MODULE, webadmin_menu_node, 110), |
| 164 | + ejabberd_hooks:delete(webadmin_page_node, ?MODULE, webadmin_page_node, 110), |
156 | 165 | ejabberd_commands:unregister_commands(get_commands_spec()).
|
157 | 166 |
|
158 | 167 | code_change(_OldVsn, State, _Extra) ->
|
@@ -547,6 +556,21 @@ list_certificates() ->
|
547 | 556 | {Domain, Path, sets:is_element(E, Used)}
|
548 | 557 | end, Known)).
|
549 | 558 |
|
| 559 | +%%%=================================================================== |
| 560 | +%%% WebAdmin |
| 561 | +%%%=================================================================== |
| 562 | + |
| 563 | +webadmin_menu_node(Acc, _Node, _Lang) -> |
| 564 | + Acc ++ [{<<"acme">>, <<"ACME">>}]. |
| 565 | + |
| 566 | +webadmin_page_node(_, Node, #request{path = [<<"acme">>]} = R) -> |
| 567 | + Head = ?H1GLraw(<<"ACME Certificates">>, <<"admin/configuration/basic/#acme">>, <<"ACME">>), |
| 568 | + Set = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [request_certificate, R]), |
| 569 | + ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [revoke_certificate, R])], |
| 570 | + Get = [ejabberd_cluster:call(Node, ejabberd_web_admin, make_command, [list_certificates, R])], |
| 571 | + {stop, Head ++ Get ++ Set}; |
| 572 | +webadmin_page_node(Acc, _, _) -> Acc. |
| 573 | + |
550 | 574 | %%%===================================================================
|
551 | 575 | %%% Other stuff
|
552 | 576 | %%%===================================================================
|
|
0 commit comments