an XEP-0357 compatible XMPP component
C++ CMake
Latest commit 566bede Oct 5, 2015 Christian Ulrich fix bug which caused resending of old notifications

README.md

Oshiya

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.

Features

Oshiya will support these push services:

Currently only the GCM and APNS backends are usable. The Ubuntu backend is implemented but untested.

Prerequisites

  • libcurl 7.28.0 or later
  • expat
  • cmake 2.8 or later

Installation

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

Configuration

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"