JEP-0163 support for ejabberd
I once started to hack JEP-0163 (PEP) support to ejabberd. My
approach was, I thought, the simplest possible: my mod_pep would act
as a wrapper to mod_pubsub. Node foo of user@example.com is really
node pep/example.com/user/foo at pubsub.example.com.
Then I started over. In the new version, I integrate everything in
mod_pubsub, with a separate database table for PEP nodes.
At the same time I try to bring mod_pubsub up to date with recent
revisions of JEP-0060.
The code
The code is available in the pep module in the ejabberd-modules tree.
There are two versions, one for ejabberd 1.1.2 and one for SVN trunk.
jabber.se is now running with these changes. Feel free to try it.
There is a proposed extension to PEP, configure-on-publish. Try
this patch. It is running on bazarhoff.cd.chalmers.se.
Contact
See page footer. You can also write bug reports and similar things at
Bugzilla at jabber.ru, product "ejabberd", component "PEP". No
deviation from the spec is too insignificant to report.
Changelog
- 2007-06-17: Added broadcasting of retract and delete events.
- 2007-02-04: Avoid quadratic space complexity in pubsub_presence
table. Really implement capabilities-based delivery.
- 2006-11-10: Implemented most of entity capabilities, I hope. (not
tested at all)
- 2006-10-24: Identity
pubsub/pep now reported for accounts.
- 2006-10-12: Start hacking Entity Capabilities support. Make
mod_pubsub restart on errors.
- 2006-07-31: Fix delivery of published items to subscribers. Lesson
learnt: pay attention to Erlang operator priorities. Presence-based
delivery still doesn't handle multiple resources properly, but should
be good enough for the time being.
- 2006-07-27: Redo presence tracking. Implement presence-based
notifications properly. Report features correctly for standalone
component. Random compliance fixes.
- 2006-07-26: Update PEP for changes in 0.11 revision. Start hacking
owner's affiliation and subscription commands. Handle presence with
negative priority correctly. Handle "authorize" access model (not for
PEP).
- 2006-07-14: Fix previous change
- 2006-07-11: Support configuration on node creation.
- 2006-07-02: When a subscriber of a PEP node sends available presence,
the last item is resent. Implemented disco#items for PEP nodes.
- 2006-07-01: Implemented "subscriptions" and "affiliations" requests
(sections 5.6 and 5.7). Updated result from "subscribe" from "entity"
to "subscription".
JEP crossreference
Here I try to document what is done and what is missing with regards
to standards compliance. Please report any errors in this list.
It should be emphasized that this section tells what the code looks
like. That is, it only tells to what extent the implementation has
been proven correct, not to what extent it has been tested.
See crossreferences to JEP-0060 and JEP-0163.