From 0faae20bacfa68931c55df281d14877f15c51ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Bart=C3=ADk?= <63553146+sambartik@users.noreply.github.com> Date: Thu, 13 Oct 2022 23:24:09 +0200 Subject: [PATCH] Fix jellyfin external url basepath being ignored --- server/entity/Media.ts | 3 ++- server/routes/auth.ts | 9 +++++---- server/routes/settings/index.ts | 9 +++++---- server/routes/user/index.ts | 3 ++- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/server/entity/Media.ts b/server/entity/Media.ts index ed8e588bf..704a5f104 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -200,10 +200,11 @@ class Media { const pageName = process.env.JELLYFIN_TYPE === 'emby' ? 'item' : 'details'; const { serverId, hostname, externalHostname } = getSettings().jellyfin; - const jellyfinHost = + let jellyfinHost = externalHostname && externalHostname.length > 0 ? externalHostname : hostname; + jellyfinHost = jellyfinHost.endsWith("/") ? jellyfinHost.slice(0, -1) : jellyfinHost; if (this.jellyfinMediaId) { this.mediaUrl = `${jellyfinHost}/web/index.html#!/${pageName}?id=${this.jellyfinMediaId}&context=home&serverId=${serverId}`; } diff --git a/server/routes/auth.ts b/server/routes/auth.ts index 4b22943e1..0bce293df 100644 --- a/server/routes/auth.ts +++ b/server/routes/auth.ts @@ -244,10 +244,11 @@ authRoutes.post('/jellyfin', async (req, res, next) => { } // First we need to attempt to log the user in to jellyfin const jellyfinserver = new JellyfinAPI(hostname ?? '', undefined, deviceId); - const jellyfinHost = - externalHostname && externalHostname.length > 0 - ? externalHostname - : hostname; + let jellyfinHost = + externalHostname && externalHostname.length > 0 + ? externalHostname + : hostname; + jellyfinHost = jellyfinHost.endsWith("/") ? jellyfinHost.slice(0, -1) : jellyfinHost; const account = await jellyfinserver.login(body.username, body.password); // Next let's see if the user already exists diff --git a/server/routes/settings/index.ts b/server/routes/settings/index.ts index 3a7cb6dfc..2fcc1a00a 100644 --- a/server/routes/settings/index.ts +++ b/server/routes/settings/index.ts @@ -307,10 +307,11 @@ settingsRoutes.get('/jellyfin/library', async (req, res) => { settingsRoutes.get('/jellyfin/users', async (req, res) => { const settings = getSettings(); const { hostname, externalHostname } = getSettings().jellyfin; - const jellyfinHost = - externalHostname && externalHostname.length > 0 - ? externalHostname - : hostname; + let jellyfinHost = + externalHostname && externalHostname.length > 0 + ? externalHostname + : hostname; + jellyfinHost = jellyfinHost.endsWith("/") ? jellyfinHost.slice(0, -1) : jellyfinHost; const userRepository = getRepository(User); const admin = await userRepository.findOneOrFail({ diff --git a/server/routes/user/index.ts b/server/routes/user/index.ts index a875ca1fc..349cde076 100644 --- a/server/routes/user/index.ts +++ b/server/routes/user/index.ts @@ -497,10 +497,11 @@ router.post( //const jellyfinUsersResponse = await jellyfinClient.getUsers(); const createdUsers: User[] = []; const { hostname, externalHostname } = getSettings().jellyfin; - const jellyfinHost = + let jellyfinHost = externalHostname && externalHostname.length > 0 ? externalHostname : hostname; + jellyfinHost = jellyfinHost.endsWith("/") ? jellyfinHost.slice(0, -1) : jellyfinHost; jellyfinClient.setUserId(admin.jellyfinUserId ?? ''); const jellyfinUsers = await jellyfinClient.getUsers();