Skip to main content

src/vpn_reload_http.erl

%%%-------------------------------------------------------------------
%% @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}.