aboutsummaryrefslogtreecommitdiff
path: root/src/acl.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/acl.erl')
-rw-r--r--src/acl.erl43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/acl.erl b/src/acl.erl
index 021e4e2d4..fdf397d88 100644
--- a/src/acl.erl
+++ b/src/acl.erl
@@ -5,7 +5,7 @@
%%% Created : 18 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%%
%%%
-%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
+%%% ejabberd, Copyright (C) 2002-2016 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -98,7 +98,7 @@ to_record(Host, ACLName, ACLSpec) ->
-spec add(binary(), aclname(), aclspec()) -> ok | {error, any()}.
add(Host, ACLName, ACLSpec) ->
- {ResL, BadNodes} = rpc:multicall(mnesia:system_info(running_db_nodes),
+ {ResL, BadNodes} = ejabberd_cluster:multicall(
?MODULE, add_local,
[Host, ACLName, ACLSpec]),
case lists:keyfind(aborted, 1, ResL) of
@@ -125,7 +125,7 @@ add_local(Host, ACLName, ACLSpec) ->
-spec add_list(binary(), [acl()], boolean()) -> ok | {error, any()}.
add_list(Host, ACLs, Clear) ->
- {ResL, BadNodes} = rpc:multicall(mnesia:system_info(running_db_nodes),
+ {ResL, BadNodes} = ejabberd_cluster:multicall(
?MODULE, add_list_local,
[Host, ACLs, Clear]),
case lists:keyfind(aborted, 1, ResL) of
@@ -167,16 +167,12 @@ add_list_local(Host, ACLs, Clear) ->
access_name(), [access_rule()]) -> ok | {error, any()}.
add_access(Host, Access, Rules) ->
- case mnesia:transaction(
- fun() ->
- mnesia:write(
- #access{name = {Access, Host},
- rules = Rules})
- end) of
- {atomic, ok} ->
- ok;
- Err ->
- {error, Err}
+ Obj = #access{name = {Access, Host}, rules = Rules},
+ case mnesia:transaction(fun() -> mnesia:write(Obj) end) of
+ {atomic, ok} ->
+ ok;
+ Err ->
+ {error, Err}
end.
-spec load_from_config() -> ok.
@@ -212,13 +208,13 @@ b(S) ->
iolist_to_binary(S).
nodeprep(S) ->
- jlib:nodeprep(b(S)).
+ jid:nodeprep(b(S)).
nameprep(S) ->
- jlib:nameprep(b(S)).
+ jid:nameprep(b(S)).
resourceprep(S) ->
- jlib:resourceprep(b(S)).
+ jid:resourceprep(b(S)).
normalize_spec(Spec) ->
case Spec of
@@ -239,8 +235,7 @@ normalize_spec(Spec) ->
{server_regexp, SR} -> {server_regexp, b(SR)};
{server_glob, S} -> {server_glob, b(S)};
{resource_glob, R} -> {resource_glob, b(R)};
- {ip, {Net, Mask}} ->
- {ip, {Net, Mask}};
+ {ip, {Net, Mask}} -> {ip, {Net, Mask}};
{ip, S} ->
case parse_ip_netmask(b(S)) of
{ok, Net, Mask} ->
@@ -298,11 +293,9 @@ match_acl(ACL, IP, Host) when tuple_size(IP) == 4;
is_ip_match(IP, Net, Mask);
(_) ->
false
- end,
- ets:lookup(acl, {ACL, Host}) ++
- ets:lookup(acl, {ACL, global}));
+ end, get_aclspecs(ACL, Host));
match_acl(ACL, JID, Host) ->
- {User, Server, Resource} = jlib:jid_tolower(JID),
+ {User, Server, Resource} = jid:tolower(JID),
lists:any(
fun(#acl{aclspec = Spec}) ->
case Spec of
@@ -350,8 +343,10 @@ match_acl(ACL, JID, Host) ->
false
end
end,
- ets:lookup(acl, {ACL, Host}) ++
- ets:lookup(acl, {ACL, global})).
+ get_aclspecs(ACL, Host)).
+
+get_aclspecs(ACL, Host) ->
+ ets:lookup(acl, {ACL, Host}) ++ ets:lookup(acl, {ACL, global}).
is_regexp_match(String, RegExp) ->
case ejabberd_regexp:run(String, RegExp) of