From 206d127af74fb84c5eeedd1b5b82a73fa5f4bda9 Mon Sep 17 00:00:00 2001 From: Badlop Date: Tue, 12 Feb 2008 01:16:11 +0000 Subject: [PATCH] * src/web/ejabberd_web_admin.erl: Fixed native support for all the ACL types (EJAB-253) SVN Revision: 1186 --- ChangeLog | 3 +++ src/web/ejabberd_web_admin.erl | 29 ++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12e21ecbe..4efaee5fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-02-12 Badlop + * src/web/ejabberd_web_admin.erl: Fixed native support for all the + ACL types (EJAB-253) + * src/acl.erl: Normalize ACL before adding to the configuration tables (EJAB-521) diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl index cf87ea102..e2474920b 100644 --- a/src/web/ejabberd_web_admin.erl +++ b/src/web/ejabberd_web_admin.erl @@ -1014,7 +1014,7 @@ acl_spec_to_text({server, S}) -> {server, S}; acl_spec_to_text({user, U, S}) -> - {user_server, U ++ "@" ++ S}; + {user, U ++ "@" ++ S}; acl_spec_to_text({user_regexp, RU}) -> {user_regexp, RU}; @@ -1040,6 +1040,9 @@ acl_spec_to_text({server_glob, RS}) -> acl_spec_to_text({node_glob, RU, RS}) -> {node_glob, RU ++ "@" ++ RS}; +acl_spec_to_text(all) -> + {all, ""}; + acl_spec_to_text(Spec) -> {raw, term_to_string(Spec)}. @@ -1059,8 +1062,8 @@ acl_spec_select(ID, Opt) -> ?XAC("option", Sel ++ [{"value", atom_to_list(O)}], atom_to_list(O)) - end, [user, server, user_server, user_regexp, server_regexp, - node_regexp, user_glob, server_glob, node_glob, raw]))]). + end, [user, server, user_regexp, server_regexp, + node_regexp, user_glob, server_glob, node_glob, all, raw]))]). term_to_string(T) -> @@ -1119,31 +1122,39 @@ acl_parse_submit(ACLs, Query) -> NewACLs ++ NewACL. string_to_spec("user", Val) -> - {user, Val}; + string_to_spec2(user, Val); string_to_spec("server", Val) -> {server, Val}; -string_to_spec("user_server", Val) -> - #jid{luser = U, lserver = S, resource = ""} = jlib:string_to_jid(Val), - {user, U, S}; string_to_spec("user_regexp", Val) -> - {user_regexp, Val}; + string_to_spec2(user_regexp, Val); string_to_spec("server_regexp", Val) -> {server_regexp, Val}; string_to_spec("node_regexp", Val) -> #jid{luser = U, lserver = S, resource = ""} = jlib:string_to_jid(Val), {node_regexp, U, S}; string_to_spec("user_glob", Val) -> - {user_glob, Val}; + string_to_spec2(user_glob, Val); string_to_spec("server_glob", Val) -> {server_glob, Val}; string_to_spec("node_glob", Val) -> #jid{luser = U, lserver = S, resource = ""} = jlib:string_to_jid(Val), {node_glob, U, S}; +string_to_spec("all", _) -> + all; string_to_spec("raw", Val) -> {ok, Tokens, _} = erl_scan:string(Val ++ "."), {ok, NewSpec} = erl_parse:parse_term(Tokens), NewSpec. +string_to_spec2(ACLName, Val) -> + #jid{luser = U, lserver = S, resource = ""} = jlib:string_to_jid(Val), + case U of + "" -> + {ACLName, S}; + _ -> + {ACLName, U, S} + end. + acl_parse_delete(ACLs, Query) -> NewACLs =