GSoC project XEP-0357 (Push) progress (5)

55 views
Skip to first unread message

Christian Ulrich

unread,
Aug 14, 2015, 6:38:25 AM8/14/15
to beam-co...@googlegroups.com
Hi all,
it's been a long time since I sent a report. There had been university
stuff to do and after that I somehow displaced writing reports. I'm
sorry about that. I'm currently working full time on the project so if
someone has questions, I'm in the gs...@conference.process-one.net muc
room.

I was mainly working on the XEP-0114 component and yesterday I finally
felt ready to push it to github:
https://github.com/royneary/oshiya

It can already be used as a replacement for mod_push's internal app
server. Until now I only used it as an ejabberd component but it should™
also work with other XMPP servers. Currently only GCM and Ubuntu
backends are implemented (Ubuntu still untested) but that should change
soon. Also service discovery is not implemented yet.

A pubsub service fulfilling XEP-0357's requirements is needed. These are
first of all whitelist access model and publish-only affiliation.
Furthermore these are the needed features not implemented in the current
ejabberd master (and other pubsub implementations AFAIK):

- publish-options
- a node owner's ability to configure a secret used as authentication
token for publishers

These are now implemented in my ejabberd branch [1]. Holger was awesome
and implemented publish-options in mod_pubsub [2] and I did the
secret-option part [3]. The latter required to add a non-standard node
option "pubsub#secret". I think it should be specified in XEP-0357 in
order to be no longer non-standard. Or maybe someone has a better idea?

An ejabberd implementation detail:
mod_push delivers an own node implementation called node_push. It must
be activated in mod_pubsub's configuration. In case mod_push's internal
app server is used the "virtual" nodetree must be used (no real nodes
are created, all the handling of published items and authentication is
done by mod_push). If an external app server like oshiya is used the
nodetree option must be set to "tree". mod_pubsub acts as a normal
pubsub service that notifies the app server on published items and -
thanks to node_push - does publisher authentication using the 'secret'
field in the publish-options.

While coding oshiya I thought again about some app server internals and
sometimes chose different logic than in mod_push. The next thing is to
bring these improvements to mod_push so both app servers behave in the
same way.
Furthermore there are many little changes on my todo-list, such as
deleting push registrations when a user deletes his XMPP-account.
Also I will go through the different push providers and implement error
handling. That is, when a push provider replies with an error condition
that is fatal for the push-enabled client (e.g. invalid token), the app
server will delete the registration.
I'll also try to write better documentation and I'll definitely focus on
that next week.

Christian

[1] https://github.com/royneary/ejabberd/tree/mod_push_adjustments
[2] https://github.com/royneary/ejabberd/commit/22f59ca8e1bf85c70fd4a420e89f0caee52ab37c
[3] https://github.com/royneary/ejabberd/commit/31588809bdc1d810900080b053d446ecacc0aaba

Reply all
Reply to author
Forward
0 new messages