Skip to content
Snippets Groups Projects
Verified Commit b9a39e56 authored by Quentin Duchemin's avatar Quentin Duchemin
Browse files

[Wekan] Filter hooks is now internal

Tool is only accessible with the container's network, to avoid potential spam/DOS.
Indeed, one could just call the container's public URL with a forged request to redirect POST requests to an arbitrary server.
With this modification, one could still use Filter Hook with an arbitrary URL, but the call should come from Wekan (i.e. mass move/create cards), which is not worth it.
parent f8e1b510
No related branches found
No related tags found
No related merge requests found
...@@ -53,13 +53,6 @@ services: ...@@ -53,13 +53,6 @@ services:
image: registry.picasoft.net/wekan-filter-hooks:v0.2 image: registry.picasoft.net/wekan-filter-hooks:v0.2
build: ./filter-hooks build: ./filter-hooks
container_name: wekan-filter-hooks container_name: wekan-filter-hooks
environment:
- KANBAN_URL=https://kanban.picasoft.net
networks: networks:
- proxy - wekan
labels:
traefik.http.routers.wekan-filter-hooks.entrypoints: websecure
traefik.http.routers.wekan-filter-hooks.rule: Host(`kanban.picasoft.net`) && Path(`/forward_hooks`)
traefik.http.services.wekan-filter-hooks.loadbalancer.server.port: 5000
traefik.enable: true
restart: unless-stopped restart: unless-stopped
...@@ -19,13 +19,15 @@ gunicorn --bind 0.0.0.0:5000 --reload main:app ...@@ -19,13 +19,15 @@ gunicorn --bind 0.0.0.0:5000 --reload main:app
Supposons que dans une application type Mattermost, on configure un hook **entrant** qui peut recevoir des requêtes `POST` de Wekan. Cette URL est désignée par `URL_HOOK`. Supposons que dans une application type Mattermost, on configure un hook **entrant** qui peut recevoir des requêtes `POST` de Wekan. Cette URL est désignée par `URL_HOOK`.
Supposons que cet outil soit déployé à l'adresse `https://URL_FILTER`. Cet outil est déployé dans le même réseau que le Wekan. Son nom de conteneur est `wekan-filter-hooks`.
Dans Wekan, l'URL du hook sortant sera alors (à la place de `URL_HOOK`) : Dans Wekan, l'URL du hook sortant sera alors (à la place de `URL_HOOK`) :
``` ```
https://URL_FILTER/forward_hooks?url=URL_HOOK http://wekan-filter-hooks:5000/forward_hooks?url=URL_HOOK
``` ```
Ainsi, cet outil n'est appelable que depuis Wekan (car le nom d'hôte n'est résolu que dans son réseau), ce qui permet d'éviter un spam extérieur.
Quand il reçoit une requête, l'outil examine le hook et voit si le type d'activité correspond à une liste pré-définie et l'envoie à `URL_HOOK` le cas échéant. Quand il reçoit une requête, l'outil examine le hook et voit si le type d'activité correspond à une liste pré-définie et l'envoie à `URL_HOOK` le cas échéant.
### Type d'activité pris en compte ### Type d'activité pris en compte
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment