diff --git a/apps/consul_proxy/src/consul_proxy_app.erl b/apps/consul_proxy/src/consul_proxy_app.erl index dac6178b70c2d44c1d1967cc44eaa5894f41ddf9..bdd722d3669962df865197407742870285516c1c 100644 --- a/apps/consul_proxy/src/consul_proxy_app.erl +++ b/apps/consul_proxy/src/consul_proxy_app.erl @@ -44,7 +44,7 @@ start(_StartType, StartArgs) -> Dispatch = cowboyku_router:compile([ {'_', [ - {"/[:type]", consul_proxy_handler, []} + {"/api/cache/[:action]", consul_proxy_handler_cache, []} ]} ]), diff --git a/apps/consul_proxy/src/consul_proxy_handler.erl b/apps/consul_proxy/src/consul_proxy_handler_cache.erl similarity index 53% rename from apps/consul_proxy/src/consul_proxy_handler.erl rename to apps/consul_proxy/src/consul_proxy_handler_cache.erl index 070c6aa0ffebdf40b73cb0a5b644e90c28955cb1..fdf5f9106067141b240e2ff3149883a0ef6cedfc 100644 --- a/apps/consul_proxy/src/consul_proxy_handler.erl +++ b/apps/consul_proxy/src/consul_proxy_handler_cache.erl @@ -1,4 +1,4 @@ --module(consul_proxy_handler). +-module(consul_proxy_handler_cache). -export([init/3]). -export([handle/2]). -export([terminate/3]). @@ -11,14 +11,27 @@ init(_Transport, Req, Args) -> -spec handle(Req :: req(), State :: term()) -> {ok, req(), term()}. handle(Req, State) -> + {Method, Req1} = cowboyku_req:method(Req), + {Action, Req2} = cowboyku_req:binding(action, Req1, <<"default">>), + handle(Method, Action, Req2, State). + +-spec terminate(Reason :: term(), Req :: req(), State :: term()) -> ok. +terminate(_Reason, _Req, _State) -> + ok. + +handle(_Method, <<"purge">>, Req, State) -> Message = io_lib:format("Purging ~p items from cache", [consul_proxy_utils:cache_size()]), lager:info(Message), consul_proxy_utils:cache_purge(), - {ok, Req2} = cowboyku_req:reply(200, [ + {ok, Req1} = cowboyku_req:reply(200, [ {<<"content-type">>, <<"text/plain; charset=utf-8">>} ], Message, Req), - {ok, Req2, State}. + {ok, Req1, State}; --spec terminate(Reason :: term(), Req :: req(), State :: term()) -> ok. -terminate(_Reason, _Req, _State) -> - ok. +handle(Method, Action, Req, State) -> + Message = io_lib:format("Unhandled request, ~s ~s", [Method, Action]), + lager:warning(Message), + {ok, Req1} = cowboyku_req:reply(404, [ + {<<"content-type">>, <<"text/plain; charset=utf-8">>} + ], Message, Req), + {ok, Req1, State}. diff --git a/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl b/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl new file mode 100644 index 0000000000000000000000000000000000000000..aaad41624dbdd547d5ae9bd77de6be50f89e48f3 --- /dev/null +++ b/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl @@ -0,0 +1,6 @@ +-module(consul_proxy_middleware_hijack). +-behaviour(cowboyku_middleware). +-export([execute/2]). + +execute(Req, Env) -> + {ok, Req, Env}. diff --git a/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl b/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl index 6c26aaf07a7772f2638512a5bb4d6f7698bf1e16..f671a36c1f48cf156bb5603b9450c0b2582bb9fd 100644 --- a/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl +++ b/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl @@ -2,10 +2,6 @@ -behaviour(cowboyku_middleware). -export([execute/2]). --define(PBKDF2_SALT_LENGTH, 16). --define(PBKDF2_ITERATIONS, 4096). --define(PBKDF2_DERIVED_LENGTH, 32). - execute(Req, Env) -> Req1 = vegur_request_log:stamp(pre_redirect, Req), consul_proxy_utils:lookup_and_check(<<"redirects:">>, fun lookup_redirect/2, fun check_redirect/3, Req1, Env, true). diff --git a/test/defaults.consul b/test/defaults.consul index b8fd781bdeaec4996e6225850f8ac81b868895fe..d11fbabbef23e9e4a725ffd374ceeff3ba8a040c 100644 --- a/test/defaults.consul +++ b/test/defaults.consul @@ -6,3 +6,4 @@ consul_proxy/scripts/resolver-example.erl:e0NhcHR1cmUsX30gPSBjb3dib3lrdV9yZXE6bW consul_proxy/watchers/nodes:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== consul_proxy/watchers/services:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== consul_proxy/watchers/kv:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== +consul_proxy/hijackers:WwogICJoaWphY2tlcjowdEhWdFNhOThrSGkyZStkVHVWdHo3S3lYWTgzVys3cGZ6eEZYd2VKWUtualcxOXRSeHBVbFFSV1lYbGI4V21YIgpd