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),

Reply via email to