diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2016-06-24 15:09:51 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2016-06-24 15:09:51 +0200 |
commit | f56cff925c23e8205034ddef18e6dfece95fb01f (patch) | |
tree | 01d955af0dde7a47c1e2f599f90be7bdfed7cdae /src/acl.erl | |
parent | Update 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.erl | 12 |
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) -> |