%%%-------------------------------------------------------------------
%% @doc Cowboy handler for dashboard configuration reload action.
%%%-------------------------------------------------------------------
-module(vpn_reload_http).
-export([init/2]).
init(Req0, State) ->
case cowboy_req:method(Req0) of
<<"POST">> ->
log_result(vpn_manager:reload_config()),
redirect(Req0, State);
_Other ->
Req = cowboy_req:reply(
405,
#{<<"allow">> => <<"POST">>},
Req0),
{ok, Req, State}
end.
log_result(#{failed := []}) ->
ok;
log_result(#{failed := Failed}) ->
logger:warning("vpn dashboard reload completed with failures: ~p", [Failed]);
log_result(Result) ->
logger:info("vpn dashboard reload completed: ~p", [Result]).
redirect(Req0, State) ->
Req = cowboy_req:reply(
303,
#{<<"location">> => <<"/admin">>},
Req0),
{ok, Req, State}.