From d161b9cbfcb9e149a2d4c9acfb5bae0b7ee333e3 Mon Sep 17 00:00:00 2001 From: Bond-009 Date: Wed, 13 Nov 2019 16:40:34 +0100 Subject: [PATCH] Fix GetPathValue function for DLNA service --- Emby.Dlna/Api/DlnaServerService.cs | 33 ++++++++++++++++++++++-------- MediaBrowser.Api/BaseApiService.cs | 1 - 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Emby.Dlna/Api/DlnaServerService.cs b/Emby.Dlna/Api/DlnaServerService.cs index 8bf3797f85..2c9be4bff4 100644 --- a/Emby.Dlna/Api/DlnaServerService.cs +++ b/Emby.Dlna/Api/DlnaServerService.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Emby.Dlna.Main; using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Services; @@ -108,12 +109,13 @@ namespace Emby.Dlna.Api public class DlnaServerService : IService, IRequiresRequest { - private readonly IDlnaManager _dlnaManager; - private const string XMLContentType = "text/xml; charset=UTF-8"; + private readonly IDlnaManager _dlnaManager; + private readonly IHttpResultFactory _resultFactory; + private readonly IServerConfigurationManager _configurationManager; + public IRequest Request { get; set; } - private IHttpResultFactory _resultFactory; private IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory; @@ -121,10 +123,14 @@ namespace Emby.Dlna.Api private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar; - public DlnaServerService(IDlnaManager dlnaManager, IHttpResultFactory httpResultFactory) + public DlnaServerService( + IDlnaManager dlnaManager, + IHttpResultFactory httpResultFactory, + IServerConfigurationManager configurationManager) { _dlnaManager = dlnaManager; _resultFactory = httpResultFactory; + _configurationManager = configurationManager; } private string GetHeader(string name) @@ -205,14 +211,25 @@ namespace Emby.Dlna.Api var pathInfo = Parse(Request.PathInfo); var first = pathInfo[0]; + string baseUrl = _configurationManager.Configuration.BaseUrl; + // backwards compatibility - // TODO: Work out what this is doing. - if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) || - string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase) || - string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase)) + if (baseUrl.Length == 0 + && (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) + || string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase))) { index++; } + else if (string.Equals(first, baseUrl)) + { + index++; + var second = pathInfo[1]; + if (string.Equals(second, "mediabrowser", StringComparison.OrdinalIgnoreCase) + || string.Equals(second, "emby", StringComparison.OrdinalIgnoreCase)) + { + index++; + } + } return pathInfo[index]; } diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index 55e25e0797..e8ecf37d4e 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities;