aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2015-01-15 17:39:12 +0100
committerBadlop <badlop@process-one.net>2015-01-15 17:39:12 +0100
commit7690320f0f419c0c3b9c126a9ee760a38b51378c (patch)
tree84c0fe3f09eef8f0a0e4cd4ead463395f552a63a /src
parentGet rid of asn1rt calls (diff)
Fix access_commands option in ejabberd_xmlrpc, now it works
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_commands.erl9
-rw-r--r--src/ejabberd_http.erl3
-rw-r--r--src/ejabberd_xmlrpc.erl10
3 files changed, 13 insertions, 9 deletions
diff --git a/src/ejabberd_commands.erl b/src/ejabberd_commands.erl
index 6c8d0b921..c279f2d0f 100644
--- a/src/ejabberd_commands.erl
+++ b/src/ejabberd_commands.erl
@@ -399,7 +399,14 @@ check_auth({User, Server, Password}) ->
check_access(all, _) ->
true;
check_access(Access, Auth) ->
- {ok, User, Server} = check_auth(Auth),
+ case check_auth(Auth) of
+ {ok, User, Server} ->
+ check_access(Access, User, Server);
+ _ ->
+ false
+ end.
+
+check_access(Access, User, Server) ->
%% Check this user has access permission
case acl:match_rule(Server, Access, jlib:make_jid(User, Server, <<"">>)) of
allow -> true;
diff --git a/src/ejabberd_http.erl b/src/ejabberd_http.erl
index 9509038f5..289d54127 100644
--- a/src/ejabberd_http.erl
+++ b/src/ejabberd_http.erl
@@ -299,13 +299,16 @@ process_header(State, Data) ->
_ -> ok
end,
#state{sockmod = SockMod, socket = Socket,
+ options = State#state.options,
request_handlers = State#state.request_handlers};
_ ->
#state{end_of_request = true,
+ options = State#state.options,
request_handlers = State#state.request_handlers}
end;
_ ->
#state{end_of_request = true,
+ options = State#state.options,
request_handlers = State#state.request_handlers}
end.
diff --git a/src/ejabberd_xmlrpc.erl b/src/ejabberd_xmlrpc.erl
index b59001819..b1bd164a6 100644
--- a/src/ejabberd_xmlrpc.erl
+++ b/src/ejabberd_xmlrpc.erl
@@ -360,23 +360,17 @@ build_fault_response(Code, ParseString, ParseArgs) ->
FaultString = "Error " ++ integer_to_list(Code) ++ "\n"
++ lists:flatten(io_lib:format(ParseString, ParseArgs)),
?WARNING_MSG(FaultString, []),
- {false, {response, {fault, Code, FaultString}}}.
+ {false, {response, {fault, Code, list_to_binary(FaultString)}}}.
do_command(AccessCommands, Auth, Command, AttrL, ArgsF,
ResultF) ->
ArgsFormatted = format_args(AttrL, ArgsF),
- AuthBin = convert_auth(Auth),
Result =
- ejabberd_commands:execute_command(AccessCommands, AuthBin,
+ ejabberd_commands:execute_command(AccessCommands, Auth,
Command, ArgsFormatted),
ResultFormatted = format_result(Result, ResultF),
{command_result, ResultFormatted}.
-convert_auth(noauth) ->
- noauth;
-convert_auth({UserT, ServerT, PasswordT}) ->
- {list_to_binary(UserT), list_to_binary(ServerT), list_to_binary(PasswordT)}.
-
%%-----------------------------
%% Format arguments
%%-----------------------------