diff options
Diffstat (limited to 'src/acl.erl')
-rw-r--r-- | src/acl.erl | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/acl.erl b/src/acl.erl index ee26a5e42..c3fcebba4 100644 --- a/src/acl.erl +++ b/src/acl.erl @@ -48,12 +48,12 @@ start() -> ok. to_record(Host, ACLName, ACLSpec) -> - #acl{aclname = {ACLName, Host}, aclspec = ACLSpec}. + #acl{aclname = {ACLName, Host}, aclspec = normalize_spec(ACLSpec)}. add(Host, ACLName, ACLSpec) -> F = fun() -> mnesia:write(#acl{aclname = {ACLName, Host}, - aclspec = ACLSpec}) + aclspec = normalize_spec(ACLSpec)}) end, mnesia:transaction(F). @@ -75,7 +75,7 @@ add_list(Host, ACLs, Clear) -> aclspec = ACLSpec} -> mnesia:write( #acl{aclname = {ACLName, Host}, - aclspec = ACLSpec}) + aclspec = normalize_spec(ACLSpec)}) end end, ACLs) end, @@ -86,6 +86,17 @@ add_list(Host, ACLs, Clear) -> false end. +normalize(A) -> + jlib:nodeprep(A). +normalize_spec({A, B}) -> + {A, normalize(B)}; +normalize_spec({A, B, C}) -> + {A, normalize(B), normalize(C)}; +normalize_spec(all) -> + all; +normalize_spec(none) -> + none. + match_rule(global, Rule, JID) -> |