]> granicus.if.org Git - ejabberd/commitdiff
* src/acl.erl: Normalize ACL before adding to the configuration
authorBadlop <badlop@process-one.net>
Tue, 12 Feb 2008 01:04:47 +0000 (01:04 +0000)
committerBadlop <badlop@process-one.net>
Tue, 12 Feb 2008 01:04:47 +0000 (01:04 +0000)
tables (EJAB-521)

SVN Revision: 1185

ChangeLog
src/acl.erl

index cb88f36f5b6eeb554a20f5715eab041daf7998ed..12e21ecbe5c3dad93e94599ccd062945f57ded97 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-12  Badlop  <badlop@process-one.net>
+
+       * src/acl.erl: Normalize ACL before adding to the configuration
+       tables (EJAB-521)
+
 2008-02-11  Christophe Romain <christophe.romain@process-one.net>
 
        * src/mod_pubsub/mod_pubsub.erl: Bugfix: event used in place of x when
index ee26a5e422e9ae9766ad447b3ce974e1a385335e..c3fcebba4d955526e0ca2c27680c7f806f8e12df 100644 (file)
@@ -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) ->