Merge branch '196-fix-filepath-encoding' into 'develop'
Resolve "404 for files with special utf-8-chars" Closes #196 See merge request funkwhale/funkwhale!189
This commit is contained in:
commit
9c9f6708a3
|
@ -230,7 +230,7 @@ def get_file_path(audio_file):
|
||||||
'MUSIC_DIRECTORY_PATH to serve in-place imported files'
|
'MUSIC_DIRECTORY_PATH to serve in-place imported files'
|
||||||
)
|
)
|
||||||
path = '/music' + audio_file.replace(prefix, '', 1)
|
path = '/music' + audio_file.replace(prefix, '', 1)
|
||||||
return settings.PROTECT_FILES_PATH + path
|
return (settings.PROTECT_FILES_PATH + path).encode('utf-8')
|
||||||
if t == 'apache2':
|
if t == 'apache2':
|
||||||
try:
|
try:
|
||||||
path = audio_file.path
|
path = audio_file.path
|
||||||
|
@ -241,7 +241,7 @@ def get_file_path(audio_file):
|
||||||
'You need to specify MUSIC_DIRECTORY_SERVE_PATH and '
|
'You need to specify MUSIC_DIRECTORY_SERVE_PATH and '
|
||||||
'MUSIC_DIRECTORY_PATH to serve in-place imported files'
|
'MUSIC_DIRECTORY_PATH to serve in-place imported files'
|
||||||
)
|
)
|
||||||
path = audio_file.replace(prefix, serve_path, 1)
|
path = audio_file.replace(prefix, serve_path, 1).encode('utf-8')
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,24 @@ def test_serve_file_in_place(
|
||||||
assert response[headers[proxy]] == expected
|
assert response[headers[proxy]] == expected
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('proxy,serve_path,expected', [
|
||||||
|
('apache2', '/host/music', '/host/music/hello/worldéà.mp3'),
|
||||||
|
('apache2', '/app/music', '/app/music/hello/worldéà.mp3'),
|
||||||
|
('nginx', '/host/music', '/_protected/music/hello/worldéà.mp3'),
|
||||||
|
('nginx', '/app/music', '/_protected/music/hello/worldéà.mp3'),
|
||||||
|
])
|
||||||
|
def test_serve_file_in_place_utf8(
|
||||||
|
proxy, serve_path, expected, factories, api_client, settings):
|
||||||
|
settings.PROTECT_AUDIO_FILES = False
|
||||||
|
settings.PROTECT_FILE_PATH = '/_protected/music'
|
||||||
|
settings.REVERSE_PROXY_TYPE = proxy
|
||||||
|
settings.MUSIC_DIRECTORY_PATH = '/app/music'
|
||||||
|
settings.MUSIC_DIRECTORY_SERVE_PATH = serve_path
|
||||||
|
path = views.get_file_path('/app/music/hello/worldéà.mp3')
|
||||||
|
|
||||||
|
assert path == expected.encode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('proxy,serve_path,expected', [
|
@pytest.mark.parametrize('proxy,serve_path,expected', [
|
||||||
('apache2', '/host/music', '/host/media/tracks/hello/world.mp3'),
|
('apache2', '/host/music', '/host/media/tracks/hello/world.mp3'),
|
||||||
# apache with container not supported yet
|
# apache with container not supported yet
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
In-place imported tracks non-ascii characters don't break reverse-proxy serving (#196)
|
Loading…
Reference in New Issue