]> granicus.if.org Git - ejabberd/commitdiff
When the Password attribute is missing in PIEFXIS file, don't check account auth.
authorBadlop <badlop@process-one.net>
Tue, 30 Nov 2010 22:55:33 +0000 (23:55 +0100)
committerBadlop <badlop@process-one.net>
Tue, 30 Nov 2010 23:55:09 +0000 (00:55 +0100)
src/ejabberd_piefxis.erl

index fbbaaba9f2476537b9702c0c39ee86d8ea99cc55..fb744b89a50ffcce8d8d0d8b084aacbc20c0b9d9 100644 (file)
@@ -196,35 +196,44 @@ process_element(El,State) ->
 add_user(El, Domain) ->
     User = exmpp_xml:get_attribute(El,name,none),
     Password = exmpp_xml:get_attribute(El,password,none),
-    add_user(El, Domain, ?BTL(User), ?BTL(Password)).
+    add_user(El, Domain, User, Password).
 
-%% @spec (El::xmlel(), Domain::string(), User::string(), Password::string())
+%% @spec (El::xmlel(), Domain::string(), User::binary(), Password::binary() | none)
 %%       -> ok | {error, ErrorText::string()}
 %% @doc Add a new user to the database.
 %% If user already exists, it will be only updated.
-add_user(El, Domain, User, Password) ->
+add_user(El, Domain, UserBinary, none) ->
+    User = ?BTL(UserBinary),
+    io:format("Account ~s@~s will not be created, updating it...~n",
+             [User, Domain]),
+    io:format(""),
+    populate_user_with_elements(El, Domain, User),
+    ok;
+add_user(El, Domain, UserBinary, PasswordBinary) ->
+    User = ?BTL(UserBinary),
+    Password = ?BTL(PasswordBinary),
     case create_user(User,Password,Domain) of
        ok ->
-           ok = exmpp_xml:foreach(
-                  fun(_,Child) ->
-                          populate_user(User,Domain,Child)
-                  end,
-                  El),
+           populate_user_with_elements(El, Domain, User),
            ok;
        {atomic, exists} ->
            io:format("Account ~s@~s already exists, updating it...~n",
                      [User, Domain]),
            io:format(""),
-           ok = exmpp_xml:foreach(
-                  fun(_,Child) ->
-                          populate_user(User,Domain,Child)
-                  end,
-                  El);
+           populate_user_with_elements(El, Domain, User),
+           ok;
        {error, Other} ->
            ?ERROR_MSG("Error adding user ~s@~s: ~p~n", [User, Domain, Other]),
            {error, Other}
     end.
 
+populate_user_with_elements(El, Domain, User) ->
+    exmpp_xml:foreach(
+      fun (_,Child) ->
+             populate_user(User,Domain,Child)
+      end,
+      El).
+
 %% @spec (User::string(), Password::string(), Domain::string())
 %%       -> ok | {atomic, exists} | {error, not_allowed}
 %% @doc  Create a new user