Ben
3b50125d54
Use asynchronously running code. Rewrite error handling and all api interactions. Add config.yml.example and more configuration options. Improve README.md. Update licenses in all files.
32 lines
1.3 KiB
Markdown
32 lines
1.3 KiB
Markdown
# Webhook Matrix Notifier
|
|
|
|
Takes notifications via webhook, checks a secret and notifies a [Matrix](https://matrix.org) channel.
|
|
Listens to HTTP only. Should be used behind a reverse-proxy with HTTPS.
|
|
|
|
An example configuration is at `config.yml.example` and the program always reads the configuration file `config.yml`.
|
|
|
|
|
|
## Testing the Hook locally
|
|
|
|
First, start the webserver locally by `env FLASK_APP=wmn.py flask run` or have your IDE start it for you. \
|
|
Then, send a POST request using curl.
|
|
|
|
### GitLab
|
|
|
|
```
|
|
export CHANNEL_ENC=`python3 -c 'from urllib.parse import quote_plus; print(quote_plus("#channel:matrix.org"))'`
|
|
curl -i -X POST "http://localhost:5000/matrix?channel=${CHANNEL_ENC}" -H "X-Gitlab-Event: Push Hook" -H "X-Gitlab-Token: 123" -H "Content-Type: application/json" --data-binary @./testrequest_gitlab.json
|
|
```
|
|
|
|
The `X-Gitlab-Token` must correspond to the secret provided in `config.yml`
|
|
|
|
### Prometheus
|
|
|
|
```
|
|
export CHANNEL_ENC=`python3 -c 'from urllib.parse import quote_plus; print(quote_plus("#channel:matrix.org"))'`
|
|
export WMN_SECRET=`python3 -c 'from urllib.parse import quote_plus; print(quote_plus("123"))'`
|
|
curl -i -X POST "http://localhost:5000/matrix?type=prometheus&secret=${WMN_SECRET}&channel=${CHANNEL_ENC}" -H "Content-Type: application/json" --data-binary @./testrequest_prometheus.json
|
|
```
|
|
|
|
The secret must be passed as a URI parameter here.
|