Browse Source

update character escaping

Luke Pulverenti 8 years ago
parent
commit
635c8d50a3

+ 15 - 2
Emby.Server.Implementations/Channels/ChannelManager.cs

@@ -1108,7 +1108,11 @@ namespace Emby.Server.Implementations.Channels
                 {
                     if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(cacheLength) > DateTime.UtcNow)
                     {
-                        return _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+                        var cachedResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+                        if (cachedResult != null)
+                        {
+                            return cachedResult;
+                        }
                     }
                 }
             }
@@ -1131,7 +1135,11 @@ namespace Emby.Server.Implementations.Channels
                     {
                         if (_fileSystem.GetLastWriteTimeUtc(cachePath).Add(cacheLength) > DateTime.UtcNow)
                         {
-                            return _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+                            var cachedResult = _jsonSerializer.DeserializeFromFile<ChannelItemResult>(cachePath);
+                            if (cachedResult != null)
+                            {
+                                return cachedResult;
+                            }
                         }
                     }
                 }
@@ -1162,6 +1170,11 @@ namespace Emby.Server.Implementations.Channels
 
                 var result = await channel.GetChannelItems(query, cancellationToken).ConfigureAwait(false);
 
+                if (result == null)
+                {
+                    throw new InvalidOperationException("Channel returned a null result from GetChannelItems");
+                }
+
                 if (!startIndex.HasValue && !limit.HasValue)
                 {
                     CacheResponse(result, cachePath);

+ 9 - 3
Emby.Server.Implementations/Security/MBLicenseFile.cs

@@ -57,9 +57,14 @@ namespace Emby.Server.Implementations.Security
             _updateRecords.AddOrUpdate(key, value, (k, v) => value);
         }
 
+        private Guid GetKey(string featureId)
+        {
+            return new Guid(_cryptographyProvider.ComputeMD5(Encoding.Unicode.GetBytes(featureId)));
+        }
+
         public void AddRegCheck(string featureId)
         {
-            var key = new Guid(_cryptographyProvider.ComputeMD5(Encoding.Unicode.GetBytes(featureId)));
+            var key = GetKey(featureId);
             var value = DateTime.UtcNow;
 
             SetUpdateRecord(key, value);
@@ -68,7 +73,7 @@ namespace Emby.Server.Implementations.Security
 
         public void RemoveRegCheck(string featureId)
         {
-            var key = new Guid(_cryptographyProvider.ComputeMD5(Encoding.Unicode.GetBytes(featureId)));
+            var key = GetKey(featureId);
             DateTime val;
 
             _updateRecords.TryRemove(key, out val);
@@ -78,8 +83,9 @@ namespace Emby.Server.Implementations.Security
 
         public DateTime LastChecked(string featureId)
         {
+            var key = GetKey(featureId);
             DateTime last;
-            _updateRecords.TryGetValue(new Guid(_cryptographyProvider.ComputeMD5(Encoding.Unicode.GetBytes(featureId))), out last);
+            _updateRecords.TryGetValue(key, out last);
 
             // guard agains people just putting a large number in the file
             return last < DateTime.UtcNow ? last : DateTime.MinValue;

+ 4 - 6
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -88,8 +88,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
         private readonly int DefaultImageExtractionTimeoutMs;
         private readonly bool EnableEncoderFontFile;
 
-        public MediaEncoder(ILogger logger, IJsonSerializer jsonSerializer, string ffMpegPath, string ffProbePath, bool hasExternalEncoder, IServerConfigurationManager configurationManager, IFileSystem fileSystem, ILiveTvManager liveTvManager, IIsoManager isoManager, ILibraryManager libraryManager, IChannelManager channelManager, ISessionManager sessionManager, Func<ISubtitleEncoder> subtitleEncoder, Func<IMediaSourceManager> mediaSourceManager, IHttpClient httpClient, IZipClient zipClient, IMemoryStreamFactory memoryStreamProvider, IProcessFactory processFactory, 
-            int defaultImageExtractionTimeoutMs, 
+        public MediaEncoder(ILogger logger, IJsonSerializer jsonSerializer, string ffMpegPath, string ffProbePath, bool hasExternalEncoder, IServerConfigurationManager configurationManager, IFileSystem fileSystem, ILiveTvManager liveTvManager, IIsoManager isoManager, ILibraryManager libraryManager, IChannelManager channelManager, ISessionManager sessionManager, Func<ISubtitleEncoder> subtitleEncoder, Func<IMediaSourceManager> mediaSourceManager, IHttpClient httpClient, IZipClient zipClient, IMemoryStreamFactory memoryStreamProvider, IProcessFactory processFactory,
+            int defaultImageExtractionTimeoutMs,
             bool enableEncoderFontFile)
         {
             _logger = logger;
@@ -459,7 +459,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
             if (request.AnalyzeDurationSections > 0)
             {
                 analyzeDuration = "-analyzeduration " +
-                                  (request.AnalyzeDurationSections*1000000).ToString(CultureInfo.InvariantCulture);
+                                  (request.AnalyzeDurationSections * 1000000).ToString(CultureInfo.InvariantCulture);
             }
             else
             {
@@ -1221,9 +1221,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
             // https://ffmpeg.org/ffmpeg-filters.html#Notes-on-filtergraph-escaping
             // We need to double escape
 
-            var escapeChars = new[] {':', '\'', ','};
-
-            return path.Replace('\\', '/').Replace(":/", "\\:/").Replace("'", "'\\\\\\''");
+            return path.Replace('\\', '/').Replace(":", "\\:").Replace("'", "'\\\\\\''");
         }
 
         /// <summary>

+ 1 - 1
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -976,7 +976,7 @@ namespace MediaBrowser.Model.Dlna
 
             if (item.Bitrate.Value > maxBitrate.Value)
             {
-                _logger.Info("Bitrate exceeds DirectPlay limit");
+                _logger.Info("Bitrate exceeds DirectPlay limit: media bitrate: {0}, max bitrate: {1}", item.Bitrate.Value.ToString(CultureInfo.InvariantCulture), maxBitrate.Value.ToString(CultureInfo.InvariantCulture));
                 return false;
             }
 

+ 23 - 2
MediaBrowser.ServerApplication/WindowsAppHost.cs

@@ -32,11 +32,32 @@ namespace MediaBrowser.ServerApplication
 
             info.FFMpegFilename = "ffmpeg.exe";
             info.FFProbeFilename = "ffprobe.exe";
-            info.Version = "0";
+            info.Version = "20160410";
+            info.ArchiveType = "7z";
+            info.DownloadUrls = GetDownloadUrls();
 
             return info;
         }
 
+        private string[] GetDownloadUrls()
+        {
+            switch (EnvironmentInfo.SystemArchitecture)
+            {
+                case Architecture.X64:
+                    return new[]
+                    {
+                                "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20160410-win64.7z"
+                    };
+                case Architecture.X86:
+                    return new[]
+                    {
+                                "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20160410-win32.7z"
+                    };
+            }
+
+            return new string[] { };
+        }
+
         protected override void RestartInternal()
         {
             MainStartup.Restart();
@@ -80,7 +101,7 @@ namespace MediaBrowser.ServerApplication
             var shortcutPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.StartMenu), "Emby", "Emby Server.lnk");
 
             var startupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup);
-            
+
             if (autorun)
             {
                 //Copy our shortut into the startup folder for this user