From 71ca72eda250590a8ba7e563852c53db2b40fe5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mitja=20=C5=A0everkar?= Date: Wed, 20 Nov 2024 00:03:55 +0000 Subject: [PATCH] Properly URL encode credentials on Subsonic Previous commit (8ec4551b46ff532d3790f23faa63f7ee472ffa33) has been reverted, as it has encoded even equal signs (=), and and signs (&), which should not have been encoded. Nextcloud Music has subsequently failed to receive separate username and password and has therefore failed whilst authenticating the user. Example of URL beforehand: https://cloud.example.com/index.php/apps/music/subsonic/rest/stream.view?id=track-4936&v=1.13.0&c=feishin_&u%3Dtest-test%40example.com%26p%3Dpassword Example of URL now: https://cloud.example.com/index.php/apps/music/subsonic/rest/stream.view?id=track-4936&v=1.13.0&c=feishin_&u=test-test%40example.com&p=password --- src/renderer/api/subsonic/subsonic-controller.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/api/subsonic/subsonic-controller.ts b/src/renderer/api/subsonic/subsonic-controller.ts index f80df62e..4ecfef6c 100644 --- a/src/renderer/api/subsonic/subsonic-controller.ts +++ b/src/renderer/api/subsonic/subsonic-controller.ts @@ -65,7 +65,7 @@ export const SubsonicController: ControllerEndpoint = { const cleanServerUrl = `${url.replace(/\/$/, '')}/rest`; if (body.legacy) { - credential = `u=${body.username}&p=${body.password}`; + credential = `u=${encodeURIComponent(body.username)}&p=${encodeURIComponent(body.password)}`; credentialParams = { p: body.password, u: body.username, @@ -73,7 +73,7 @@ export const SubsonicController: ControllerEndpoint = { } else { const salt = randomString(12); const hash = md5(body.password + salt); - credential = `u=${body.username}&s=${salt}&t=${hash}`; + credential = `u=${encodeURIComponent(body.username)}&s=${encodeURIComponent(salt)}&t=${encodeURIComponent(hash)}`; credentialParams = { s: salt, t: hash,