From 7b308e0d41909e515ec42acfbd31167e7e4f617d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Wed, 15 Jun 2016 19:20:27 +0200 Subject: [PATCH] Add shorter version of some common access rules definitions This add conversion of - allow to - allow: all and - allow: acl_name to - allow: - acl: acl_name (this works also for deny, and number in shapers) --- src/acl.erl | 13 +++++++++---- test/acl_test.exs | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/acl.erl b/src/acl.erl index 57675112d..2864e4740 100644 --- a/src/acl.erl +++ b/src/acl.erl @@ -518,11 +518,16 @@ parse_ip_netmask(S) -> transform_access_rules_config(Config) -> lists:map(fun transform_access_rules_config2/1, lists:flatten(Config)). +transform_access_rules_config2(Type) when is_integer(Type); Type == allow; Type == deny -> + {Type, [all]}; +transform_access_rules_config2({Type, ACL}) when is_atom(ACL) -> + {Type, [{acl, ACL}]}; transform_access_rules_config2({Res, Rules}) when is_list(Rules) -> - {Res, lists:map(fun({Type, Args}) when is_list(Args) -> - normalize_spec({Type, hd(lists:flatten(Args))}); - (V) -> normalize_spec(V) - end, lists:flatten(Rules))}; + T = lists:map(fun({Type, Args}) when is_list(Args) -> + normalize_spec({Type, hd(lists:flatten(Args))}); + (V) -> normalize_spec(V) + end, lists:flatten(Rules)), + {Res, T}; transform_access_rules_config2({Res, Rule}) -> {Res, [Rule]}. diff --git a/test/acl_test.exs b/test/acl_test.exs index ab2ecb2a4..ccf518037 100644 --- a/test/acl_test.exs +++ b/test/acl_test.exs @@ -302,6 +302,31 @@ defmodule ACLTest do assert :acl.access_matches(rules, %{usr: {"user1", "server11", "res1"}}, :global) == :deny assert :acl.access_matches(rules, %{usr: {"user11", "server11", "res1"}}, :global) == :deny end + + test "transform_access_rules_config expands allow rule" do + assert :acl.transform_access_rules_config([:allow]) == [{:allow, [:all]}] + end + + test "transform_access_rules_config expands deny rule" do + assert :acl.transform_access_rules_config([:deny]) == [{:deny, [:all]}] + end + + test "transform_access_rules_config expands rule" do + assert :acl.transform_access_rules_config([100]) == [{100, [:all]}] + end + + test "transform_access_rules_config expands allow: rule" do + assert :acl.transform_access_rules_config([{:allow, :test1}]) == [{:allow, [{:acl, :test1}]}] + end + + test "transform_access_rules_config expands deny: rule" do + assert :acl.transform_access_rules_config([{:deny, :test1}]) == [{:deny, [{:acl, :test1}]}] + end + + test "transform_access_rules_config expands integer: rule" do + assert :acl.transform_access_rules_config([{100, :test1}]) == [{100, [{:acl, :test1}]}] + end + ## Checking ACL on both user pattern and IP ## ========================================