plugins/mod_pep.lua
changeset 3130 80e630e60f06
parent 2925 692b3c6c5bd2
child 3132 4d2251242ac1
equal deleted inserted replaced
3129:125f03db0b1a 3130:80e630e60f06
    14 local user_exists = require "core.usermanager".user_exists;
    14 local user_exists = require "core.usermanager".user_exists;
    15 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed;
    15 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed;
    16 local pairs, ipairs = pairs, ipairs;
    16 local pairs, ipairs = pairs, ipairs;
    17 local next = next;
    17 local next = next;
    18 local type = type;
    18 local type = type;
    19 local load_roster = require "core.rostermanager".load_roster;
       
    20 local sha1 = require "util.hashes".sha1;
    19 local sha1 = require "util.hashes".sha1;
    21 local base64 = require "util.encodings".base64.encode;
    20 local base64 = require "util.encodings".base64.encode;
    22 
    21 
    23 local NULL = {};
    22 local NULL = {};
    24 local data = {};
    23 local data = {};
    38 module:add_feature("http://jabber.org/protocol/pubsub#publish");
    37 module:add_feature("http://jabber.org/protocol/pubsub#publish");
    39 
    38 
    40 local function subscription_presence(user_bare, recipient)
    39 local function subscription_presence(user_bare, recipient)
    41 	local recipient_bare = jid_bare(recipient);
    40 	local recipient_bare = jid_bare(recipient);
    42 	if (recipient_bare == user_bare) then return true end
    41 	if (recipient_bare == user_bare) then return true end
    43 	local item = load_roster(jid_split(user_bare))[recipient_bare];
    42 	local username, host = jid_split(user_bare);
    44 	return item and (item.subscription == 'from' or item.subscription == 'both');
    43 	return is_contact_subscribed(username, host, recipient_bare);
    45 end
    44 end
    46 
    45 
    47 local function publish(session, node, id, item)
    46 local function publish(session, node, id, item)
    48 	item.attr.xmlns = nil;
    47 	item.attr.xmlns = nil;
    49 	local disable = #item.tags ~= 1 or #item.tags[1] == 0;
    48 	local disable = #item.tags ~= 1 or #item.tags[1] == 0;