All Projects → matrix-org → sygnal

matrix-org / sygnal

Licence: Apache-2.0 license
Sygnal: reference Push Gateway for Matrix

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to sygnal

SCNMathExtensions
Math extensions for SCNVector3, SCNQuaternion, SCNMatrix4
Stars: ✭ 32 (-71.93%)
Mutual labels:  matrix
matrix-alertmanager
A bot to receive Alertmanager webhook events and forward them to chosen rooms.
Stars: ✭ 49 (-57.02%)
Mutual labels:  matrix
LinAlg
实现一个线性代数库,为Python写扩展。《程序猿的数学3 线性代数》读后笔记
Stars: ✭ 17 (-85.09%)
Mutual labels:  matrix
abacus
📐 C# cross precision 3D maths library.
Stars: ✭ 35 (-69.3%)
Mutual labels:  matrix
telegram
A Matrix-Telegram hybrid puppeting/relaybot bridge
Stars: ✭ 914 (+701.75%)
Mutual labels:  matrix
radical
Element (Riot Web) unofficially bundled as Firefox Add-on
Stars: ✭ 33 (-71.05%)
Mutual labels:  matrix
ligh7hau5
A Matrix (https://matrix.org/docs/spec/) to Fediverse / ActivityPub client / bridge. Also, some media proxying.
Stars: ✭ 26 (-77.19%)
Mutual labels:  matrix
Mathematics for Machine Learning
Learn mathematics behind machine learning and explore different mathematics in machine learning.
Stars: ✭ 28 (-75.44%)
Mutual labels:  matrix
Mathematics for Machine Learning
Notes and step-by-step exercises resolution to aid students learning the base math for machine learning. Content summed up from the the course from the Imperial London College in Coursera.
Stars: ✭ 44 (-61.4%)
Mutual labels:  matrix
sparse
Sparse matrix formats for linear algebra supporting scientific and machine learning applications
Stars: ✭ 136 (+19.3%)
Mutual labels:  matrix
Matrix-EmailBridge
A bridge written in Golang to receive and write emails in matrix
Stars: ✭ 101 (-11.4%)
Mutual labels:  matrix
matrix.js
Where Matrices become heroes together
Stars: ✭ 31 (-72.81%)
Mutual labels:  matrix
rezonator2
Laser resonator calculation tool
Stars: ✭ 32 (-71.93%)
Mutual labels:  matrix
matrix-chart
Helm chart for deploying a Matrix homeserver stack
Stars: ✭ 83 (-27.19%)
Mutual labels:  matrix
GenericTensor
The only library allowing to create Tensors (matrices extension) with custom types
Stars: ✭ 42 (-63.16%)
Mutual labels:  matrix
signin-with-matrix
Federated sign-in component for your web app (using Matrix)
Stars: ✭ 207 (+81.58%)
Mutual labels:  matrix
chooj
Matrix chat app for KaiOS supporting voice calls
Stars: ✭ 44 (-61.4%)
Mutual labels:  matrix
N-Matrix-Programmer
A software to write an optimized code that calculates inverse and determinant of N by N matrix.
Stars: ✭ 35 (-69.3%)
Mutual labels:  matrix
Candb
Generate CAN dbc file with OEM defined CAN matrix (*.xls).
Stars: ✭ 36 (-68.42%)
Mutual labels:  matrix
matrix-fx
Matrix (movie) digital rain effect using CSS3
Stars: ✭ 29 (-74.56%)
Mutual labels:  matrix

Introduction

Sygnal is a reference Push Gateway for Matrix.

See https://spec.matrix.org/latest/push-gateway-api/#overview for a high level overview of how notifications work in Matrix.

The Matrix Specification describes the protocol that Matrix Home Servers use to send notifications to Push Gateways such as Sygnal.

Contributing

Looking to contribute to Sygnal? See CONTRIBUTING.md

Setup

Sygnal is configured through a YAML configuration file. By default, this configuration file is assumed to be named sygnal.yaml and to be in the working directory. To change this, set the SYGNAL_CONF environment variable to the path to your configuration file. A sample configuration file is provided in this repository; see sygnal.yaml.sample.

The apps: section is where you set up different apps that are to be handled. Each app should be given its own subsection, with the key of that subsection being the app's app_id. Keys in this section take the form of the app_id, as specified when setting up a Matrix pusher (see https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3pushersset).

See the sample configuration for examples.

You can find a docker image for sygnal on DockerHub.

App Types

There are two supported App Types:

apns

This sends push notifications to iOS apps via the Apple Push Notification Service (APNS).

The expected configuration depends on which kind of authentication you wish to use.

For certificate-based authentication, it expects:

  • the certfile parameter to be a path relative to sygnal's working directory of a PEM file containing the APNS certificate and unencrypted private key.

For token-based authentication, it expects:

  • the keyfile parameter to be a path relative to Sygnal's working directory of a p8 file
  • the key_id parameter
  • the team_id parameter
  • the topic parameter, which is most commonly the 'Bundle Identifier' for your iOS application

For either type, it can accept:

  • the platform parameter which determines whether the production or sandbox APNS environment is used. Valid values are 'production' or 'sandbox'. If not provided, 'production' is used.
  • the push_type parameter which determines what value for the apns-push-type header is sent to APNs. If not provided, the header is not sent.

gcm

This sends messages via Google/Firebase Cloud Messaging (GCM/FCM) and hence can be used to deliver notifications to Android apps. It expects the 'api_key' parameter to contain the 'Server key', which can be acquired from Firebase Console at: https://console.firebase.google.com/project/<PROJECT NAME>/settings/cloudmessaging/

Using an HTTP Proxy for outbound traffic

Sygnal will, by default, automatically detect an HTTPS_PROXY environment variable on start-up.

If one is present, it will be used for outbound traffic to APNs and GCM/FCM.

Currently only HTTP proxies with the CONNECT method are supported. (Both APNs and FCM use HTTPS traffic which is tunnelled in a CONNECT tunnel.)

If you wish, you can instead configure a HTTP CONNECT proxy in sygnal.yaml.

Pusher data configuration

The following parameters can be specified in the data dictionary which is given when configuring the pusher via POST /_matrix/client/v3/pushers/set:

  • default_payload: a dictionary which defines the basic payload to be sent to the notification service. Sygnal will merge information specific to the push event into this dictionary. If unset, the empty dictionary is used.

    This can be useful for clients to specify default push payload content. For instance, iOS clients will have freedom to use silent/mutable notifications and be able to set some default alert/sound/badge fields.

Running

With default configuration file name of sygnal.yaml:

python -m sygnal.sygnal

With custom configuration file name:

SYGNAL_CONF=/path/to/custom_sygnal.conf python -m sygnal.sygnal

Python 3.7 or higher is required.

Log Rotation

Sygnal's logging appends to files but does not use a rotating logger. The recommended configuration is therefore to use logrotate. The log file will be automatically reopened if the log file changes, for example due to logrotate.

More Documentation

More documentation for Sygnal is available in the docs directory:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].