Oshyia is an app server for mobile XMPP clients as specified in XEP-0357. As such it receives push notification contents from those clients' XMPP servers and forwards them to the popular push notification services, e.g. APNS. It is implemented as XMPP component (see XEP-0114).
Clients can register using adhoc commands. Oshiya aims to be compatible with mod_push concerning commands and app server behaviour. This allows XEP-0357-compatible clients using mod_push's internal app server on an ejabberd server or, as an alternative, any XEP-0114-compatible server running Oshiya.
Oshiya is part of a GSoC 2015 project. Please send feedback.
Oshiya will support these push services:
- APNS (Apple push notification service)
- GCM (Google cloud messaging)
- Mozilla SimplePush
- Ubuntu Push
- WNS (Windows notification service)
Currently only the GCM and APNS backends are usable. The Ubuntu backend is implemented but untested.
- libcurl 7.28.0 or later
- cmake 2.8 or later
git clone https://github.com/royneary/oshiya.git cd oshiya git submodule update --init --recursive mkdir build cd build # the config file path and the data storage location can be configured using cmake options cmake -DCONFIG_FILE="/etc/oshiya/oshiya.yml" -DSTORAGE_DIR="/var/run/oshiya/" .. make # no automatic file copying à la make install yet
currently there's only an example config (mod_push's configuration is similar, see README.md over there):
components: - host: "push.chatninja.org" server_host: "xmpp1.chatninja.org" port: 5237 password: "ABCDEF123456" pubsub_host: "pubsub.chatninja.org" backends: - type: gcm certfile: "/etc/ssl/chatninja.pem" app_name: "chatninja" auth_key: "sdfF73HFk_fdhj8JFjfzqALkdj81dfjhs0jdEkf" - type: ubuntu certfile: "/etc/ssl/chatninja.pem" app_name: "any" - host: "apple-push.chatninja.org" server_host: "xmpp2.chatninja.org" port: 5238 password: "POIUZT987654" pubsub_host: "pubsub.chatninja.org" backends: - type: apns certfile: "/etc/ssl/chatninja_apns.pem" app_name: "chatninja"
Pubsub service configuration
The pubsub service is where the XMPP servers publish the push notification contents. It has to fulfill XEP-0357's requirements. Here is how ejabberd having mod_pubsub and mod_push installed can be configured:
mod_pubsub: host : "pubsub.chatninja.org" nodetree : "tree" plugins: - "push"