# UnifiedPush over XMPP [![DroneCI](https://ci.sum7.eu/api/badges/genofire/unified-push-xmpp/status.svg?branch=main)](https://ci.sum7.eu/genofire/unified-push-xmpp) [![Go Report Card](https://goreportcard.com/badge/dev.sum7.eu/genofire/unified-push-xmpp)](https://goreportcard.com/report/dev.sum7.eu/genofire/unified-push-xmpp) [![Go Reference](https://pkg.go.dev/badge/dev.sum7.eu/genofire/unified-push-xmpp.svg)](https://pkg.go.dev/dev.sum7.eu/genofire/unified-push-xmpp) [UnifiedPush](https://unifiedpush.org/) is an specification how push notifications delieveries between application server and application. This is an implementation of the UnifiedPush specifications to delievere push notification over XMPP. In this project has following components: - **Gateway** (also called an Push Provider or [Server](https://unifiedpush.org/spec/server/)) which could be registered as an XMPP Component on an Server - **Distributor** for Linux using the [D-Bus Specification](https://unifiedpush.org/spec/dbus/) which implement an very small XMPP-Client to receive the push notifications ## XMPP Messages ### Register Request for Register ```xml pubic-token ``` **Responses** on success: ```xml https://an-endpoint-for-application-server.localhost/UP?token=endpoint-token ``` on failure: ```xml a reason of failure ``` ### Unregister TODO ### Notification For the push notification it-self the origin `` is used with following Position of Token and Content. ```xml public-token Here is the Notification content ``` The message sender `from` should be validated from distributor, for not receiving invalid or manipulated push Messages. ## Wordings We are using over the complete system three kind of **tokens**: - **Endpoint Token** which is part of the *Endpoint* and is for using between Gateway and Application-Server - **Public Token** which is used between Gateway and Distributor - **App Token** which is used between Distributor and Application