aboutsummaryrefslogtreecommitdiff
path: root/src/acl.erl
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2016-06-24 15:09:51 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2016-06-24 15:09:51 +0200
commitf56cff925c23e8205034ddef18e6dfece95fb01f (patch)
tree01d955af0dde7a47c1e2f599f90be7bdfed7cdae /src/acl.erl
parentUpdate dependencies for 16.06x (diff)
acl: ACLName rule should match if any part of ACLName matches
Diffstat (limited to 'src/acl.erl')
-rw-r--r--src/acl.erl12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/acl.erl b/src/acl.erl
index 95c9ebbd4..31a7547dd 100644
--- a/src/acl.erl
+++ b/src/acl.erl
@@ -371,6 +371,16 @@ all_acl_rules_matches2([Rule | Tail], Data, Host) ->
all_acl_rules_matches2([], _Data, _Host) ->
true.
+any_acl_rules_matches([], _Data, _Host) ->
+ false;
+any_acl_rules_matches([Rule|Tail], Data, Host) ->
+ case acl_rule_matches(Rule, Data, Host) of
+ true ->
+ true;
+ false ->
+ any_acl_rules_matches(Tail, Data, Host)
+ end.
+
-spec acl_rule_matches(aclspec(), any(), global|binary()) -> boolean().
acl_rule_matches(all, _Data, _Host) ->
@@ -380,7 +390,7 @@ acl_rule_matches({acl, all}, _Data, _Host) ->
acl_rule_matches({acl, Name}, Data, Host) ->
ACLs = get_aclspecs(Name, Host),
RawACLs = lists:map(fun(#acl{aclspec = R}) -> R end, ACLs),
- all_acl_rules_matches(RawACLs, Data, Host);
+ any_acl_rules_matches(RawACLs, Data, Host);
acl_rule_matches({ip, {Net, Mask}}, #{ip := {IP, _Port}}, _Host) ->
is_ip_match(IP, Net, Mask);
acl_rule_matches({ip, {Net, Mask}}, #{ip := IP}, _Host) ->