25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-24 16:23:40 +01:00

Remove modules management from mod_configure

This commit is contained in:
Evgeny Khramtsov 2019-07-15 17:08:41 +03:00
parent e1f3526466
commit 5eeb95c74f

View File

@ -138,12 +138,6 @@ get_local_identity(Acc, _From, _To, Node, Lang) ->
?INFO_IDENTITY(<<"ejabberd">>, <<"node">>, ENode, Lang); ?INFO_IDENTITY(<<"ejabberd">>, <<"node">>, ENode, Lang);
[<<"running nodes">>, _ENode, <<"DB">>] -> [<<"running nodes">>, _ENode, <<"DB">>] ->
?INFO_COMMAND(?T("Database"), Lang); ?INFO_COMMAND(?T("Database"), Lang);
[<<"running nodes">>, _ENode, <<"modules">>,
<<"start">>] ->
?INFO_COMMAND(?T("Start Modules"), Lang);
[<<"running nodes">>, _ENode, <<"modules">>,
<<"stop">>] ->
?INFO_COMMAND(?T("Stop Modules"), Lang);
[<<"running nodes">>, _ENode, <<"backup">>, [<<"running nodes">>, _ENode, <<"backup">>,
<<"backup">>] -> <<"backup">>] ->
?INFO_COMMAND(?T("Backup"), Lang); ?INFO_COMMAND(?T("Backup"), Lang);
@ -230,10 +224,6 @@ get_local_features(Acc, From,
?INFO_RESULT(Allow, [?NS_STATS], Lang); ?INFO_RESULT(Allow, [?NS_STATS], Lang);
[<<"running nodes">>, _ENode, <<"DB">>] -> [<<"running nodes">>, _ENode, <<"DB">>] ->
?INFO_RESULT(Allow, [?NS_COMMANDS], Lang); ?INFO_RESULT(Allow, [?NS_COMMANDS], Lang);
[<<"running nodes">>, _ENode, <<"modules">>] ->
?INFO_RESULT(Allow, [], Lang);
[<<"running nodes">>, _ENode, <<"modules">>, _] ->
?INFO_RESULT(Allow, [?NS_COMMANDS], Lang);
[<<"running nodes">>, _ENode, <<"backup">>] -> [<<"running nodes">>, _ENode, <<"backup">>] ->
?INFO_RESULT(Allow, [], Lang); ?INFO_RESULT(Allow, [], Lang);
[<<"running nodes">>, _ENode, <<"backup">>, _] -> [<<"running nodes">>, _ENode, <<"backup">>, _] ->
@ -458,10 +448,6 @@ get_local_items(Acc, From, #jid{lserver = LServer} = To,
?ITEMS_RESULT(Allow, LNode, {error, Err}); ?ITEMS_RESULT(Allow, LNode, {error, Err});
[<<"running nodes">>, _ENode, <<"DB">>] -> [<<"running nodes">>, _ENode, <<"DB">>] ->
?ITEMS_RESULT(Allow, LNode, {error, Err}); ?ITEMS_RESULT(Allow, LNode, {error, Err});
[<<"running nodes">>, _ENode, <<"modules">>] ->
?ITEMS_RESULT(Allow, LNode, {error, Err});
[<<"running nodes">>, _ENode, <<"modules">>, _] ->
?ITEMS_RESULT(Allow, LNode, {error, Err});
[<<"running nodes">>, _ENode, <<"backup">>] -> [<<"running nodes">>, _ENode, <<"backup">>] ->
?ITEMS_RESULT(Allow, LNode, {error, Err}); ?ITEMS_RESULT(Allow, LNode, {error, Err});
[<<"running nodes">>, _ENode, <<"backup">>, _] -> [<<"running nodes">>, _ENode, <<"backup">>, _] ->
@ -577,8 +563,6 @@ get_local_items({global, _Host},
{result, {result,
[?NODE(?T("Database"), [?NODE(?T("Database"),
<<"running nodes/", ENode/binary, "/DB">>), <<"running nodes/", ENode/binary, "/DB">>),
?NODE(?T("Modules"),
<<"running nodes/", ENode/binary, "/modules">>),
?NODE(?T("Backup Management"), ?NODE(?T("Backup Management"),
<<"running nodes/", ENode/binary, "/backup">>), <<"running nodes/", ENode/binary, "/backup">>),
?NODE(?T("Import Users From jabberd14 Spool Files"), ?NODE(?T("Import Users From jabberd14 Spool Files"),
@ -587,27 +571,10 @@ get_local_items({global, _Host},
<<"running nodes/", ENode/binary, "/restart">>), <<"running nodes/", ENode/binary, "/restart">>),
?NODE(?T("Shut Down Service"), ?NODE(?T("Shut Down Service"),
<<"running nodes/", ENode/binary, "/shutdown">>)]}; <<"running nodes/", ENode/binary, "/shutdown">>)]};
get_local_items({vhost, _Host},
[<<"running nodes">>, ENode], Server, Lang) ->
{result,
[?NODE(?T("Modules"),
<<"running nodes/", ENode/binary, "/modules">>)]};
get_local_items(_Host, get_local_items(_Host,
[<<"running nodes">>, _ENode, <<"DB">>], _Server, [<<"running nodes">>, _ENode, <<"DB">>], _Server,
_Lang) -> _Lang) ->
{result, []}; {result, []};
get_local_items(_Host,
[<<"running nodes">>, ENode, <<"modules">>], Server,
Lang) ->
{result,
[?NODE(?T("Start Modules"),
<<"running nodes/", ENode/binary, "/modules/start">>),
?NODE(?T("Stop Modules"),
<<"running nodes/", ENode/binary, "/modules/stop">>)]};
get_local_items(_Host,
[<<"running nodes">>, _ENode, <<"modules">>, _],
_Server, _Lang) ->
{result, []};
get_local_items(_Host, get_local_items(_Host,
[<<"running nodes">>, ENode, <<"backup">>], Server, [<<"running nodes">>, ENode, <<"backup">>], Server,
Lang) -> Lang) ->
@ -758,8 +725,6 @@ adhoc_local_commands(Acc, From,
case LNode of case LNode of
[<<"running nodes">>, _ENode, <<"DB">>] -> [<<"running nodes">>, _ENode, <<"DB">>] ->
?COMMANDS_RESULT(global, From, To, Request, Lang); ?COMMANDS_RESULT(global, From, To, Request, Lang);
[<<"running nodes">>, _ENode, <<"modules">>, _] ->
?COMMANDS_RESULT(LServer, From, To, Request, Lang);
[<<"running nodes">>, _ENode, <<"backup">>, _] -> [<<"running nodes">>, _ENode, <<"backup">>, _] ->
?COMMANDS_RESULT(global, From, To, Request, Lang); ?COMMANDS_RESULT(global, From, To, Request, Lang);
[<<"running nodes">>, _ENode, <<"import">>, _] -> [<<"running nodes">>, _ENode, <<"import">>, _] ->
@ -884,46 +849,6 @@ get_form(_Host, [<<"running nodes">>, ENode, <<"DB">>],
end end
end end
end; end;
get_form(Host,
[<<"running nodes">>, ENode, <<"modules">>, <<"stop">>],
Lang) ->
case search_running_node(ENode) of
false ->
Txt = ?T("No running node found"),
{error, xmpp:err_item_not_found(Txt, Lang)};
Node ->
case ejabberd_cluster:call(Node, gen_mod, loaded_modules, [Host]) of
{badrpc, Reason} ->
?ERROR_MSG("RPC call gen_mod:loaded_modules(~s) on node "
"~s failed: ~p", [Host, Node, Reason]),
{error, xmpp:err_internal_server_error()};
Modules ->
SModules = lists:sort(Modules),
Title = <<(tr(Lang, ?T("Stop Modules at ")))/binary,
ENode/binary>>,
Instr = tr(Lang, ?T("Choose modules to stop")),
Fs = lists:map(fun(M) ->
S = misc:atom_to_binary(M),
?XFIELD(boolean, S, S, <<"0">>)
end, SModules),
{result, #xdata{title = Title,
type = form,
instructions = [Instr],
fields = [?HFIELD()|Fs]}}
end
end;
get_form(_Host,
[<<"running nodes">>, ENode, <<"modules">>,
<<"start">>],
Lang) ->
{result,
#xdata{title = <<(tr(Lang, ?T("Start Modules at ")))/binary, ENode/binary>>,
type = form,
instructions = [tr(Lang, ?T("Enter list of {Module, [Options]}"))],
fields = [?HFIELD(),
?XFIELD('text-multi',
?T("List of modules to start"), <<"modules">>,
<<"[].">>)]}};
get_form(_Host, get_form(_Host,
[<<"running nodes">>, ENode, <<"backup">>, [<<"running nodes">>, ENode, <<"backup">>,
<<"backup">>], <<"backup">>],
@ -1196,65 +1121,6 @@ set_form(_From, _Host,
end, XData#xdata.fields), end, XData#xdata.fields),
{result, undefined} {result, undefined}
end; end;
set_form(_From, Host,
[<<"running nodes">>, ENode, <<"modules">>, <<"stop">>],
Lang, XData) ->
case search_running_node(ENode) of
false ->
Txt = ?T("No running node found"),
{error, xmpp:err_item_not_found(Txt, Lang)};
Node ->
lists:foreach(
fun(#xdata_field{var = Var, values = Vals}) ->
case Vals of
[<<"1">>] ->
Module = misc:binary_to_atom(Var),
ejabberd_cluster:call(Node, gen_mod, stop_module,
[Host, Module]);
_ -> ok
end
end, XData#xdata.fields),
{result, undefined}
end;
set_form(_From, Host,
[<<"running nodes">>, ENode, <<"modules">>,
<<"start">>],
Lang, XData) ->
case search_running_node(ENode) of
false ->
Txt = ?T("No running node found"),
{error, xmpp:err_item_not_found(Txt, Lang)};
Node ->
case xmpp_util:get_xdata_values(<<"modules">>, XData) of
[] ->
Txt = ?T("No 'modules' found in data form"),
{error, xmpp:err_bad_request(Txt, Lang)};
Strings ->
String = lists:foldl(fun (S, Res) ->
<<Res/binary, S/binary, "\n">>
end, <<"">>, Strings),
case erl_scan:string(binary_to_list(String)) of
{ok, Tokens, _} ->
case erl_parse:parse_term(Tokens) of
{ok, Modules} ->
lists:foreach(
fun ({Module, Args}) ->
ejabberd_cluster:call(
Node, gen_mod, start_module,
[Host, Module, Args])
end,
Modules),
{result, undefined};
_ ->
Txt = ?T("Parse failed"),
{error, xmpp:err_bad_request(Txt, Lang)}
end;
_ ->
Txt = ?T("Scan failed"),
{error, xmpp:err_bad_request(Txt, Lang)}
end
end
end;
set_form(_From, _Host, set_form(_From, _Host,
[<<"running nodes">>, ENode, <<"backup">>, [<<"running nodes">>, ENode, <<"backup">>,
<<"backup">>], <<"backup">>],