From 68cf16416ba4fb88293b2bdac9867c5534fd7357 Mon Sep 17 00:00:00 2001 From: abeloin Date: Wed, 25 Dec 2013 14:26:49 -0500 Subject: Linux fixes: -Copy PropertyChanged.Fody.dll to Tools/Fody in MediaBrowser.Model.csproj -Check if root for WebSocketServer.FlashAccessPolicyEnabled (port < 1024) -Check resolution value !=0 before SetResolution -Catch _userManager.RefreshUsersMetadata exception when running MB3 for the first time -Fix _appHost.Init() missing argument -FFmpeg: set default and execute permission(766) to ffmpeg and ffprobe -FFmpeg: Detect the OS type and download the correct version -Rename MediaBrowser.WebDashboard/dashboard-ui/scripts/Itemdetailpage.js to itemdetailpage.js --- .../Drawing/ImageProcessor.cs | 9 +++++++++ .../EntryPoints/RefreshUsersMetadata.cs | 11 +++++++++++ .../MediaBrowser.Server.Implementations.csproj | 1 + .../WebSocket/AlchemyServer.cs | 17 +++++++++++++++++ 4 files changed, 38 insertions(+) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index fbe78e9385..7ce0cad739 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -228,8 +228,17 @@ namespace MediaBrowser.Server.Implementations.Drawing // Graphics.FromImage will throw an exception if the PixelFormat is Indexed, so we need to handle that here using (var thumbnail = new Bitmap(newWidth, newHeight, PixelFormat.Format32bppPArgb)) { + #if __MonoCS__ + // Mono throw an exeception if assign 0 to SetResolution + if (originalImage.HorizontalResolution != 0 && originalImage.VerticalResolution != 0) + { + // Preserve the original resolution + thumbnail.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); + } + #else // Preserve the original resolution thumbnail.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); + #endif using (var thumbnailGraph = Graphics.FromImage(thumbnail)) { diff --git a/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs b/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs index a0b7ff515c..0f35a766a7 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs @@ -28,7 +28,18 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// public async void Run() { + #if __MonoCS__ + try + { + await _userManager.RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false); + } + catch + { + System.Console.WriteLine("RefreshUsersMetadata task error: No users? First time running?"); + } + #else await _userManager.RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false); + #endif } /// diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 09a39c3eb2..efc1549bc0 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -85,6 +85,7 @@ ..\ThirdParty\ServiceStack.Text\ServiceStack.Text.dll + diff --git a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs index 8be35071ad..e46dab23e8 100644 --- a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs +++ b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs @@ -4,6 +4,9 @@ using MediaBrowser.Common.Net; using MediaBrowser.Model.Logging; using System; using System.Net; +#if __MonoCS__ +using Mono.Unix.Native; +#endif namespace MediaBrowser.Server.Implementations.WebSocket { @@ -66,6 +69,20 @@ namespace MediaBrowser.Server.Implementations.WebSocket TimeOut = TimeSpan.FromHours(24) }; + #if __MonoCS__ + //Linux: port below 1024 require root or cap_net_bind_service + if (Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX) + { + if (Syscall.getuid() == 0) + { + WebSocketServer.FlashAccessPolicyEnabled = true; + } + else + { + WebSocketServer.FlashAccessPolicyEnabled = false; + } + } + #endif WebSocketServer.Start(); } catch (Exception ex) -- cgit v1.2.3 From 316500dca40f7d861af394d6db27f14302255622 Mon Sep 17 00:00:00 2001 From: abeloin Date: Wed, 25 Dec 2013 19:40:53 -0500 Subject: -Replaced Mono.Data.SQLite by System.Data.SQLite(ManagedOnly) -Added System.Data.SQLite and Sqlite3 into ThirdParty -Depending of the OS, System.Data.SQLite will look for: sqlite3.dll in Windows(Provided with the project) libsqlite3.so.0 in Linux(Need to be installed. ie yum install sqlite.i686) libsqlite3.dylib in MacOS X(!?) (See http://www.mono-project.com/Interop_with_Native_Libraries for more info) --- .../MediaBrowser.Server.Implementations.csproj | 20 ++++++++++++++++---- .../Persistence/SqliteExtensions.cs | 18 +----------------- .../MediaBrowser.Server.Mono.csproj | 7 +++++-- 3 files changed, 22 insertions(+), 23 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index efc1549bc0..3b20784fc7 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -48,9 +48,6 @@ ..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll - - ..\ThirdParty\Mono.Data.Sqlite\Mono.Data.Sqlite.dll - ..\ThirdParty\ServiceStack\ServiceStack.Api.Swagger.dll @@ -67,9 +64,14 @@ ..\packages\MediaBrowser.BdInfo.1.0.0.5\lib\net20\BDInfo.dll - + + False ..\packages\System.Data.SQLite.x86.1.0.89.0\lib\net45\System.Data.SQLite.dll + + False + ..\ThirdParty\System.Data.SQLite.ManagedOnly\x86\1.0.90.0\net40\System.Data.SQLite.dll + ..\ThirdParty\ServiceStack\ServiceStack.dll @@ -346,6 +348,16 @@ + + + System.Data.SQLite.dll + PreserveNewest + + + System.Data.SQLite.Linq.dll + PreserveNewest + +