From 0c8f4400b0cafba60c210353790565583482e2ce Mon Sep 17 00:00:00 2001 From: Blopware Date: Thu, 29 Apr 2021 19:22:33 +0200 Subject: [PATCH] Sanitize remote tracks' saving locations with slashes on their names For that case, the resulting saved file made use of these slashes to store the tracks in subdirectories of federation_cache/xx/xx/xx, instead of in the federation_cache/xx/xx/xx directory itself. As a consequence, the tracks are downloaded in the wrong location, and upon any trial of playing the tracks, funkwhale responds with the message "The track cannot be loaded. You can have connectivity issues" An example of a podcast with this kind of RSS items is located in https://www.rtve.es/api/programas/2082/audios.rss This commit overcomes this by a simple replacement of the offending slashes to hyphens. --- api/funkwhale_api/common/utils.py | 4 ++++ changes/changelog.d/1435.bug | 1 + 2 files changed, 5 insertions(+) create mode 100644 changes/changelog.d/1435.bug diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py index 5d7d401d7..afb773725 100644 --- a/api/funkwhale_api/common/utils.py +++ b/api/funkwhale_api/common/utils.py @@ -75,11 +75,15 @@ def set_query_parameter(url, **kwargs): @deconstructible class ChunkedPath(object): + def sanitize_filename(self, filename): + return filename.replace("/", "-") + def __init__(self, root, preserve_file_name=True): self.root = root self.preserve_file_name = preserve_file_name def __call__(self, instance, filename): + self.sanitize_filename(filename) uid = str(uuid.uuid4()) chunk_size = 2 chunks = [uid[i : i + chunk_size] for i in range(0, len(uid), chunk_size)] diff --git a/changes/changelog.d/1435.bug b/changes/changelog.d/1435.bug new file mode 100644 index 000000000..7329f8b4a --- /dev/null +++ b/changes/changelog.d/1435.bug @@ -0,0 +1 @@ +Sanitize remote tracks' saving locations with slashes on their names (#1435) \ No newline at end of file