aboutsummaryrefslogtreecommitdiffstats
path: root/util/pubsub.lua
Commit message (Collapse)AuthorAgeFilesLines
* util.pubsub: Add method returning subset of config as metadataKim Alvefur11 days1-0/+19
| | | | | | Allows granting read only access to other sets of users using a separate access control capability, which makes sense as some properties may be intended to be public but read-only.
* mod_pubsub: Move precondition error wrangling out of util.pubsubKim Alvefur2024-10-291-6/+1
| | | | | | | | | Removes dependency on util.error from util.pubsub which was only used for this one special case. Line count reduction! Would be even nicer if templating could be done by util.error itself.
* mod_pep: Implement 'roster' (group) access_modelKim Alvefur2023-12-031-1/+1
| | | | | | | Allows e.g. restricting your vcard4 to only family or similar. Notes: This does not include roster groups in the configuration form, so the client will have to get them from the actual roster.
* util: Prefix module imports with prosody namespaceKim Alvefur2023-03-171-3/+3
|
* util.pubsub: Fix item store resize to "max"Kim Alvefur2022-01-061-1/+6
| | | | | Previously this would end up passing the "max" directly to the underlying storage.
* mod_pubsub,mod_pep: Implement 'send_last_published_item' option #1436Kim Alvefur2021-10-191-0/+1
| | | | | | | | Default left as 'never' in mod_pubsub to preserve the previous behavior. Unclear if this is desirable, but can always be changed later. In mod_pep this allows turning off the automatic resending of most recent item.
* util.pubsub: Add support for limiting number of items to retrieveKim Alvefur2021-09-051-1/+6
| | | | | Hopefully this will eventually be upgraded to RSM, which is why the argument is called 'resultspec' and is a table.
* util.pubsub: Signal that 'persistent-items' is unsupported when disabledKim Alvefur2021-07-221-3/+4
| | | | | | XEP-0060 says that this the way to indicate that 'persistent-items' is unsupported, but doesn't explicitly say if it being disabled in the node configuration also counts as unsupported.
* util.pubsub: Fix behavior of persist_items disabledKim Alvefur2021-07-221-7/+22
| | | | | | | | | | | | | When set to 'false' there is no need for a persistence interface at all, since items are not persisted after being broadcast. Had started wondering if maybe the behavior was wrong, after reading parts of XEP-0060 that pointed in that direction. Some discussion of this can be found in logs of xmpp:xsf@muc.xmpp.org?join from around 2021-07-20 Thanks to Ralph for confirming.
* mod_pubsub: Explicitly enable persistence by default to preserve behaviorKim Alvefur2021-07-211-1/+1
| | | | | | Since nodes were always persistent according to the XEP-0060 definition. Whether data is stored in memory or on disk was not what this setting was meant for.
* util.pubsub: Handle absence of node data interfaceKim Alvefur2021-07-211-17/+32
| | | | | | | | This is in preparation for fixing the behavior of 'persist_items', which was misunderstood at some point. In mod_pep it toggles between persistent storage and in-memory storage, while the correct behavior would be to toggle whether published items are stored at all or forgotten after being broadcast.
* Merge 0.11->trunkKim Alvefur2021-05-161-0/+4
|\
| * util.pubsub: Fix traceback if node data not initializedKim Alvefur2021-05-161-0/+4
| | | | | | | | | | This should not be possible, but a traceback indicating node_data being nil here was reported by Ron in the chat.
* | util.pubsub: Silence luacheck warnings, leaving notes on future proper fixKim Alvefur2019-12-231-5/+10
| |
* | Merge 0.11->trunkKim Alvefur2019-12-231-4/+10
|\|
| * util.pubsub: Pass subscribers trough a filter callbackKim Alvefur2019-06-061-0/+2
| |
| * util.pubsub: Factor out calling of broadcasterKim Alvefur2019-06-061-4/+8
| | | | | | | | This will simplify doing things along with broadcasting.
* | util.pubsub, pubsub.lib and tests: Add text to precondition-not-met error ↵Matthew Wild2019-10-271-3/+9
|/ | | | (fixes #1455)
* util.pubsub: Validate node configuration on node creation (fixes #1328)Kim Alvefur2019-03-031-1/+10
|
* util.pubsub: Add support for requesting multiple specific items (needed for ↵Kim Alvefur2019-01-281-8/+13
| | | | #1305)
* util.pubsub: Restore subscription index from stored data (fixes #1281)Kim Alvefur2018-12-291-0/+14
|
* util.pubsub: Clarify comment about return valueKim Alvefur2018-10-211-1/+1
|
* util.pubsub: Allow publishing with a config that should be used as defaults onlyMatthew Wild2018-10-181-4/+7
|
* util.pubsub: Expand comment on return type from get_itemsKim Alvefur2018-09-011-1/+1
|
* util.pubsub: Explicitly add all capabilities to the 'outcast' affiliation ↵Kim Alvefur2018-08-311-0/+16
| | | | for completeness
* util.pubsub: Comments describing the return values of methodsKim Alvefur2018-08-221-19/+19
|
* util.pubsub: Add 'service' field to all eventsMatthew Wild2018-08-271-7/+7
|
* util.pubsub: Remove unused argumentKim Alvefur2018-08-211-1/+1
| | | | I think this was probably a copy-paste mistake.
* util.pubsub: Fire item-published/<node> to allow for easier handling of ↵Matthew Wild2018-08-191-1/+3
| | | | per-node items
* util.pubsub, pubsub.lib: Improve error on attempt to publish invalid itemMatthew Wild2018-08-181-1/+1
|
* Pubsub: Add tests for :get_last_item() and fix for non-persistent nodesMatthew Wild2018-08-181-1/+1
|
* util.pubsub: Fix whitespace [luacheck]Matthew Wild2018-08-181-1/+1
|
* Backed out changeset 27d800ddc3b0 (see below)Matthew Wild2018-08-181-2/+2
| | | | | | | | | It's uncertain whether item not existing should be success and nil, or fail with an error. XEP-0060's "fetch most recent item" actually fetches a list of up to N items. N here is a maximum, not a minimum. The feeling is that no items is simply an empty list, not a failure of the operation.
* util.pubsub: get_last_item(): Fail with item-not-found if no item yet publishedMatthew Wild2018-08-181-2/+2
|
* util.pubsub: get_last_item(): Return error if node does not existMatthew Wild2018-08-181-0/+6
|
* pubsub.lib, util.pubsub: Move precondition checks to util.pubsubMatthew Wild2018-08-181-2/+17
|
* util.pubsub: Add comment to clarify return valuesMatthew Wild2018-08-181-0/+1
|
* util.pubsub: Pass "retract" as the type of such broadcastsKim Alvefur2018-08-161-1/+1
| | | | | | | | This moves some XEP-0060 awkwardness out of util.pubsub and into mod_pubsub A retraction is broadcast in an <items> container, whereas most other kinds of broadcasts are in a container with a name matching the 'kind' attribute.
* util.pubsub: Allow outcasts to get their subscription statusMatthew Wild2018-08-121-0/+2
|
* util.pubsub: For open nodes, default affiliation is "member"Matthew Wild2018-08-091-1/+1
| | | | | | | | | This allows entities without an explicit affiliation to retrieve items, which is specified by the XEP. Table 6: "Node Access Models" states that for 'open' nodes, "any entity may retrieve items from the node". See also discussion at: https://mail.jabber.org/pipermail/standards/2018-August/035320.html
* mod_pep, util.pubsub: Rename restricted->outcast, none->member and add new ↵Matthew Wild2018-08-081-2/+24
| | | | 'none' affiliation to better match XEP-0060
* mod_pubsub, mod_pep, util.pubsub: Move capability definitions into ↵Matthew Wild2018-08-081-1/+77
| | | | util.pubsub to avoid duplication
* util.pubsub: Include node defaults from current service objectKim Alvefur2018-08-071-0/+3
|
* util.pubsub: Re-check all subscriptions on access_model change, ↵Kim Alvefur2018-08-061-0/+12
| | | | unsubscribing those no longer allowed
* util.pubsub: Add support for publish_model config optionMatthew Wild2018-08-061-1/+14
|
* util.pubsub: Apply defaults metatable before config check (thanks pep.)Kim Alvefur2018-08-051-1/+3
| | | | | Makes it so that the callback sees the default if it’s not in the form, which makes it easier to validate.
* util.pubsub: Add method to retrieve node configurationMatthew Wild2018-08-041-0/+21
|
* util.pubsub: Use service.node_defaults in case config.node_defaults was not ↵Matthew Wild2018-08-041-1/+1
| | | | provided (thanks jonasw)
* util.pubsub: Tweak default affiliation of access models (fixes failing test)Matthew Wild2018-08-041-2/+2
| | | | | | | | | | | 11:56:59 MattJ> Someone who has the ability to subscribe does not have the "subscriber" affiliation until they actually subscribe, they just have the normal "none" affiliation (which has permission to subscribe) 11:58:05 MattJ> However if the access model is whitelist, then anyone not on the whitelist has an implicit negative affiliation, which we don't currently have, so I just named "restricted" 11:58:16 MattJ> Since it doesn't exist in any code yet, it has no permissions
* util.pubsub: Look for a configured callback for more complicated access modelsKim Alvefur2018-08-041-0/+10
|