Repository: couchdb-setup Updated Branches: refs/heads/master 0a676fcdf -> 3304add80
hash admin passwords, more resilient port parsing Project: http://git-wip-us.apache.org/repos/asf/couchdb-setup/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-setup/commit/3304add8 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-setup/tree/3304add8 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-setup/diff/3304add8 Branch: refs/heads/master Commit: 3304add80963e265b80a342f650d4bb526a6c755 Parents: 0a676fc Author: Jan Lehnardt <[email protected]> Authored: Thu Nov 13 18:19:10 2014 +0100 Committer: Jan Lehnardt <[email protected]> Committed: Thu Nov 13 18:19:10 2014 +0100 ---------------------------------------------------------------------- src/setup.erl | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-setup/blob/3304add8/src/setup.erl ---------------------------------------------------------------------- diff --git a/src/setup.erl b/src/setup.erl index 85ebf79..6374685 100644 --- a/src/setup.erl +++ b/src/setup.erl @@ -78,8 +78,7 @@ enable_cluster_int(Options, no) -> {undefined, undefined} -> ok; {Username, Password} -> - % TODO check if this gets hashed - config:set("admins", binary_to_list(Username), binary_to_list(Password)) + maybe_set_admin(Username, Password) end, case NewBindAddress of @@ -99,6 +98,16 @@ enable_cluster_int(Options, no) -> io:format("~nEnable Cluster: ~p~n", [Options]). %cluster_state:set(enabled). +maybe_set_admin(Username, Password) -> + case couch_auth_cache:get_admin(Username) of + nil -> + HashedPassword = couch_passwords:hash_admin_password(Password), + config:set("admins", binary_to_list(Username), binary_to_list(HashedPassword)); + _Else -> + ok + end. + + finish_cluster() -> finish_cluster_int(has_cluster_system_dbs()). finish_cluster_int(ok) -> @@ -136,7 +145,8 @@ add_node_int(Options, ok) -> ], Host = proplists:get_value(host, Options), - Port = integer_to_binary(proplists:get_value(port, Options, 5984)), + Port = get_port(proplists:get_value(port, Options, 5984)), + Url = binary_to_list(<<"http://", Host/binary, ":", Port/binary, "/_cluster_setup">>), case ibrowse:send_req(Url, Headers, post, Body, RequestOptions) of @@ -148,6 +158,16 @@ add_node_int(Options, ok) -> Else end. +get_port(Port) when is_integer(Port) -> + integer_to_binary(Port); +get_port(Port) when is_list(Port) -> + list_to_binary(Port); +get_port(Port) when is_binary(Port) -> + Port; +get_port(Port) -> + {error, <<"invalid type for port">>}. + + create_node_doc(Host, Port) -> {ok, Db} = couch_db:open_int(<<"nodes">>, []), Name = get_name(Port),
