Mercurial > prosody-modules
diff mod_blocking/mod_blocking.lua @ 176:26bb69a57749
mod_blocking: Ensure that a JID can be in the blocklist at most once, and have helper functions return true/false on success/error
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 14 Jun 2010 12:25:53 +0100 |
parents | 92a72435721a |
children | bcd7dc51a5e3 |
line wrap: on
line diff
--- a/mod_blocking/mod_blocking.lua Mon Jun 14 01:04:58 2010 +0500 +++ b/mod_blocking/mod_blocking.lua Mon Jun 14 12:25:53 2010 +0100 @@ -21,7 +21,11 @@ local items = default_list.items; local order = items[1] and items[1].order or 0; -- Must come first for i=1,#items do -- order must be unique - items[i].order = items[i].order + 1; + local item = items[i]; + item.order = item.order + 1; + if item.type == "jid" and item.action == "deny" and item.value == jid then + return false; + end end table.insert(items, 1, { type = "jid" , action = "deny" @@ -33,6 +37,7 @@ , order = order }); datamanager.store(username, host, "privacy", privacy_lists); + return true; end -- Remove JID from default privacy list @@ -43,15 +48,19 @@ local default_list = privacy_lists.lists[default_list_name]; if not default_list then return; end local items = default_list.items; - local item; + local item, removed = nil, false; for i=1,#items do -- order must be unique item = items[i]; if item.type == "jid" and item.action == "deny" and item.value == jid then table.remove(items, i); - return true; + removed = true; + break; end end - datamanager.store(username, host, "privacy", privacy_lists); + if removed then + datamanager.store(username, host, "privacy", privacy_lists); + end + return removed; end function remove_all_blocked_jids(username, host) @@ -69,6 +78,7 @@ end end datamanager.store(username, host, "privacy", privacy_lists); + return true; end function get_blocked_jids(username, host)