Explorar o código

resolve reverse proxy issue

Luke Pulverenti %!s(int64=10) %!d(string=hai) anos
pai
achega
f8927ceb06

+ 0 - 11
MediaBrowser.Api/BaseApiService.cs

@@ -73,17 +73,6 @@ namespace MediaBrowser.Api
             return ResultFactory.GetOptimizedResultUsingCache(Request, cacheKey, lastDateModified, cacheDuration, factoryFn);
         }
 
-        /// <summary>
-        /// Infers the server address from the url
-        /// </summary>
-        /// <returns></returns>
-        protected string GetServerAddress()
-        {
-            var index = Request.AbsoluteUri.IndexOf(Request.PathInfo, StringComparison.OrdinalIgnoreCase);
-
-            return Request.AbsoluteUri.Substring(0, index);
-        }
-
         protected void AssertCanUpdateUser(IUserManager userManager, string userId)
         {
             var auth = AuthorizationContext.GetAuthorizationInfo(Request);

+ 8 - 9
MediaBrowser.Api/Playback/MediaInfoService.cs

@@ -225,8 +225,6 @@ namespace MediaBrowser.Api.Playback
         {
             var streamBuilder = new StreamBuilder();
 
-            var baseUrl = GetServerAddress();
-
             var options = new VideoOptions
             {
                 MediaSources = new List<MediaSourceInfo> { mediaSource },
@@ -266,7 +264,7 @@ namespace MediaBrowser.Api.Playback
 
                 if (streamInfo != null)
                 {
-                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, baseUrl, auth.Token);
+                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
                 }
             }
 
@@ -284,7 +282,7 @@ namespace MediaBrowser.Api.Playback
 
                 if (streamInfo != null)
                 {
-                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, baseUrl, auth.Token);
+                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
                 }
             }
 
@@ -298,22 +296,22 @@ namespace MediaBrowser.Api.Playback
                 if (streamInfo != null)
                 {
                     streamInfo.PlaySessionId = playSessionId;
-                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, baseUrl, auth.Token);
+                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
                 }
 
                 if (streamInfo != null && streamInfo.PlayMethod == PlayMethod.Transcode)
                 {
                     streamInfo.StartPositionTicks = startTimeTicks;
-                    mediaSource.TranscodingUrl = streamInfo.ToUrl(baseUrl, auth.Token);
+                    mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-').TrimStart('-');
                     mediaSource.TranscodingContainer = streamInfo.Container;
                     mediaSource.TranscodingSubProtocol = streamInfo.SubProtocol;
                 }
             }
         }
 
-        private void SetDeviceSpecificSubtitleInfo(StreamInfo info, MediaSourceInfo mediaSource, string baseUrl, string accessToken)
+        private void SetDeviceSpecificSubtitleInfo(StreamInfo info, MediaSourceInfo mediaSource, string accessToken)
         {
-            var profiles = info.GetSubtitleProfiles(false, baseUrl, accessToken);
+            var profiles = info.GetSubtitleProfiles(false, "-", accessToken);
             mediaSource.DefaultSubtitleStreamIndex = info.SubtitleStreamIndex;
 
             foreach (var profile in profiles)
@@ -326,7 +324,8 @@ namespace MediaBrowser.Api.Playback
 
                         if (profile.DeliveryMethod == SubtitleDeliveryMethod.External)
                         {
-                            stream.DeliveryUrl = profile.Url;
+                            stream.DeliveryUrl = profile.Url.TrimStart('-').TrimStart('-');
+                            stream.IsExternalUrl = profile.IsExternalUrl;
                         }
                     }
                 }

+ 3 - 0
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -321,10 +321,13 @@ namespace MediaBrowser.Model.Dlna
                         StringHelper.ToStringCultureInvariant(stream.Index),
                         StringHelper.ToStringCultureInvariant(startPositionTicks),
                         subtitleProfile.Format);
+
+                    info.IsExternalUrl = false;
                 }
                 else
                 {
                     info.Url = stream.Path;
+                    info.IsExternalUrl = true;
                 }
             }
 

+ 1 - 0
MediaBrowser.Model/Dlna/SubtitleStreamInfo.cs

@@ -9,5 +9,6 @@ namespace MediaBrowser.Model.Dlna
         public string Format { get; set; }
         public int Index { get; set; }
         public SubtitleDeliveryMethod DeliveryMethod { get; set; }
+        public bool IsExternalUrl { get; set; }
     }
 }

+ 6 - 1
MediaBrowser.Model/Entities/MediaStream.cs

@@ -135,7 +135,7 @@ namespace MediaBrowser.Model.Entities
         /// </summary>
         /// <value>The score.</value>
         public int? Score { get; set; }
-        
+
         /// <summary>
         /// Gets or sets a value indicating whether this instance is external.
         /// </summary>
@@ -152,6 +152,11 @@ namespace MediaBrowser.Model.Entities
         /// </summary>
         /// <value>The delivery URL.</value>
         public string DeliveryUrl { get; set; }
+        /// <summary>
+        /// Gets or sets a value indicating whether this instance is external URL.
+        /// </summary>
+        /// <value><c>null</c> if [is external URL] contains no value, <c>true</c> if [is external URL]; otherwise, <c>false</c>.</value>
+        public bool? IsExternalUrl { get; set; }
 
         public bool IsTextSubtitleStream
         {