From 56847310bf5925808e1cc8520a4c0916dbb4a909 Mon Sep 17 00:00:00 2001
From: Christian Elberfeld <elberfeld@web.de>
Date: Sat, 22 Jul 2023 02:47:41 +0200
Subject: [PATCH] =?UTF-8?q?Media=20Cache=20nach=2030=20Tagen=20l=C3=B6sche?=
 =?UTF-8?q?n,=20fixes=20#41?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 host_vars/webserver                               |  1 +
 webserver/docker_matrix/tasks/main.yml            | 14 +++++++++++++-
 .../docker_matrix/templates/docker-compose.yml    | 15 +++++++++++++++
 .../docker_matrix/templates/purgemediacache.sh    | 13 +++++++++++++
 4 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 webserver/docker_matrix/templates/purgemediacache.sh

diff --git a/host_vars/webserver b/host_vars/webserver
index fe0b27d5..22cc6472 100644
--- a/host_vars/webserver
+++ b/host_vars/webserver
@@ -103,6 +103,7 @@ alert:
     - { name: "mail_mailman-nginx_1" }
     - { name: "matrix_ma1sd_1" }
     - { name: "matrix_db_1" }
+    - { name: "matrix_purgemediacache_1" }
     - { name: "matrix_synapse_1" }
     - { name: "matterbridge_cw_1" }
     - { name: "matterbridge_wz_1" }
diff --git a/webserver/docker_matrix/tasks/main.yml b/webserver/docker_matrix/tasks/main.yml
index 990d843e..c3f42d07 100644
--- a/webserver/docker_matrix/tasks/main.yml
+++ b/webserver/docker_matrix/tasks/main.yml
@@ -5,6 +5,7 @@
    - { path: /srv/shared/noreply_email_pass, length: -1 }
    - { path: /srv/ldap/secret/ldap_readonly_pass, length: -1 }
    - { path: /srv/matrix/postgres_user_pass,  length: 24 }
+   - { path: /srv/matrix/admin_access_token,  length: -1 } # Get in Element fo an Admin User: Settings > Help > Advanced 
 
 
 - name: create folder struct for matrix
@@ -31,7 +32,9 @@
 
 
 - name: Konfig-Dateien erstellen
-  template: src={{ item }} dest=/srv/matrix/{{ item }}
+  template: 
+    src: "{{ item }}" 
+    dest: "/srv/matrix/{{ item }}"
   with_items:
     - docker-compose.yml
     - rest_auth_provider.py
@@ -41,6 +44,15 @@
   register: configs
 
 
+- name: Script-Dateien erstellen 
+  template: 
+    src: "{{ item }}" 
+    dest: "/srv/matrix/{{ item }}"
+    mode: "ug+rwx"
+  with_items:
+    - purgemediacache.sh
+
+
 - name: stop matrix docker
   docker_compose:
     project_src: /srv/matrix/
diff --git a/webserver/docker_matrix/templates/docker-compose.yml b/webserver/docker_matrix/templates/docker-compose.yml
index 4858c15b..d8392105 100644
--- a/webserver/docker_matrix/templates/docker-compose.yml
+++ b/webserver/docker_matrix/templates/docker-compose.yml
@@ -68,6 +68,21 @@ services:
       - default
       - web
 
+
+  purgemediacache:
+    
+    image: jsonfry/curl-cron:latest 
+    restart: always
+    depends_on:
+      - synapse
+    volumes:
+      - /srv/matrix/purgemediacache.sh:/curl.sh
+    environment:
+      CRON_SCHEDULE: "0 7 * * *"
+    networks:
+      - default
+
+
 networks:
   web:
     external: true
diff --git a/webserver/docker_matrix/templates/purgemediacache.sh b/webserver/docker_matrix/templates/purgemediacache.sh
new file mode 100644
index 00000000..bd3f4f3e
--- /dev/null
+++ b/webserver/docker_matrix/templates/purgemediacache.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+echo "$(date) - Start"
+
+TS_NOW=$(date +%s)
+DELAY=$((30*24*60*60))
+TS=$((TS_NOW-$DELAY))
+
+curl -X POST --insecure --header "Authorization: Bearer {{ admin_access_token }}" https://{{ domain }}/_synapse/admin/v1/purge_media_cache?before_ts=$(($TS*1000))
+
+echo "$(date) End"
\ No newline at end of file
-- 
GitLab