2.4 KiB
UnifiedPush over XMPP - gateway
The gateway is an XMPP Component and Webserver.
The Webserver receive notifications from application server by using an JWT-Token as Endpoint Token. The Signature JWT-Token is validated, so that only the Token generated by this gateway could be used (and no spaming over this Gateway is possible). The JWT-Token contains the XMPP-Address of the Distributor, so that this Gateway does not require to store anything. Current the JWT-Token is not encrypted like in [RFC 7516(https://tools.ietf.org/html/rfc7516) as an JWE we are working on it. So the XMPP-Address could be readed by Application-Server, Application and Distributor (and could be leaked there - we hope you could trust them till we implement JWE)
The XMPP Component implements XEP-0225 it could be plugged in at every common server (like ejabberd or Prosody) with an Secret and domain name.
XMPP Specials
Service Discovery XEP-0030
As Part of the XMPP-Component we implement the following result of an Service Discovery:
<iq type='result'
from='up.chat.sum7.eu'
id='iq-disco-request'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<identity
category='pubsub'
type='push'
name='Unified Push over XMPP'/>
<feature var='unifiedpush.org'/>
</query>
</iq
Install
How to configure this gateway take a look into the config_example.toml, we prefer it place it under /etc/up-gateway.conf
The Builded gateway
binary, we place it under /usr/local/bin/up-gateway
.
To get it running, we prefer following systemd.service
file under /etc/systemd/system/up-gateway.service
:
[Unit]
Description=UnifiedPush gateway
After=network.target
After=ejabberd.service
[Service]
Type=simple
ExecStart=/usr/local/bin/up-gateway -c /etc/up-gateway.conf
Restart=always
RestartSec=5sec
[Install]
WantedBy=multi-user.target
And run systemctl enable --now up-gateway.service
to startup and start at boot.
Demo Gateway
An Demo gateway is running under Endpoint-Address https://up.chat.sum7.eu/UP and under the XMPP-Address (jid of component) xmpp:up.chat.sum7.eu. Have fun by using it ;)