]> granicus.if.org Git - ejabberd/commitdiff
Allow clearing all ACL and access rules
authorMickael Remond <mremond@process-one.net>
Wed, 6 Apr 2016 12:48:05 +0000 (14:48 +0200)
committerMickael Remond <mremond@process-one.net>
Wed, 6 Apr 2016 16:13:08 +0000 (18:13 +0200)
src/acl.erl

index 0c1071d15a2170d3be3a7ebd4cd91c6bea4303ba..58b80b6ade61eda8319c748b5914bdeb396bc53e 100644 (file)
@@ -34,7 +34,7 @@
         match_rule/3, match_acl/3, transform_options/1,
         opt_type/1]).
 
--export([add_access/3]).
+-export([add_access/3, clear/0]).
 
 -include("ejabberd.hrl").
 -include("logger.hrl").
@@ -45,6 +45,7 @@
                  rules = [] :: [access_rule()]}).
 
 -type regexp() :: binary().
+-type iprange() :: {inet:ip_address(), integer()} | binary().
 -type glob() :: binary().
 -type access_name() :: atom().
 -type access_rule() :: {atom(), any()}.
@@ -63,7 +64,7 @@
                    {user_glob, {glob(), host()} | glob()} |
                    {server_glob, glob()} |
                    {resource_glob, glob()} |
-                   {ip, {inet:ip_address(), integer()}} |
+                   {ip, iprange()} |
                    {node_glob, {glob(), glob()}}.
 
 -type acl() :: #acl{aclname :: aclname(),
@@ -206,6 +207,12 @@ load_from_config() ->
                 end, AccessRules)
       end, Hosts).
 
+%% Delete all previous set ACLs and Access rules
+clear() ->
+    mnesia:clear_table(acl),
+    mnesia:clear_table(access),
+    ok.
+
 b(S) ->
     iolist_to_binary(S).