]> granicus.if.org Git - ejabberd/commitdiff
Improve access_commands option backward compatibility
authorAlexey Shchepin <alexey@process-one.net>
Mon, 19 Oct 2015 17:16:04 +0000 (20:16 +0300)
committerAlexey Shchepin <alexey@process-one.net>
Mon, 19 Oct 2015 17:16:04 +0000 (20:16 +0300)
src/ejabberd_commands.erl
src/ejabberd_xmlrpc.erl

index ba604a07d504bd0f8a011740a0a60e8a2a13601f..9f55035dd9eaef0559dd05995727a5b6a9ead096 100644 (file)
 -include("ejabberd.hrl").
 -include("logger.hrl").
 
+-define(POLICY_ACCESS, '$policy').
 
 init() ->
     ets:new(ejabberd_commands, [named_table, set, public,
@@ -483,7 +484,7 @@ check_auth(_Command, {User, Server, Password, _}) when is_binary(Password) ->
         _ -> throw({error, invalid_account_data})
     end.
 
-check_access(Command, all, _)
+check_access(Command, ?POLICY_ACCESS, _)
   when Command#ejabberd_commands.policy == open ->
     true;
 check_access(_Command, _Access, admin) ->
@@ -491,7 +492,7 @@ check_access(_Command, _Access, admin) ->
 check_access(_Command, _Access, {_User, _Server, _, true}) ->
     false;
 check_access(Command, Access, Auth)
-  when Access =/= all;
+  when Access =/= ?POLICY_ACCESS;
        Command#ejabberd_commands.policy == open;
        Command#ejabberd_commands.policy == user ->
     case check_auth(Command, Auth) of
@@ -503,6 +504,8 @@ check_access(Command, Access, Auth)
 check_access(_Command, _Access, _Auth) ->
     false.
 
+check_access2(?POLICY_ACCESS, _User, _Server) ->
+    true;
 check_access2(Access, User, Server) ->
     %% Check this user has access permission
     case acl:match_rule(Server, Access, jlib:make_jid(User, Server, <<"">>)) of
@@ -536,9 +539,11 @@ tag_arguments(ArgsDefs, Args) ->
       Args).
 
 
+get_access_commands(unrestricted) ->
+    [];
 get_access_commands(undefined) ->
     Cmds = get_commands(),
-    [{all, Cmds, []}];
+    [{?POLICY_ACCESS, Cmds, []}];
 get_access_commands(AccessCommands) ->
     AccessCommands.
 
index db109920cbd0f804bff258933c25bf1aa5465bd1..59a20d92c221108c0ffcee5b21f67a0b212fe449 100644 (file)
@@ -197,11 +197,14 @@ socket_type() -> raw.
 %% -----------------------------
 process(_, #request{method = 'POST', data = Data, opts = Opts}) ->
     AccessCommandsOpts = gen_mod:get_opt(access_commands, Opts,
-                                         fun(L) when is_list(L) -> L end,
+                                         fun(L) when is_list(L) -> L;
+                                            (unrestricted) -> unrestricted
+                                         end,
                                          undefined),
     AccessCommands =
         case AccessCommandsOpts of
             undefined -> undefined;
+            unrestricted -> unrestricted;
             _ ->
                 lists:flatmap(
                   fun({Ac, AcOpts}) ->
@@ -537,6 +540,8 @@ make_status(false) -> 1;
 make_status(error) -> 1;
 make_status(_) -> 1.
 
+transform_listen_option({access_commands, unrestricted} = Opt, Opts) ->
+    [Opt | Opts];
 transform_listen_option({access_commands, ACOpts}, Opts) ->
     NewACOpts = lists:map(
                   fun({AName, ACmds, AOpts}) ->