From b9a39e56b27197d0d9e4ee7d02e4917907232e2a Mon Sep 17 00:00:00 2001
From: Quentin Duchemin <quentinduchemin@tuta.io>
Date: Fri, 18 Sep 2020 16:35:04 +0200
Subject: [PATCH] [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.
---
 pica-wekan/docker-compose.yml     | 9 +--------
 pica-wekan/filter-hooks/README.md | 6 ++++--
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/pica-wekan/docker-compose.yml b/pica-wekan/docker-compose.yml
index 9d658ab5..efbb1e01 100644
--- a/pica-wekan/docker-compose.yml
+++ b/pica-wekan/docker-compose.yml
@@ -53,13 +53,6 @@ services:
     image: registry.picasoft.net/wekan-filter-hooks:v0.2
     build: ./filter-hooks
     container_name: wekan-filter-hooks
-    environment:
-      - KANBAN_URL=https://kanban.picasoft.net
     networks:
-      - proxy
-    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
+      - wekan
     restart: unless-stopped
diff --git a/pica-wekan/filter-hooks/README.md b/pica-wekan/filter-hooks/README.md
index d16f1cf9..67ab2cf6 100644
--- a/pica-wekan/filter-hooks/README.md
+++ b/pica-wekan/filter-hooks/README.md
@@ -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 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`) :
 ```
-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.
 
 ### Type d'activité pris en compte
-- 
GitLab