summaryrefslogtreecommitdiff
path: root/src/ldapsp_realm.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldapsp_realm.erl')
-rw-r--r--src/ldapsp_realm.erl41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/ldapsp_realm.erl b/src/ldapsp_realm.erl
new file mode 100644
index 0000000..4052c2a
--- /dev/null
+++ b/src/ldapsp_realm.erl
@@ -0,0 +1,41 @@
+-module(ldapsp_realm).
+-export([
+ allowed_methods/2,
+ content_types_provided/2,
+ init/1,
+ process_post/2,
+ routes/0
+]).
+
+-include_lib("webmachine/include/webmachine.hrl").
+
+-spec init(list()) -> {ok, term()}.
+init([]) ->
+ {ok, undefined}.
+
+allowed_methods(RD, Ctx) ->
+ {['POST'], RD, Ctx}.
+
+%% @doc Return the routes this module should respond to.
+routes() ->
+ [{["realm", realm], ?MODULE, []}].
+
+
+content_types_provided(RD, Ctx) ->
+ {[ {"text/html", unused},
+ {"application/json", unused} ],
+ RD, Ctx}.
+
+%% /realm/:realm/
+process_post(RD, Ctx) ->
+ Realm = wrq:path_info(realm, RD),
+
+ Params = mochiweb_util:parse_qs(wrq:req_body(RD)),
+ ldapsp_log:debug("Params: ~p~n", [Params]),
+ Hostname = proplists:get_value("hostname", Params),
+ Class = proplists:get_value("userclass", Params),
+ Rebuild = proplists:get_value("rebuild", Params, false),
+ ldapsp_log:info("Create host: Realm ~p, Hostname ~p, Class: ~p, Rebuild: ~p~n", [Realm, Hostname, Class, Rebuild]),
+ Resp = ldapsp_proxy:add_host(Hostname, Class, Realm),
+ Json = mochijson2:encode(Resp),
+ {true, wrq:set_resp_body(Json, RD), Ctx}.