37 -- A nodestore supports the following methods: |
37 -- A nodestore supports the following methods: |
38 -- set(node_name, node_data) |
38 -- set(node_name, node_data) |
39 -- get(node_name) |
39 -- get(node_name) |
40 -- users(): iterator over (node_name) |
40 -- users(): iterator over (node_name) |
41 |
41 |
|
42 local max_max_items = module:get_option_number("pubsub_max_items", 256); |
|
43 |
|
44 local function tonumber_max_items(n) |
|
45 if n == "max" then |
|
46 return max_max_items; |
|
47 end |
|
48 return tonumber(n); |
|
49 end |
42 |
50 |
43 local node_store = module:open_store(module.name.."_nodes"); |
51 local node_store = module:open_store(module.name.."_nodes"); |
44 |
52 |
45 local function create_simple_itemstore(node_config, node_name) --> util.cache like object |
53 local function create_simple_itemstore(node_config, node_name) --> util.cache like object |
46 local driver = storagemanager.get_driver(module.host, "pubsub_data"); |
54 local driver = storagemanager.get_driver(module.host, "pubsub_data"); |
47 local archive = driver:open("pubsub_"..node_name, "archive"); |
55 local archive = driver:open("pubsub_"..node_name, "archive"); |
48 return lib_pubsub.archive_itemstore(archive, node_config, nil, node_name); |
56 local max_items = tonumber_max_items(node_config["max_items"]); |
|
57 return lib_pubsub.archive_itemstore(archive, max_items, nil, node_name); |
49 end |
58 end |
50 |
59 |
51 function simple_broadcast(kind, node, jids, item, actor, node_obj) |
60 function simple_broadcast(kind, node, jids, item, actor, node_obj) |
52 if node_obj then |
61 if node_obj then |
53 if node_obj.config["notify_"..kind] == false then |
62 if node_obj.config["notify_"..kind] == false then |
97 new_stanza.attr.to = jid; |
106 new_stanza.attr.to = jid; |
98 module:send(new_stanza); |
107 module:send(new_stanza); |
99 end |
108 end |
100 end |
109 end |
101 |
110 |
102 local max_max_items = module:get_option_number("pubsub_max_items", 256); |
|
103 function check_node_config(node, actor, new_config) -- luacheck: ignore 212/node 212/actor |
111 function check_node_config(node, actor, new_config) -- luacheck: ignore 212/node 212/actor |
104 if (new_config["max_items"] or 1) > max_max_items then |
112 if (tonumber_max_items(new_config["max_items"]) or 1) > max_max_items then |
105 return false; |
113 return false; |
106 end |
114 end |
107 if new_config["access_model"] ~= "whitelist" |
115 if new_config["access_model"] ~= "whitelist" |
108 and new_config["access_model"] ~= "open" then |
116 and new_config["access_model"] ~= "open" then |
109 return false; |
117 return false; |