mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-14 22:00:16 +02:00
Allow @ inside acl user{,_glob,_regexp} to pass both user and server in single string
This commit is contained in:
parent
9e68c4c0d9
commit
e81302dc79
16
src/acl.erl
16
src/acl.erl
|
@ -234,20 +234,28 @@ nameprep(S) ->
|
||||||
resourceprep(S) ->
|
resourceprep(S) ->
|
||||||
jid:resourceprep(b(S)).
|
jid:resourceprep(b(S)).
|
||||||
|
|
||||||
|
split_user_server(Str, NormFunUsr, NormFunSrv) ->
|
||||||
|
case binary:split(Str, <<"@">>) of
|
||||||
|
[U, S] ->
|
||||||
|
{NormFunUsr(U), NormFunSrv(S)};
|
||||||
|
_ ->
|
||||||
|
NormFunUsr(Str)
|
||||||
|
end.
|
||||||
|
|
||||||
normalize_spec(Spec) ->
|
normalize_spec(Spec) ->
|
||||||
case Spec of
|
case Spec of
|
||||||
all -> all;
|
all -> all;
|
||||||
none -> none;
|
none -> none;
|
||||||
{acl, N} -> {acl, N};
|
{acl, N} -> {acl, N};
|
||||||
{user, {U, S}} -> {user, {nodeprep(U), nameprep(S)}};
|
{user, {U, S}} -> {user, {nodeprep(U), nameprep(S)}};
|
||||||
{user, U} -> {user, nodeprep(U)};
|
{user, U} -> {user, split_user_server(U, fun nodeprep/1, fun nameprep/1)};
|
||||||
{shared_group, {G, H}} -> {shared_group, {b(G), nameprep(H)}};
|
{shared_group, {G, H}} -> {shared_group, {b(G), nameprep(H)}};
|
||||||
{shared_group, G} -> {shared_group, b(G)};
|
{shared_group, G} -> {shared_group, split_user_server(G, fun b/1, fun nameprep/1)};
|
||||||
{user_regexp, {UR, S}} -> {user_regexp, {b(UR), nameprep(S)}};
|
{user_regexp, {UR, S}} -> {user_regexp, {b(UR), nameprep(S)}};
|
||||||
{user_regexp, UR} -> {user_regexp, b(UR)};
|
{user_regexp, UR} -> {user_regexp, split_user_server(UR, fun b/1, fun nameprep/1)};
|
||||||
{node_regexp, {UR, SR}} -> {node_regexp, {b(UR), b(SR)}};
|
{node_regexp, {UR, SR}} -> {node_regexp, {b(UR), b(SR)}};
|
||||||
{user_glob, {UR, S}} -> {user_glob, {b(UR), nameprep(S)}};
|
{user_glob, {UR, S}} -> {user_glob, {b(UR), nameprep(S)}};
|
||||||
{user_glob, UR} -> {user_glob, b(UR)};
|
{user_glob, UR} -> {user_glob, split_user_server(UR, fun b/1, fun nameprep/1)};
|
||||||
{node_glob, {UR, SR}} -> {node_glob, {b(UR), b(SR)}};
|
{node_glob, {UR, SR}} -> {node_glob, {b(UR), b(SR)}};
|
||||||
{server, S} -> {server, nameprep(S)};
|
{server, S} -> {server, nameprep(S)};
|
||||||
{resource, R} -> {resource, resourceprep(R)};
|
{resource, R} -> {resource, resourceprep(R)};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user