UnifiedPush over XMPP - a specification - and implementation of Gateway and Distributor https://up.chat.sum7.eu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
genofire 612d577b21 fix validation of notifcation by sender/from address 1 month ago
..
README.md docs: fix typos 1 month ago
config_example.toml gateway: improve logging to be more privat 1 month ago
go.mod depends: update mellium.im/xmpp to main 1 month ago
go.sum depends: update mellium.im/xmpp to main 1 month ago
main.go gateway: add disco feature and identity 1 month ago
token.go docs: token definition 1 month ago
token_test.go gateway: fix test and depends 1 month ago
web.go implement JWT for anti spam 1 month ago
web_get.go ci: add test and woodpicker/droneCI support 1 month ago
web_post.go docs: fix typos 1 month ago
web_test.go ci: add test and woodpicker/droneCI support 1 month ago
xmpp.go docs: fix typos 1 month ago

README.md

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.

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 ;)