diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-07-16 15:10:45 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-07-16 15:10:45 +0100 |
commit | e9e7b34db99c880ce1f24b6b3d04dd0a61462dfe (patch) | |
tree | 7cdd23919741f2f7be06696791393087f66ffac7 | |
parent | ed7bac60e1150960a169f5b280583d173c2497aa (diff) | |
parent | e21c59154e07a8c2fca2a03f57b92e16718006fa (diff) | |
download | prosody-e9e7b34db99c880ce1f24b6b3d04dd0a61462dfe.tar.gz prosody-e9e7b34db99c880ce1f24b6b3d04dd0a61462dfe.zip |
Merge Zash->trunk
-rw-r--r-- | tests/test_util_jid.lua | 11 | ||||
-rw-r--r-- | util/jid.lua | 13 |
2 files changed, 24 insertions, 0 deletions
diff --git a/tests/test_util_jid.lua b/tests/test_util_jid.lua index 5cc1390b..e91585bd 100644 --- a/tests/test_util_jid.lua +++ b/tests/test_util_jid.lua @@ -54,3 +54,14 @@ function bare(bare) assert_equal(bare("user@host/"), nil, "invalid JID is nil"); end +function compare(compare) + assert_equal(compare("host", "host"), true, "host should match"); + assert_equal(compare("host", "other-host"), false, "host should not match"); + assert_equal(compare("other-user@host/resource", "host"), true, "host should match"); + assert_equal(compare("other-user@host", "user@host"), false, "user should not match"); + assert_equal(compare("user@host", "host"), true, "host should match"); + assert_equal(compare("user@host/resource", "host"), true, "host should match"); + assert_equal(compare("user@host/resource", "user@host"), true, "user and host should match"); + assert_equal(compare("user@other-host", "host"), false, "host should not match"); + assert_equal(compare("user@other-host", "user@host"), false, "host should not match"); +end diff --git a/util/jid.lua b/util/jid.lua index ba9730fa..9128ce4e 100644 --- a/util/jid.lua +++ b/util/jid.lua @@ -78,4 +78,17 @@ function join(node, host, resource) return nil; -- Invalid JID end +function compare(jid, acl) + -- compare jid to single acl rule + -- TODO compare to table of rules? + local jid_node, jid_host, jid_resource = _split(jid); + local acl_node, acl_host, acl_resource = _split(acl); + if ((acl_node ~= nil and acl_node == jid_node) or acl_node == nil) and + ((acl_host ~= nil and acl_host == jid_host) or acl_host == nil) and + ((acl_resource ~= nil and acl_resource == jid_resource) or acl_resource == nil) then + return true + end + return false +end + return _M; |