summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2018-06-12 11:09:55 +0100
committerDavid Baker <dave@matrix.org>2018-06-12 11:09:55 +0100
commite6819c348b8ce1d20c371a291429594b788c4215 (patch)
tree7ef36ee73a0ef3e6d387391c06d309133cc970d1
parentFilter out erased messages (diff)
downloadsynapse-e6819c348b8ce1d20c371a291429594b788c4215.tar.xz
Media repo support for content erasure
Don't serve up content from users who have erased their content
-rw-r--r--synapse/rest/media/v1/media_repository.py5
-rw-r--r--synapse/rest/media/v1/thumbnail_resource.py10
-rw-r--r--synapse/storage/media_repository.py2
3 files changed, 16 insertions, 1 deletions
diff --git a/synapse/rest/media/v1/media_repository.py b/synapse/rest/media/v1/media_repository.py
index 2ac767d2dc..e592eef368 100644
--- a/synapse/rest/media/v1/media_repository.py
+++ b/synapse/rest/media/v1/media_repository.py
@@ -187,6 +187,11 @@ class MediaRepository(object):
             respond_404(request)
             return
 
+        user_erased = yield self.store.is_user_erased(media_info['user_id'])
+        if user_erased:
+            respond_404(request)
+            return
+
         self.mark_recently_accessed(None, media_id)
 
         media_type = media_info["media_type"]
diff --git a/synapse/rest/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py
index aae6e464e8..088e0d9557 100644
--- a/synapse/rest/media/v1/thumbnail_resource.py
+++ b/synapse/rest/media/v1/thumbnail_resource.py
@@ -96,6 +96,11 @@ class ThumbnailResource(Resource):
             respond_404(request)
             return
 
+        user_erased = yield self.store.is_user_erased(media_info['user_id'])
+        if user_erased:
+            respond_404(request)
+            return
+
         thumbnail_infos = yield self.store.get_local_media_thumbnails(media_id)
 
         if thumbnail_infos:
@@ -136,6 +141,11 @@ class ThumbnailResource(Resource):
             respond_404(request)
             return
 
+        user_erased = yield self.store.is_user_erased(media_info['user_id'])
+        if user_erased:
+            respond_404(request)
+            return
+
         thumbnail_infos = yield self.store.get_local_media_thumbnails(media_id)
         for info in thumbnail_infos:
             t_w = info["thumbnail_width"] == desired_width
diff --git a/synapse/storage/media_repository.py b/synapse/storage/media_repository.py
index e6cdbb0545..4140044e35 100644
--- a/synapse/storage/media_repository.py
+++ b/synapse/storage/media_repository.py
@@ -39,7 +39,7 @@ class MediaRepositoryStore(BackgroundUpdateStore):
             {"media_id": media_id},
             (
                 "media_type", "media_length", "upload_name", "created_ts",
-                "quarantined_by", "url_cache",
+                "quarantined_by", "url_cache", "user_id",
             ),
             allow_none=True,
             desc="get_local_media",