diff options
author | Dirk Klimpel <5740567+dklimpel@users.noreply.github.com> | 2021-06-02 19:50:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-02 18:50:35 +0100 |
commit | 0284d2a2976e3d58e9970fdb7590f98a2556326d (patch) | |
tree | 3ec3dbd410149ea9cbfd3e67addcc99b1bed539b /synapse/rest | |
parent | github actions: summarize Sytest results in an easy-to-read format (#10094) (diff) | |
download | synapse-0284d2a2976e3d58e9970fdb7590f98a2556326d.tar.xz |
Add new admin APIs to remove media by media ID from quarantine. (#10044)
Related to: #6681, #5956, #10040 Signed-off-by: Dirk Klimpel dirk@klimpel.org
Diffstat (limited to 'synapse/rest')
-rw-r--r-- | synapse/rest/admin/media.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/synapse/rest/admin/media.py b/synapse/rest/admin/media.py index 2c71af4279..b68db2c57c 100644 --- a/synapse/rest/admin/media.py +++ b/synapse/rest/admin/media.py @@ -120,6 +120,35 @@ class QuarantineMediaByID(RestServlet): return 200, {} +class UnquarantineMediaByID(RestServlet): + """Quarantines local or remote media by a given ID so that no one can download + it via this server. + """ + + PATTERNS = admin_patterns( + "/media/unquarantine/(?P<server_name>[^/]+)/(?P<media_id>[^/]+)" + ) + + def __init__(self, hs: "HomeServer"): + self.store = hs.get_datastore() + self.auth = hs.get_auth() + + async def on_POST( + self, request: SynapseRequest, server_name: str, media_id: str + ) -> Tuple[int, JsonDict]: + requester = await self.auth.get_user_by_req(request) + await assert_user_is_admin(self.auth, requester.user) + + logging.info( + "Remove from quarantine local media by ID: %s/%s", server_name, media_id + ) + + # Remove from quarantine this media id + await self.store.quarantine_media_by_id(server_name, media_id, None) + + return 200, {} + + class ProtectMediaByID(RestServlet): """Protect local media from being quarantined.""" @@ -290,6 +319,7 @@ def register_servlets_for_media_repo(hs: "HomeServer", http_server): PurgeMediaCacheRestServlet(hs).register(http_server) QuarantineMediaInRoom(hs).register(http_server) QuarantineMediaByID(hs).register(http_server) + UnquarantineMediaByID(hs).register(http_server) QuarantineMediaByUser(hs).register(http_server) ProtectMediaByID(hs).register(http_server) UnprotectMediaByID(hs).register(http_server) |