diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-24 15:12:55 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-24 15:12:55 -0400 |
| commit | f07af448fa11330db93dd7ddcabac37ef9e014c7 (patch) | |
| tree | 1b52a4f73d674a48258c2f14c94117b96ca4a678 | |
| parent | 27c3acb2bfde9025c33f584c759a4038020cb702 (diff) | |
update main projects
| -rw-r--r-- | Emby.Common.Implementations/BaseApplicationHost.cs | 50 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Diagnostics/CommonProcess.cs | 2 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Emby.Common.Implementations.csproj | 381 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Emby.Common.Implementations.xproj | 23 | ||||
| -rw-r--r-- | Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs | 46 | ||||
| -rw-r--r-- | Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs | 36 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Net/SocketFactory.cs | 11 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Net/UdpSocket.cs | 169 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Properties/AssemblyInfo.cs | 23 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Reflection/AssemblyInfo.cs | 6 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Serialization/XmlSerializer.cs | 9 | ||||
| -rw-r--r-- | Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs | 2 | ||||
| -rw-r--r-- | Emby.Common.Implementations/packages.config | 7 | ||||
| -rw-r--r-- | Emby.Common.Implementations/project.json | 71 | ||||
| -rw-r--r-- | Emby.Server.Core/ApplicationPathHelper.cs (renamed from MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/ASN1.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs) | 3 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/ASN1Convert.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/BitConverterLE.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/CertificateGenerator.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/CryptoConvert.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/PKCS1.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/PKCS12.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/PKCS7.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/PKCS8.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/PfxGenerator.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X501Name.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509Builder.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509Certificate.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509CertificateBuilder.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509CertificateCollection.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509Extension.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X509Extensions.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Cryptography/X520Attributes.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Emby.Server.Core.csproj (renamed from MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj) | 88 | ||||
| -rw-r--r-- | Emby.Server.Core/Emby.Server.Core.xproj | 33 | ||||
| -rw-r--r-- | Emby.Server.Core/HttpServerFactory.cs | 103 | ||||
| -rw-r--r-- | Emby.Server.Core/IO/MemoryStreamProvider.cs (renamed from MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs) | 2 | ||||
| -rw-r--r-- | Emby.Server.Core/Properties/AssemblyInfo.cs | 23 | ||||
| -rw-r--r-- | Emby.Server.Core/SystemEvents.cs (renamed from MediaBrowser.Server.Startup.Common/SystemEvents.cs) | 0 | ||||
| -rw-r--r-- | Emby.Server.Core/UpdateLevelHelper.cs (renamed from MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs) | 6 | ||||
| -rw-r--r-- | Emby.Server.Core/app.config (renamed from MediaBrowser.Server.Startup.Common/app.config) | 4 | ||||
| -rw-r--r-- | Emby.Server.Core/packages.config | 6 | ||||
| -rw-r--r-- | Emby.Server.Core/project.json | 125 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Data/SqliteItemRepository.cs | 9 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Emby.Server.Implementations.csproj | 24 | ||||
| -rw-r--r-- | Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs | 5 | ||||
| -rw-r--r-- | Emby.Server.Implementations/IO/FileRefresher.cs | 2 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 6 | ||||
| -rw-r--r-- | Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs | 10 | ||||
| -rw-r--r-- | Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs | 33 | ||||
| -rw-r--r-- | Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs | 130 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Session/SessionManager.cs | 13 | ||||
| -rw-r--r-- | Emby.Server.Implementations/TV/TVSeriesManager.cs | 16 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Udp/UdpServer.cs | 64 | ||||
| -rw-r--r-- | MediaBrowser.Api/Reports/ReportsService.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/StartupWizardService.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 42 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 31 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Video.cs | 37 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Model/Configuration/ServerConfiguration.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Net/ISocket.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj | 36 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/Program.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/app.config | 24 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/packages.config | 4 | ||||
| -rw-r--r-- | MediaBrowser.Server.Startup.Common/packages.config | 4 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/App.config | 2 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/MainStartup.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj | 34 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/packages.config | 4 | ||||
| -rw-r--r-- | MediaBrowser.Tests/MediaBrowser.Tests.csproj | 2 | ||||
| -rw-r--r-- | MediaBrowser.Tests/app.config | 2 | ||||
| -rw-r--r-- | MediaBrowser.sln | 366 | ||||
| -rw-r--r-- | Mono.Nat/Mono.Nat.csproj | 98 | ||||
| -rw-r--r-- | Mono.Nat/Mono.Nat.xproj | 23 | ||||
| -rw-r--r-- | Mono.Nat/Properties/AssemblyInfo.cs | 24 | ||||
| -rw-r--r-- | Mono.Nat/project.json | 41 | ||||
| -rw-r--r-- | RSSDP/SsdpCommunicationsServer.cs | 6 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/Net/ChunkedInputStream.cs | 160 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs | 77 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/Net/RequestStream.cs | 231 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/Primitives/HttpListenerException.cs | 17 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/Properties/AssemblyInfo.cs | 30 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets | 6 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/packages.config | 5 | ||||
| -rw-r--r-- | SocketHttpListener.Portable/project.json | 17 | ||||
| -rw-r--r-- | SocketHttpListener/ByteOrder.cs (renamed from SocketHttpListener.Portable/ByteOrder.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/CloseEventArgs.cs (renamed from SocketHttpListener.Portable/CloseEventArgs.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/CloseStatusCode.cs (renamed from SocketHttpListener.Portable/CloseStatusCode.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/CompressionMethod.cs (renamed from SocketHttpListener.Portable/CompressionMethod.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/ErrorEventArgs.cs (renamed from SocketHttpListener.Portable/ErrorEventArgs.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Ext.cs (renamed from SocketHttpListener.Portable/Ext.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Fin.cs (renamed from SocketHttpListener.Portable/Fin.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/HttpBase.cs (renamed from SocketHttpListener.Portable/HttpBase.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/HttpResponse.cs (renamed from SocketHttpListener.Portable/HttpResponse.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Mask.cs (renamed from SocketHttpListener.Portable/Mask.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/MessageEventArgs.cs (renamed from SocketHttpListener.Portable/MessageEventArgs.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/AuthenticationSchemeSelector.cs (renamed from SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/ChunkStream.cs (renamed from SocketHttpListener.Portable/Net/ChunkStream.cs) | 224 | ||||
| -rw-r--r-- | SocketHttpListener/Net/ChunkedInputStream.cs | 172 | ||||
| -rw-r--r-- | SocketHttpListener/Net/CookieHelper.cs (renamed from SocketHttpListener.Portable/Net/CookieHelper.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/EndPointListener.cs (renamed from SocketHttpListener.Portable/Net/EndPointListener.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/EndPointManager.cs (renamed from SocketHttpListener.Portable/Net/EndPointManager.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpConnection.cs (renamed from SocketHttpListener.Portable/Net/HttpConnection.cs) | 21 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListener.cs (renamed from SocketHttpListener.Portable/Net/HttpListener.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerBasicIdentity.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerContext.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerContext.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerPrefixCollection.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerRequest.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerRequest.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerResponse.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerResponse.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpRequestStream.Managed.cs | 196 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpRequestStream.cs | 144 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpStatusCode.cs (renamed from SocketHttpListener.Portable/Net/HttpStatusCode.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpStreamAsyncResult.cs | 85 | ||||
| -rw-r--r-- | SocketHttpListener/Net/HttpVersion.cs (renamed from SocketHttpListener.Portable/Net/HttpVersion.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/ListenerPrefix.cs (renamed from SocketHttpListener.Portable/Net/ListenerPrefix.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/ResponseStream.cs (renamed from SocketHttpListener.Portable/Net/ResponseStream.cs) | 2 | ||||
| -rw-r--r-- | SocketHttpListener/Net/WebHeaderCollection.cs (renamed from SocketHttpListener.Portable/Net/WebHeaderCollection.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs (renamed from SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Net/WebSockets/WebSocketContext.cs (renamed from SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Opcode.cs (renamed from SocketHttpListener.Portable/Opcode.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/PayloadData.cs (renamed from SocketHttpListener.Portable/PayloadData.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Primitives/ICertificate.cs (renamed from SocketHttpListener.Portable/Primitives/ICertificate.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Primitives/IStreamFactory.cs (renamed from SocketHttpListener.Portable/Primitives/IStreamFactory.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Primitives/ITextEncoding.cs (renamed from SocketHttpListener.Portable/Primitives/ITextEncoding.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/Properties/AssemblyInfo.cs (renamed from MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs) | 14 | ||||
| -rw-r--r-- | SocketHttpListener/Rsv.cs (renamed from SocketHttpListener.Portable/Rsv.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/SocketHttpListener.csproj (renamed from SocketHttpListener.Portable/SocketHttpListener.Portable.csproj) | 39 | ||||
| -rw-r--r-- | SocketHttpListener/WebSocket.cs (renamed from SocketHttpListener.Portable/WebSocket.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/WebSocketException.cs (renamed from SocketHttpListener.Portable/WebSocketException.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/WebSocketFrame.cs (renamed from SocketHttpListener.Portable/WebSocketFrame.cs) | 0 | ||||
| -rw-r--r-- | SocketHttpListener/WebSocketState.cs (renamed from SocketHttpListener.Portable/WebSocketState.cs) | 0 |
139 files changed, 1939 insertions, 1914 deletions
diff --git a/Emby.Common.Implementations/BaseApplicationHost.cs b/Emby.Common.Implementations/BaseApplicationHost.cs index d3d8672be..dd4be9aae 100644 --- a/Emby.Common.Implementations/BaseApplicationHost.cs +++ b/Emby.Common.Implementations/BaseApplicationHost.cs @@ -39,10 +39,6 @@ using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Threading; -#if NETSTANDARD1_6 -using System.Runtime.Loader; -#endif - namespace Emby.Common.Implementations { /// <summary> @@ -306,7 +302,6 @@ namespace Emby.Common.Implementations builder.AppendLine(string.Format("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs()))); -#if NET46 builder.AppendLine(string.Format("Operating system: {0}", Environment.OSVersion)); builder.AppendLine(string.Format("64-Bit OS: {0}", Environment.Is64BitOperatingSystem)); builder.AppendLine(string.Format("64-Bit Process: {0}", Environment.Is64BitProcess)); @@ -320,7 +315,6 @@ namespace Emby.Common.Implementations builder.AppendLine("Mono: " + displayName.Invoke(null, null)); } } -#endif builder.AppendLine(string.Format("Processor count: {0}", Environment.ProcessorCount)); builder.AppendLine(string.Format("Program data path: {0}", appPaths.ProgramDataPath)); @@ -336,9 +330,7 @@ namespace Emby.Common.Implementations try { // Increase the max http request limit -#if NET46 ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit); -#endif } catch (Exception ex) { @@ -436,7 +428,6 @@ namespace Emby.Common.Implementations if (assemblyPlugin != null) { -#if NET46 var assembly = plugin.GetType().Assembly; var assemblyName = assembly.GetName(); @@ -447,21 +438,7 @@ namespace Emby.Common.Implementations var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName); assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId); -#elif NETSTANDARD1_6 - var typeInfo = plugin.GetType().GetTypeInfo(); - var assembly = typeInfo.Assembly; - var assemblyName = assembly.GetName(); - - var attribute = (GuidAttribute)assembly.GetCustomAttribute(typeof(GuidAttribute)); - var assemblyId = new Guid(attribute.Value); - - var assemblyFileName = assemblyName.Name + ".dll"; - var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName); - - assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId); -#else -return null; -#endif + return null; } var isFirstRun = !File.Exists(plugin.ConfigurationFilePath); @@ -492,17 +469,7 @@ return null; AllConcreteTypes = assemblies .SelectMany(GetTypes) - .Where(t => - { -#if NET46 - return t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType; -#endif -#if NETSTANDARD1_6 - var typeInfo = t.GetTypeInfo(); - return typeInfo.IsClass && !typeInfo.IsAbstract && !typeInfo.IsInterface && !typeInfo.IsGenericType; -#endif - return false; - }) + .Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType) .ToArray(); } @@ -717,13 +684,7 @@ return null; { try { -#if NET46 return Assembly.Load(File.ReadAllBytes(file)); -#elif NETSTANDARD1_6 - - return AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(File.ReadAllBytes(file))); -#endif - return null; } catch (Exception ex) { @@ -742,14 +703,7 @@ return null; { var currentType = typeof(T); -#if NET46 return AllConcreteTypes.Where(currentType.IsAssignableFrom); -#elif NETSTANDARD1_6 - var currentTypeInfo = currentType.GetTypeInfo(); - - return AllConcreteTypes.Where(currentTypeInfo.IsAssignableFrom); -#endif - return new List<Type>(); } /// <summary> diff --git a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs b/Emby.Common.Implementations/Diagnostics/CommonProcess.cs index 462345ced..f6ca6cf9c 100644 --- a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs +++ b/Emby.Common.Implementations/Diagnostics/CommonProcess.cs @@ -31,14 +31,12 @@ namespace Emby.Common.Implementations.Diagnostics RedirectStandardOutput = options.RedirectStandardOutput }; -#if NET46 startInfo.ErrorDialog = options.ErrorDialog; if (options.IsHidden) { startInfo.WindowStyle = ProcessWindowStyle.Hidden; } -#endif _process = new Process { diff --git a/Emby.Common.Implementations/Emby.Common.Implementations.csproj b/Emby.Common.Implementations/Emby.Common.Implementations.csproj new file mode 100644 index 000000000..6e818b163 --- /dev/null +++ b/Emby.Common.Implementations/Emby.Common.Implementations.csproj @@ -0,0 +1,381 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{1E37A338-9F57-4B70-BD6D-BB9C591E319B}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Emby.Common.Implementations</RootNamespace> + <AssemblyName>Emby.Common.Implementations</AssemblyName> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> + <HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> + <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\SharedVersion.cs"> + <Link>Properties\SharedVersion.cs</Link> + </Compile> + <Compile Include="Archiving\ZipClient.cs" /> + <Compile Include="BaseApplicationHost.cs" /> + <Compile Include="Cryptography\CryptographyProvider.cs" /> + <Compile Include="Devices\DeviceId.cs" /> + <Compile Include="Diagnostics\CommonProcess.cs" /> + <Compile Include="Diagnostics\ProcessFactory.cs" /> + <Compile Include="EnvironmentInfo\EnvironmentInfo.cs" /> + <Compile Include="HttpClientManager\HttpClientInfo.cs" /> + <Compile Include="HttpClientManager\HttpClientManager.cs" /> + <Compile Include="IO\IsoManager.cs" /> + <Compile Include="IO\LnkShortcutHandler.cs" /> + <Compile Include="IO\ManagedFileSystem.cs" /> + <Compile Include="IO\SharpCifsFileSystem.cs" /> + <Compile Include="IO\SharpCifs\Config.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcBind.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcBinding.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcConstants.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcError.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcException.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcMessage.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcPipeHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\DcerpcSecurityProvider.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\LsaPolicyHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Lsarpc.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\LsarSidArrayX.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcDfsRootEnum.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcEnumerateAliasesInDomain.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcGetMembersInAlias.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcLookupSids.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcLsarOpenPolicy2.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcQueryInformationPolicy.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrConnect2.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrConnect4.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrOpenAlias.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrOpenDomain.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcShareEnum.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcShareGetInfo.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Netdfs.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Samr.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrAliasHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrDomainHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrPolicyHandle.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Srvsvc.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrBuffer.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrException.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrHyper.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrLong.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrObject.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrShort.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrSmall.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\Rpc.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\UnicodeString.cs" /> + <Compile Include="IO\SharpCifs\Dcerpc\UUID.cs" /> + <Compile Include="IO\SharpCifs\Netbios\Lmhosts.cs" /> + <Compile Include="IO\SharpCifs\Netbios\Name.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NameQueryRequest.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NameQueryResponse.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NameServiceClient.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NameServicePacket.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NbtAddress.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NbtException.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NodeStatusRequest.cs" /> + <Compile Include="IO\SharpCifs\Netbios\NodeStatusResponse.cs" /> + <Compile Include="IO\SharpCifs\Netbios\SessionRequestPacket.cs" /> + <Compile Include="IO\SharpCifs\Netbios\SessionRetargetResponsePacket.cs" /> + <Compile Include="IO\SharpCifs\Netbios\SessionServicePacket.cs" /> + <Compile Include="IO\SharpCifs\Ntlmssp\NtlmFlags.cs" /> + <Compile Include="IO\SharpCifs\Ntlmssp\NtlmMessage.cs" /> + <Compile Include="IO\SharpCifs\Ntlmssp\Type1Message.cs" /> + <Compile Include="IO\SharpCifs\Ntlmssp\Type2Message.cs" /> + <Compile Include="IO\SharpCifs\Ntlmssp\Type3Message.cs" /> + <Compile Include="IO\SharpCifs\Smb\ACE.cs" /> + <Compile Include="IO\SharpCifs\Smb\AllocInfo.cs" /> + <Compile Include="IO\SharpCifs\Smb\AndXServerMessageBlock.cs" /> + <Compile Include="IO\SharpCifs\Smb\BufferCache.cs" /> + <Compile Include="IO\SharpCifs\Smb\Dfs.cs" /> + <Compile Include="IO\SharpCifs\Smb\DfsReferral.cs" /> + <Compile Include="IO\SharpCifs\Smb\DosError.cs" /> + <Compile Include="IO\SharpCifs\Smb\DosFileFilter.cs" /> + <Compile Include="IO\SharpCifs\Smb\FileEntry.cs" /> + <Compile Include="IO\SharpCifs\Smb\IInfo.cs" /> + <Compile Include="IO\SharpCifs\Smb\NetServerEnum2.cs" /> + <Compile Include="IO\SharpCifs\Smb\NetServerEnum2Response.cs" /> + <Compile Include="IO\SharpCifs\Smb\NetShareEnum.cs" /> + <Compile Include="IO\SharpCifs\Smb\NetShareEnumResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtlmAuthenticator.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtlmChallenge.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtlmContext.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtlmPasswordAuthentication.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtStatus.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtTransQuerySecurityDesc.cs" /> + <Compile Include="IO\SharpCifs\Smb\NtTransQuerySecurityDescResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\Principal.cs" /> + <Compile Include="IO\SharpCifs\Smb\SecurityDescriptor.cs" /> + <Compile Include="IO\SharpCifs\Smb\ServerMessageBlock.cs" /> + <Compile Include="IO\SharpCifs\Smb\SID.cs" /> + <Compile Include="IO\SharpCifs\Smb\SigningDigest.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbAuthException.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComBlankResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComClose.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComCreateDirectory.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComDelete.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComDeleteDirectory.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComFindClose2.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComLogoffAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNegotiate.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNegotiateResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNTCreateAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNTCreateAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNtTransaction.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComNtTransactionResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComOpenAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComOpenAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComQueryInformation.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComQueryInformationResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComReadAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComReadAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComRename.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComSessionSetupAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComSessionSetupAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComTransaction.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComTransactionResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComTreeConnectAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComTreeConnectAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComTreeDisconnect.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComWrite.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComWriteAndX.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComWriteAndXResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbComWriteResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbConstants.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbException.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFile.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFileExtensions.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFileFilter.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFileInputStream.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFilenameFilter.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbFileOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbNamedPipe.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbRandomAccessFile.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbSession.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbShareInfo.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbTransport.cs" /> + <Compile Include="IO\SharpCifs\Smb\SmbTree.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2FindFirst2.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2FindFirst2Response.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2FindNext2.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2GetDfsReferral.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2GetDfsReferralResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2QueryFSInformation.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2QueryFSInformationResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2QueryPathInformation.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2QueryPathInformationResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2SetFileInformation.cs" /> + <Compile Include="IO\SharpCifs\Smb\Trans2SetFileInformationResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransactNamedPipeInputStream.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransactNamedPipeOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransCallNamedPipe.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransCallNamedPipeResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransPeekNamedPipe.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransPeekNamedPipeResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransTransactNamedPipe.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransTransactNamedPipeResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransWaitNamedPipe.cs" /> + <Compile Include="IO\SharpCifs\Smb\TransWaitNamedPipeResponse.cs" /> + <Compile Include="IO\SharpCifs\Smb\WinError.cs" /> + <Compile Include="IO\SharpCifs\UniAddress.cs" /> + <Compile Include="IO\SharpCifs\Util\Base64.cs" /> + <Compile Include="IO\SharpCifs\Util\DES.cs" /> + <Compile Include="IO\SharpCifs\Util\Encdec.cs" /> + <Compile Include="IO\SharpCifs\Util\Hexdump.cs" /> + <Compile Include="IO\SharpCifs\Util\HMACT64.cs" /> + <Compile Include="IO\SharpCifs\Util\LogStream.cs" /> + <Compile Include="IO\SharpCifs\Util\MD4.cs" /> + <Compile Include="IO\SharpCifs\Util\RC4.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\AbstractMap.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Arrays.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\BufferedReader.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\BufferedWriter.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\CharBuffer.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\CharSequence.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Collections.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ConcurrentHashMap.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\DateFormat.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\EnumeratorWrapper.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Exceptions.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Extensions.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FileInputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FileOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FilePath.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FileReader.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FileWriter.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FilterInputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\FilterOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Hashtable.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\HttpURLConnection.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ICallable.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IConcurrentMap.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IExecutor.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IFilenameFilter.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IFuture.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\InputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\InputStreamReader.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IPrivilegedAction.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\IRunnable.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Iterator.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\LinkageError.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Matcher.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\MD5.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\MD5Managed.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\MessageDigest.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\NetworkStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ObjectInputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ObjectOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\OutputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\OutputStreamWriter.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\PipedInputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\PipedOutputStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\PrintWriter.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Properties.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\RandomAccessFile.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ReentrantLock.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Reference.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Runtime.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\SimpleDateFormat.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\SocketEx.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\StringTokenizer.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\SynchronizedList.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\Thread.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ThreadFactory.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\ThreadPoolExecutor.cs" /> + <Compile Include="IO\SharpCifs\Util\Sharpen\WrappedSystemStream.cs" /> + <Compile Include="IO\SharpCifs\Util\Transport\Request.cs" /> + <Compile Include="IO\SharpCifs\Util\Transport\Response.cs" /> + <Compile Include="IO\SharpCifs\Util\Transport\Transport.cs" /> + <Compile Include="IO\SharpCifs\Util\Transport\TransportException.cs" /> + <Compile Include="Logging\NLogger.cs" /> + <Compile Include="Logging\NlogManager.cs" /> + <Compile Include="Networking\NetworkManager.cs" /> + <Compile Include="Net\DisposableManagedObjectBase.cs" /> + <Compile Include="Net\NetAcceptSocket.cs" /> + <Compile Include="Net\SocketAcceptor.cs" /> + <Compile Include="Net\SocketFactory.cs" /> + <Compile Include="Net\UdpSocket.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Reflection\AssemblyInfo.cs" /> + <Compile Include="ScheduledTasks\DailyTrigger.cs" /> + <Compile Include="ScheduledTasks\IntervalTrigger.cs" /> + <Compile Include="ScheduledTasks\ScheduledTaskWorker.cs" /> + <Compile Include="ScheduledTasks\StartupTrigger.cs" /> + <Compile Include="ScheduledTasks\SystemEventTrigger.cs" /> + <Compile Include="ScheduledTasks\TaskManager.cs" /> + <Compile Include="ScheduledTasks\Tasks\DeleteCacheFileTask.cs" /> + <Compile Include="ScheduledTasks\Tasks\DeleteLogFileTask.cs" /> + <Compile Include="ScheduledTasks\Tasks\ReloadLoggerFileTask.cs" /> + <Compile Include="ScheduledTasks\WeeklyTrigger.cs" /> + <Compile Include="Serialization\JsonSerializer.cs" /> + <Compile Include="Serialization\XmlSerializer.cs" /> + <Compile Include="TextEncoding\TextEncoding.cs" /> + <Compile Include="TextEncoding\TextEncodingDetect.cs" /> + <Compile Include="TextEncoding\UniversalDetector\CharsetDetector.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\Big5Prober.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\BitPackage.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\CharDistributionAnalyser.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\CharsetProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\Charsets.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\CodingStateMachine.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\EscCharsetProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\EscSM.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\EUCJPProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\EUCKRProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\EUCTWProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\GB18030Prober.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\HebrewProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\JapaneseContextAnalyser.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangBulgarianModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangCyrillicModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangGreekModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangHebrewModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangHungarianModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\LangThaiModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\Latin1Prober.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\MBCSGroupProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\MBCSSM.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\SBCharsetProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\SBCSGroupProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\SequenceModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\SJISProber.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\SMModel.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\UniversalDetector.cs" /> + <Compile Include="TextEncoding\UniversalDetector\Core\UTF8Prober.cs" /> + <Compile Include="TextEncoding\UniversalDetector\DetectionConfidence.cs" /> + <Compile Include="TextEncoding\UniversalDetector\ICharsetDetector.cs" /> + <Compile Include="Threading\CommonTimer.cs" /> + <Compile Include="Threading\TimerFactory.cs" /> + <Compile Include="Xml\XmlReaderSettingsFactory.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> + <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project> + <Name>MediaBrowser.Common</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj"> + <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project> + <Name>MediaBrowser.Model</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="packages.config" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/Emby.Common.Implementations/Emby.Common.Implementations.xproj b/Emby.Common.Implementations/Emby.Common.Implementations.xproj deleted file mode 100644 index 5bb6e4e58..000000000 --- a/Emby.Common.Implementations/Emby.Common.Implementations.xproj +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> - <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> - </PropertyGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" /> - <PropertyGroup Label="Globals"> - <ProjectGuid>5a27010a-09c6-4e86-93ea-437484c10917</ProjectGuid> - <RootNamespace>Emby.Common.Implementations</RootNamespace> - <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath> - <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath> - <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> - </PropertyGroup> - <PropertyGroup> - <SchemaVersion>2.0</SchemaVersion> - </PropertyGroup> - <ItemGroup> - <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" /> - <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" /> - </ItemGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" /> -</Project>
\ No newline at end of file diff --git a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs b/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs index 27fc642f1..89aa787b5 100644 --- a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs +++ b/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs @@ -10,7 +10,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo { public class EnvironmentInfo : IEnvironmentInfo { - public MediaBrowser.Model.System.Architecture? CustomArchitecture { get; set; } + public Architecture? CustomArchitecture { get; set; } public MediaBrowser.Model.System.OperatingSystem? CustomOperatingSystem { get; set; } public virtual MediaBrowser.Model.System.OperatingSystem OperatingSystem @@ -22,7 +22,6 @@ namespace Emby.Common.Implementations.EnvironmentInfo return CustomOperatingSystem.Value; } -#if NET46 switch (Environment.OSVersion.Platform) { case PlatformID.MacOSX: @@ -32,20 +31,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo case PlatformID.Unix: return MediaBrowser.Model.System.OperatingSystem.Linux; } -#elif NETSTANDARD1_6 - if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - return OperatingSystem.OSX; - } - if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return OperatingSystem.Windows; - } - if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - return OperatingSystem.Linux; - } -#endif + return MediaBrowser.Model.System.OperatingSystem.Windows; } } @@ -54,12 +40,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo { get { -#if NET46 return Environment.OSVersion.Platform.ToString(); -#elif NETSTANDARD1_6 - return System.Runtime.InteropServices.RuntimeInformation.OSDescription; -#endif - return "Operating System"; } } @@ -67,12 +48,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo { get { -#if NET46 return Environment.OSVersion.Version.ToString() + " " + Environment.OSVersion.ServicePack.ToString(); -#elif NETSTANDARD1_6 - return System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; -#endif - return "1.0"; } } @@ -84,7 +60,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo } } - public MediaBrowser.Model.System.Architecture SystemArchitecture + public Architecture SystemArchitecture { get { @@ -92,22 +68,8 @@ namespace Emby.Common.Implementations.EnvironmentInfo { return CustomArchitecture.Value; } -#if NET46 + return Environment.Is64BitOperatingSystem ? MediaBrowser.Model.System.Architecture.X64 : MediaBrowser.Model.System.Architecture.X86; -#elif NETSTANDARD1_6 - switch(System.Runtime.InteropServices.RuntimeInformation.OSArchitecture) - { - case System.Runtime.InteropServices.Architecture.Arm: - return MediaBrowser.Model.System.Architecture.Arm; - case System.Runtime.InteropServices.Architecture.Arm64: - return MediaBrowser.Model.System.Architecture.Arm64; - case System.Runtime.InteropServices.Architecture.X64: - return MediaBrowser.Model.System.Architecture.X64; - case System.Runtime.InteropServices.Architecture.X86: - return MediaBrowser.Model.System.Architecture.X86; - } -#endif - return MediaBrowser.Model.System.Architecture.X64; } } diff --git a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs index eb9bc1bd0..c2a310c0e 100644 --- a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -66,13 +66,11 @@ namespace Emby.Common.Implementations.HttpClientManager _appPaths = appPaths; _defaultUserAgentFn = defaultUserAgentFn; -#if NET46 // http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c ServicePointManager.Expect100Continue = false; // Trakt requests sometimes fail without this ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls; -#endif } /// <summary> @@ -129,7 +127,6 @@ namespace Emby.Common.Implementations.HttpClientManager private void AddIpv4Option(HttpWebRequest request, HttpRequestOptions options) { -#if NET46 request.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) => { if (remoteEndPoint.AddressFamily == AddressFamily.InterNetwork) @@ -138,7 +135,6 @@ namespace Emby.Common.Implementations.HttpClientManager } throw new InvalidOperationException("no IPv4 address"); }; -#endif } private WebRequest GetRequest(HttpRequestOptions options, string method) @@ -165,7 +161,6 @@ namespace Emby.Common.Implementations.HttpClientManager AddRequestHeaders(httpWebRequest, options); -#if NET46 if (options.EnableHttpCompression) { if (options.DecompressionMethod.HasValue) @@ -183,48 +178,33 @@ namespace Emby.Common.Implementations.HttpClientManager { httpWebRequest.AutomaticDecompression = DecompressionMethods.None; } -#endif } -#if NET46 request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache); -#endif if (httpWebRequest != null) { if (options.EnableKeepAlive) { -#if NET46 httpWebRequest.KeepAlive = true; -#endif } } request.Method = method; -#if NET46 request.Timeout = options.TimeoutMs; -#endif if (httpWebRequest != null) { if (!string.IsNullOrEmpty(options.Host)) { -#if NET46 httpWebRequest.Host = options.Host; -#elif NETSTANDARD1_6 - httpWebRequest.Headers["Host"] = options.Host; -#endif } if (!string.IsNullOrEmpty(options.Referer)) { -#if NET46 httpWebRequest.Referer = options.Referer; -#elif NETSTANDARD1_6 - httpWebRequest.Headers["Referer"] = options.Referer; -#endif } } @@ -235,9 +215,7 @@ namespace Emby.Common.Implementations.HttpClientManager { request.Credentials = GetCredential(url, parts[0], parts[1]); // TODO: .net core ?? -#if NET46 request.PreAuthenticate = true; -#endif } } @@ -269,11 +247,7 @@ namespace Emby.Common.Implementations.HttpClientManager } else { -#if NET46 request.Headers.Set(header.Key, header.Value); -#elif NETSTANDARD1_6 - request.Headers[header.Key] = header.Value; -#endif } } @@ -285,11 +259,7 @@ namespace Emby.Common.Implementations.HttpClientManager private void SetUserAgent(HttpWebRequest request, string userAgent) { -#if NET46 request.UserAgent = userAgent; -#elif NETSTANDARD1_6 - request.Headers["User-Agent"] = userAgent; -#endif } /// <summary> @@ -465,9 +435,7 @@ namespace Emby.Common.Implementations.HttpClientManager httpWebRequest.ContentType = options.RequestContentType ?? "application/x-www-form-urlencoded"; -#if NET46 httpWebRequest.ContentLength = bytes.Length; -#endif (await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length); } catch (Exception ex) @@ -950,7 +918,6 @@ namespace Emby.Common.Implementations.HttpClientManager private Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout) { -#if NET46 var taskCompletion = new TaskCompletionSource<WebResponse>(); Task<WebResponse> asyncTask = Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null); @@ -963,9 +930,6 @@ namespace Emby.Common.Implementations.HttpClientManager asyncTask.ContinueWith(callback.OnError, TaskContinuationOptions.OnlyOnFaulted); return taskCompletion.Task; -#endif - - return request.GetResponseAsync(); } private static void TimeoutCallback(object state, bool timedOut) diff --git a/Emby.Common.Implementations/Net/SocketFactory.cs b/Emby.Common.Implementations/Net/SocketFactory.cs index 39f236afa..3562a8644 100644 --- a/Emby.Common.Implementations/Net/SocketFactory.cs +++ b/Emby.Common.Implementations/Net/SocketFactory.cs @@ -188,16 +188,7 @@ namespace Emby.Common.Implementations.Net try { -#if NET46 - retVal.ExclusiveAddressUse = false; -#else - // The ExclusiveAddressUse acceptSocket option is a Windows-specific option that, when set to "true," tells Windows not to allow another acceptSocket to use the same local address as this acceptSocket - // See https://github.com/dotnet/corefx/pull/11509 for more details - if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows)) - { - retVal.ExclusiveAddressUse = false; - } -#endif + retVal.ExclusiveAddressUse = false; //retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive); diff --git a/Emby.Common.Implementations/Net/UdpSocket.cs b/Emby.Common.Implementations/Net/UdpSocket.cs index f9181eb6a..678cf6f03 100644 --- a/Emby.Common.Implementations/Net/UdpSocket.cs +++ b/Emby.Common.Implementations/Net/UdpSocket.cs @@ -116,129 +116,64 @@ namespace Emby.Common.Implementations.Net private set; } - public Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken) + private readonly AsyncCallback _defaultAsyncCallback = (i) => { }; + + public IAsyncResult BeginReceive(byte[] buffer, int offset, int count, AsyncCallback callback) { - ThrowIfDisposed(); - var tcs = new TaskCompletionSource<SocketReceiveResult>(); EndPoint receivedFromEndPoint = new IPEndPoint(IPAddress.Any, 0); - var state = new AsyncReceiveState(_Socket, receivedFromEndPoint); - state.TaskCompletionSource = tcs; - - cancellationToken.Register(() => tcs.TrySetCanceled()); - - _receiveSocketAsyncEventArgs.RemoteEndPoint = receivedFromEndPoint; - _currentReceiveTaskCompletionSource = tcs; - - try - { - var willRaiseEvent = _Socket.ReceiveFromAsync(_receiveSocketAsyncEventArgs); - - if (!willRaiseEvent) - { - _receiveSocketAsyncEventArgs_Completed(this, _receiveSocketAsyncEventArgs); - } - } - catch (Exception ex) - { - tcs.TrySetException(ex); - } - - return tcs.Task; + return _Socket.BeginReceiveFrom(buffer, offset, count, SocketFlags.None, ref receivedFromEndPoint, callback, buffer); } - public Task SendAsync(byte[] buffer, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken) + public SocketReceiveResult EndReceive(IAsyncResult result) { - ThrowIfDisposed(); - - if (buffer == null) throw new ArgumentNullException("messageData"); - if (endPoint == null) throw new ArgumentNullException("endPoint"); + IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); + EndPoint remoteEndPoint = (EndPoint)sender; - var ipEndPoint = NetworkManager.ToIPEndPoint(endPoint); + var receivedBytes = _Socket.EndReceiveFrom(result, ref remoteEndPoint); -#if NETSTANDARD1_6 + var buffer = (byte[]) result.AsyncState; - if (size != buffer.Length) + return new SocketReceiveResult { - byte[] copy = new byte[size]; - Buffer.BlockCopy(buffer, 0, copy, 0, size); - buffer = copy; - } - - cancellationToken.ThrowIfCancellationRequested(); - - _Socket.SendTo(buffer, ipEndPoint); - return Task.FromResult(true); -#else - var taskSource = new TaskCompletionSource<bool>(); - - try - { - _Socket.BeginSendTo(buffer, 0, size, SocketFlags.None, ipEndPoint, result => - { - if (cancellationToken.IsCancellationRequested) - { - taskSource.TrySetCanceled(); - return; - } - try - { - _Socket.EndSend(result); - taskSource.TrySetResult(true); - } - catch (Exception ex) - { - taskSource.TrySetException(ex); - } - - }, null); - } - catch (Exception ex) - { - taskSource.TrySetException(ex); - } - - return taskSource.Task; -#endif - //ThrowIfDisposed(); - - //if (buffer == null) throw new ArgumentNullException("messageData"); - //if (endPoint == null) throw new ArgumentNullException("endPoint"); - - //cancellationToken.ThrowIfCancellationRequested(); + ReceivedBytes = receivedBytes, + RemoteEndPoint = ToIpEndPointInfo((IPEndPoint)remoteEndPoint), + Buffer = buffer, + LocalIPAddress = LocalIPAddress + }; + } - //var tcs = new TaskCompletionSource<int>(); + public Task<SocketReceiveResult> ReceiveAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + { + var result = BeginReceive(buffer, offset, count, _defaultAsyncCallback); - //cancellationToken.Register(() => tcs.TrySetCanceled()); + return Task.Factory.FromAsync(result, EndReceive); + } - //_sendSocketAsyncEventArgs.SetBuffer(buffer, 0, size); - //_sendSocketAsyncEventArgs.RemoteEndPoint = NetworkManager.ToIPEndPoint(endPoint); - //_currentSendTaskCompletionSource = tcs; + public Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken) + { + var buffer = new byte[8192]; - //var willRaiseEvent = _Socket.SendAsync(_sendSocketAsyncEventArgs); + return ReceiveAsync(buffer, 0, buffer.Length, cancellationToken); + } - //if (!willRaiseEvent) - //{ - // _sendSocketAsyncEventArgs_Completed(this, _sendSocketAsyncEventArgs); - //} + public Task SendToAsync(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken) + { + var result = BeginSendTo(buffer, offset, size, endPoint, _defaultAsyncCallback, null); - //return tcs.Task; + return Task.Factory.FromAsync(result, EndSendTo); } - public async Task SendWithLockAsync(byte[] buffer, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken) + public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, AsyncCallback callback, object state) { - ThrowIfDisposed(); + var ipEndPoint = NetworkManager.ToIPEndPoint(endPoint); - //await _sendLock.WaitAsync(cancellationToken).ConfigureAwait(false); + return _Socket.BeginSendTo(buffer, offset, size, SocketFlags.None, ipEndPoint, callback, state); + } - try - { - await SendAsync(buffer, size, endPoint, cancellationToken).ConfigureAwait(false); - } - finally - { - //_sendLock.Release(); - } + public int EndSendTo(IAsyncResult result) + { + return _Socket.EndSendTo(result); } protected override void Dispose(bool disposing) @@ -274,36 +209,6 @@ namespace Emby.Common.Implementations.Net return NetworkManager.ToIpEndPointInfo(endpoint); } - private void ProcessResponse(IAsyncResult asyncResult) - { -#if NET46 - var state = asyncResult.AsyncState as AsyncReceiveState; - try - { - var bytesRead = state.Socket.EndReceiveFrom(asyncResult, ref state.RemoteEndPoint); - - var ipEndPoint = state.RemoteEndPoint as IPEndPoint; - state.TaskCompletionSource.SetResult( - new SocketReceiveResult - { - Buffer = state.Buffer, - ReceivedBytes = bytesRead, - RemoteEndPoint = ToIpEndPointInfo(ipEndPoint), - LocalIPAddress = LocalIPAddress - } - ); - } - catch (ObjectDisposedException) - { - state.TaskCompletionSource.SetCanceled(); - } - catch (Exception ex) - { - state.TaskCompletionSource.SetException(ex); - } -#endif - } - private class AsyncReceiveState { public AsyncReceiveState(Socket socket, EndPoint remoteEndPoint) diff --git a/Emby.Common.Implementations/Properties/AssemblyInfo.cs b/Emby.Common.Implementations/Properties/AssemblyInfo.cs index 1a5abcb27..787f18997 100644 --- a/Emby.Common.Implementations/Properties/AssemblyInfo.cs +++ b/Emby.Common.Implementations/Properties/AssemblyInfo.cs @@ -2,18 +2,33 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following +// General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. +[assembly: AssemblyTitle("Emby.Common.Implementations")] +[assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Emby.Common.Implementations")] +[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5a27010a-09c6-4e86-93ea-437484c10917")] +[assembly: Guid("1e37a338-9f57-4b70-bd6d-bb9c591e319b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")]
\ No newline at end of file diff --git a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs index 7a92f02d6..87821bf7a 100644 --- a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs +++ b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs @@ -9,18 +9,12 @@ namespace Emby.Common.Implementations.Reflection { public Stream GetManifestResourceStream(Type type, string resource) { -#if NET46 return type.Assembly.GetManifestResourceStream(resource); -#endif - return type.GetTypeInfo().Assembly.GetManifestResourceStream(resource); } public string[] GetManifestResourceNames(Type type) { -#if NET46 return type.Assembly.GetManifestResourceNames(); -#endif - return type.GetTypeInfo().Assembly.GetManifestResourceNames(); } public Assembly[] GetCurrentAssemblies() diff --git a/Emby.Common.Implementations/Serialization/XmlSerializer.cs b/Emby.Common.Implementations/Serialization/XmlSerializer.cs index 3583f998e..ad2708387 100644 --- a/Emby.Common.Implementations/Serialization/XmlSerializer.cs +++ b/Emby.Common.Implementations/Serialization/XmlSerializer.cs @@ -78,18 +78,11 @@ namespace Emby.Common.Implementations.Serialization /// <param name="stream">The stream.</param> public void SerializeToStream(object obj, Stream stream) { -#if NET46 - using (var writer = new XmlTextWriter(stream, null)) + using (var writer = new XmlTextWriter(stream, null)) { writer.Formatting = Formatting.Indented; SerializeToWriter(obj, writer); } -#else - using (var writer = XmlWriter.Create(stream)) - { - SerializeToWriter(obj, writer); - } -#endif } /// <summary> diff --git a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs b/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs index 806290cf4..35c266cdb 100644 --- a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs +++ b/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs @@ -11,9 +11,7 @@ namespace Emby.Common.Implementations.Xml if (!enableValidation) { -#if NET46 settings.ValidationType = ValidationType.None; -#endif } return settings; diff --git a/Emby.Common.Implementations/packages.config b/Emby.Common.Implementations/packages.config new file mode 100644 index 000000000..18022eb2e --- /dev/null +++ b/Emby.Common.Implementations/packages.config @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="NLog" version="4.4.3" targetFramework="net462" /> + <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" /> + <package id="SharpCompress" version="0.14.0" targetFramework="net462" /> + <package id="SimpleInjector" version="4.0.7" targetFramework="net462" /> +</packages>
\ No newline at end of file diff --git a/Emby.Common.Implementations/project.json b/Emby.Common.Implementations/project.json deleted file mode 100644 index ff60c740e..000000000 --- a/Emby.Common.Implementations/project.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "version": "1.0.0-*", - - "dependencies": { - - }, - - "frameworks": { - "net46": { - "frameworkAssemblies": { - "System.Collections": "4.0.0.0", - "System.IO": "4.0.0.0", - "System.Net": "4.0.0.0", - "System.Net.Http": "4.0.0.0", - "System.Net.Primitives": "4.0.0.0", - "System.Net.Http.WebRequest": "4.0.0.0", - "System.Reflection": "4.0.0.0", - "System.Runtime": "4.0.0.0", - "System.Runtime.Extensions": "4.0.0.0", - "System.Text.Encoding": "4.0.0.0", - "System.Threading": "4.0.0.0", - "System.Threading.Tasks": "4.0.0.0", - "System.Xml.ReaderWriter": "4.0.0" - }, - "dependencies": { - "SimpleInjector": "3.2.4", - "ServiceStack.Text": "4.5.4", - "NLog": "4.4.0-betaV15", - "sharpcompress": "0.14.0", - "MediaBrowser.Model": { - "target": "project" - }, - "MediaBrowser.Common": { - "target": "project" - } - } - }, - "netstandard1.6": { - "imports": "dnxcore50", - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.IO.FileSystem.DriveInfo": "4.3.0", - "System.Diagnostics.Process": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Net.Requests": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XmlSerializer": "4.3.0", - "System.Net.Http": "4.3.2", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.Net.NetworkInformation": "4.3.0", - "System.Net.NameResolution": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime.Loader": "4.3.0", - "SimpleInjector": "3.2.4", - "ServiceStack.Text.Core": "1.0.27", - "NLog": "4.4.0-betaV15", - "sharpcompress": "0.14.0", - "System.AppDomain": "2.0.11", - "MediaBrowser.Model": { - "target": "project" - }, - "MediaBrowser.Common": { - "target": "project" - } - } - } - } -} diff --git a/MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs b/Emby.Server.Core/ApplicationPathHelper.cs index 254a782db..e83d5444a 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs +++ b/Emby.Server.Core/ApplicationPathHelper.cs @@ -2,7 +2,7 @@ using System.Configuration; using System.IO; -namespace MediaBrowser.Server.Startup.Common +namespace Emby.Server.Core { public static class ApplicationPathHelper { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs b/Emby.Server.Core/Cryptography/ASN1.cs index a25c27073..f5c826436 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs +++ b/Emby.Server.Core/Cryptography/ASN1.cs @@ -34,7 +34,8 @@ using System.Collections; using System.IO; using System.Text; -namespace Emby.Common.Implementations.Security { +namespace Emby.Server.Core.Cryptography +{ // References: // a. ITU ASN.1 standards (free download) diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs b/Emby.Server.Core/Cryptography/ASN1Convert.cs index 8a2a487c8..851d36dc7 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs +++ b/Emby.Server.Core/Cryptography/ASN1Convert.cs @@ -34,7 +34,7 @@ using System.Globalization; using System.Security.Cryptography; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // References: diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs b/Emby.Server.Core/Cryptography/BitConverterLE.cs index 240c958a3..34e6bf6dc 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs +++ b/Emby.Server.Core/Cryptography/BitConverterLE.cs @@ -29,7 +29,7 @@ using System; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { internal sealed class BitConverterLE { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs b/Emby.Server.Core/Cryptography/CertificateGenerator.cs index 4f5b3d004..2600d7470 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs +++ b/Emby.Server.Core/Cryptography/CertificateGenerator.cs @@ -3,7 +3,7 @@ using System; using System.Collections; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public class CertificateGenerator { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs b/Emby.Server.Core/Cryptography/CryptoConvert.cs index c6e466534..70a91bfff 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs +++ b/Emby.Server.Core/Cryptography/CryptoConvert.cs @@ -32,7 +32,7 @@ using System.Globalization; using System.Security.Cryptography; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public sealed class CryptoConvert { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs b/Emby.Server.Core/Cryptography/PKCS1.cs index 85bf9db38..24c0708c5 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs +++ b/Emby.Server.Core/Cryptography/PKCS1.cs @@ -31,7 +31,7 @@ using System; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // References: diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs b/Emby.Server.Core/Cryptography/PKCS12.cs index 2205a7160..50f3776d9 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs +++ b/Emby.Server.Core/Cryptography/PKCS12.cs @@ -37,7 +37,7 @@ using System.IO; using System.Security.Cryptography; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public class PKCS5 { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs b/Emby.Server.Core/Cryptography/PKCS7.cs index 1b1a3295b..475854500 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs +++ b/Emby.Server.Core/Cryptography/PKCS7.cs @@ -33,7 +33,7 @@ using System; using System.Collections; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public sealed class PKCS7 { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs b/Emby.Server.Core/Cryptography/PKCS8.cs index b58ebdaf9..7e9a27298 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs +++ b/Emby.Server.Core/Cryptography/PKCS8.cs @@ -33,7 +33,7 @@ using System; using System.Collections; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public sealed class PKCS8 { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs b/Emby.Server.Core/Cryptography/PfxGenerator.cs index 3f9b90ac1..2d1dd649e 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs +++ b/Emby.Server.Core/Cryptography/PfxGenerator.cs @@ -2,7 +2,7 @@ using System.Collections; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public class PFXGenerator { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs b/Emby.Server.Core/Cryptography/X501Name.cs index 93e1a6bef..3318f95e2 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs +++ b/Emby.Server.Core/Cryptography/X501Name.cs @@ -31,7 +31,7 @@ using System; using System.Globalization; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // References: diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs b/Emby.Server.Core/Cryptography/X509Builder.cs index e16855959..a2e292350 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs +++ b/Emby.Server.Core/Cryptography/X509Builder.cs @@ -33,7 +33,7 @@ using System; using System.Globalization; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { public abstract class X509Builder { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs b/Emby.Server.Core/Cryptography/X509Certificate.cs index f49445f0e..3de58cfee 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs +++ b/Emby.Server.Core/Cryptography/X509Certificate.cs @@ -34,7 +34,7 @@ using System.Security.Cryptography; using System.Security.Permissions; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // References: diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs b/Emby.Server.Core/Cryptography/X509CertificateBuilder.cs index fb6f8ec72..cecff6578 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs +++ b/Emby.Server.Core/Cryptography/X509CertificateBuilder.cs @@ -32,7 +32,7 @@ using System; using System.Security.Cryptography; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // From RFC3280 /* diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs b/Emby.Server.Core/Cryptography/X509CertificateCollection.cs index 5d353f9cf..a129bfc1a 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs +++ b/Emby.Server.Core/Cryptography/X509CertificateCollection.cs @@ -31,7 +31,7 @@ using System; using System.Collections; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { [Serializable] diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs b/Emby.Server.Core/Cryptography/X509Extension.cs index e82f52bac..36b17deba 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs +++ b/Emby.Server.Core/Cryptography/X509Extension.cs @@ -31,7 +31,7 @@ using System; using System.Globalization; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { /* * Extension ::= SEQUENCE { diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs b/Emby.Server.Core/Cryptography/X509Extensions.cs index c7d5f0046..018a04d79 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs +++ b/Emby.Server.Core/Cryptography/X509Extensions.cs @@ -32,7 +32,7 @@ using System; using System.Collections; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { /* * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs b/Emby.Server.Core/Cryptography/X520Attributes.cs index 5062bf80a..da7fd2b82 100644 --- a/MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs +++ b/Emby.Server.Core/Cryptography/X520Attributes.cs @@ -30,7 +30,7 @@ using System; using System.Text; -namespace Emby.Common.Implementations.Security +namespace Emby.Server.Core.Cryptography { // References: diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/Emby.Server.Core/Emby.Server.Core.csproj index 5955d4c96..6c8daf9c9 100644 --- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj +++ b/Emby.Server.Core/Emby.Server.Core.csproj @@ -1,17 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{B90AB8F2-1BFF-4568-A3FD-2A338A435A75}</ProjectGuid> + <ProjectGuid>{776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>MediaBrowser.Server.Startup.Common</RootNamespace> - <AssemblyName>MediaBrowser.Server.Startup.Common</AssemblyName> - <TargetFrameworkVersion>v4.6</TargetFrameworkVersion> + <RootNamespace>Emby.Server.Core</RootNamespace> + <AssemblyName>Emby.Server.Core</AssemblyName> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> - <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> @@ -25,7 +24,7 @@ <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>None</DebugType> + <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> @@ -34,13 +33,18 @@ <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <ItemGroup> - <Reference Include="Emby.Server.Core"> - <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath> - </Reference> <Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=1.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.2\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll</HintPath> <Private>True</Private> </Reference> + <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> + <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath> + <Private>True</Private> + </Reference> <Reference Include="System" /> <Reference Include="System.Configuration" /> <Reference Include="System.Core" /> @@ -48,12 +52,14 @@ <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="..\SharedVersion.cs"> <Link>Properties\SharedVersion.cs</Link> </Compile> + <Compile Include="ApplicationHost.cs" /> <Compile Include="ApplicationPathHelper.cs" /> <Compile Include="Cryptography\ASN1.cs" /> <Compile Include="Cryptography\ASN1Convert.cs" /> @@ -73,16 +79,41 @@ <Compile Include="Cryptography\X509Extension.cs" /> <Compile Include="Cryptography\X509Extensions.cs" /> <Compile Include="Cryptography\X520Attributes.cs" /> + <Compile Include="EntryPoints\ExternalPortForwarding.cs" /> + <Compile Include="HttpServerFactory.cs" /> + <Compile Include="IO\LibraryMonitor.cs" /> <Compile Include="IO\MemoryStreamProvider.cs" /> + <Compile Include="Localization\TextLocalizer.cs" /> + <Compile Include="Logging\ConsoleLogger.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="SystemEvents.cs" /> <Compile Include="UpdateLevelHelper.cs" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj"> + <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project> + <Name>Emby.Common.Implementations</Name> + </ProjectReference> + <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj"> + <Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project> + <Name>Emby.Dlna</Name> + </ProjectReference> + <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj"> + <Project>{08fff49b-f175-4807-a2b5-73b0ebd9f716}</Project> + <Name>Emby.Drawing</Name> + </ProjectReference> + <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj"> + <Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project> + <Name>Emby.Photos</Name> + </ProjectReference> <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj"> <Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project> <Name>Emby.Server.Implementations</Name> </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj"> + <Project>{4fd51ac5-2c16-4308-a993-c3a84f3b4582}</Project> + <Name>MediaBrowser.Api</Name> + </ProjectReference> <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project> <Name>MediaBrowser.Common</Name> @@ -91,16 +122,51 @@ <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project> <Name>MediaBrowser.Controller</Name> </ProjectReference> + <ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj"> + <Project>{7ef9f3e0-697d-42f3-a08f-19deb5f84392}</Project> + <Name>MediaBrowser.LocalMetadata</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj"> + <Project>{0bd82fa6-eb8a-4452-8af5-74f9c3849451}</Project> + <Name>MediaBrowser.MediaEncoding</Name> + </ProjectReference> <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj"> <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project> <Name>MediaBrowser.Model</Name> </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Providers\MediaBrowser.Providers.csproj"> + <Project>{442b5058-dcaf-4263-bb6a-f21e31120a1b}</Project> + <Name>MediaBrowser.Providers</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj"> + <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project> + <Name>MediaBrowser.Server.Implementations</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj"> + <Project>{5624b7b5-b5a7-41d8-9f10-cc5611109619}</Project> + <Name>MediaBrowser.WebDashboard</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj"> + <Project>{23499896-b135-4527-8574-c26e926ea99e}</Project> + <Name>MediaBrowser.XbmcMetadata</Name> + </ProjectReference> + <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj"> + <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project> + <Name>Mono.Nat</Name> + </ProjectReference> + <ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj"> + <Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project> + <Name>OpenSubtitlesHandler</Name> + </ProjectReference> + <ProjectReference Include="..\SocketHttpListener\SocketHttpListener.csproj"> + <Project>{1d74413b-e7cf-455b-b021-f52bdf881542}</Project> + <Name>SocketHttpListener</Name> + </ProjectReference> </ItemGroup> <ItemGroup> <None Include="app.config" /> <None Include="packages.config" /> </ItemGroup> - <ItemGroup /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/Emby.Server.Core/Emby.Server.Core.xproj b/Emby.Server.Core/Emby.Server.Core.xproj deleted file mode 100644 index fefaa6284..000000000 --- a/Emby.Server.Core/Emby.Server.Core.xproj +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> - <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> - </PropertyGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" /> - <PropertyGroup Label="Globals"> - <ProjectGuid>65aa7d67-8059-40cd-91f1-16d02687226c</ProjectGuid> - <RootNamespace>Emby.Server.Core</RootNamespace> - <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath> - <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath> - <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> - </PropertyGroup> - <PropertyGroup> - <SchemaVersion>2.0</SchemaVersion> - </PropertyGroup> - <ItemGroup> - <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj" /> - <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj" /> - <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj" /> - <ProjectReference Include="..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj" /> - <ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj" /> - <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj" /> - <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj" /> - <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj" /> - <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" /> - <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" /> - <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" /> - <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" /> - </ItemGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" /> -</Project>
\ No newline at end of file diff --git a/Emby.Server.Core/HttpServerFactory.cs b/Emby.Server.Core/HttpServerFactory.cs index dfd435c33..c30355f7a 100644 --- a/Emby.Server.Core/HttpServerFactory.cs +++ b/Emby.Server.Core/HttpServerFactory.cs @@ -3,6 +3,7 @@ using System.IO; using System.Net.Security; using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; +using System.Threading; using System.Threading.Tasks; using Emby.Common.Implementations.Net; using Emby.Server.Implementations.HttpServer; @@ -33,10 +34,10 @@ namespace Emby.Server.Core /// <returns>IHttpServer.</returns> public static IHttpServer CreateServer(IServerApplicationHost applicationHost, ILogManager logManager, - IServerConfigurationManager config, + IServerConfigurationManager config, INetworkManager networkmanager, IMemoryStreamFactory streamProvider, - string serverName, + string serverName, string defaultRedirectpath, ITextEncoding textEncoding, ISocketFactory socketFactory, @@ -51,16 +52,16 @@ namespace Emby.Server.Core var logger = logManager.GetLogger("HttpServer"); return new HttpListenerHost(applicationHost, - logger, - config, - serverName, - defaultRedirectpath, - networkmanager, - streamProvider, - textEncoding, - socketFactory, - cryptoProvider, - json, + logger, + config, + serverName, + defaultRedirectpath, + networkmanager, + streamProvider, + textEncoding, + socketFactory, + cryptoProvider, + json, xml, environment, certificate, @@ -82,7 +83,7 @@ namespace Emby.Server.Core { var netSocket = (NetAcceptSocket)acceptSocket; - return new NetworkStream(netSocket.Socket, ownsSocket); + return new WritableNetworkStream(netSocket.Socket, ownsSocket); } public Task AuthenticateSslStreamAsServer(Stream stream, ICertificate certificate) @@ -108,4 +109,80 @@ namespace Emby.Server.Core public X509Certificate X509Certificate { get; private set; } } + + public class WritableNetworkStream : Stream + { + private readonly Socket _socket; + + public WritableNetworkStream(Socket socket, bool ownsSocket) + { + _socket = socket; + } + + public override void Flush() + { + } + + public override bool CanRead + { + get { return true; } + } + public override bool CanSeek + { + get { return false; } + } + public override bool CanWrite + { + get { return true; } + } + public override long Length + { + get { throw new NotImplementedException(); } + } + public override long Position + { + get { throw new NotImplementedException(); } + set { throw new NotImplementedException(); } + } + + public override void Write(byte[] buffer, int offset, int count) + { + _socket.Send(buffer, offset, count, SocketFlags.None); + } + + public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state) + { + return _socket.BeginSend(buffer, offset, count, SocketFlags.None, callback, state); + } + + public override void EndWrite(IAsyncResult asyncResult) + { + _socket.EndSend(asyncResult); + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotImplementedException(); + } + + public override int Read(byte[] buffer, int offset, int count) + { + return _socket.Receive(buffer, offset, count, SocketFlags.None); + } + + public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state) + { + return _socket.BeginReceive(buffer, offset, count, SocketFlags.None, callback, state); + } + + public override int EndRead(IAsyncResult asyncResult) + { + return _socket.EndReceive(asyncResult); + } + } } diff --git a/MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs b/Emby.Server.Core/IO/MemoryStreamProvider.cs index 3ca0f4db5..f6dd1ecbc 100644 --- a/MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs +++ b/Emby.Server.Core/IO/MemoryStreamProvider.cs @@ -2,7 +2,7 @@ using MediaBrowser.Model.IO; using Microsoft.IO; -namespace MediaBrowser.Server.Startup.Common.IO +namespace Emby.Server.Core.IO { public class RecyclableMemoryStreamProvider : IMemoryStreamFactory { diff --git a/Emby.Server.Core/Properties/AssemblyInfo.cs b/Emby.Server.Core/Properties/AssemblyInfo.cs index 69df3d58d..ead042981 100644 --- a/Emby.Server.Core/Properties/AssemblyInfo.cs +++ b/Emby.Server.Core/Properties/AssemblyInfo.cs @@ -2,18 +2,33 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following +// General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. +[assembly: AssemblyTitle("Emby.Server.Core")] +[assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Emby.Server.Core")] +[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("65aa7d67-8059-40cd-91f1-16d02687226c")] +[assembly: Guid("776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")]
\ No newline at end of file diff --git a/MediaBrowser.Server.Startup.Common/SystemEvents.cs b/Emby.Server.Core/SystemEvents.cs index 8d5cd4ad8..8d5cd4ad8 100644 --- a/MediaBrowser.Server.Startup.Common/SystemEvents.cs +++ b/Emby.Server.Core/SystemEvents.cs diff --git a/MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs b/Emby.Server.Core/UpdateLevelHelper.cs index 7f3e27d91..e6ca37700 100644 --- a/MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs +++ b/Emby.Server.Core/UpdateLevelHelper.cs @@ -1,9 +1,7 @@ -using System; -using System.Configuration; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Configuration; using MediaBrowser.Model.Updates; -namespace MediaBrowser.Server.Startup.Common +namespace Emby.Server.Core { public static class UpdateLevelHelper { diff --git a/MediaBrowser.Server.Startup.Common/app.config b/Emby.Server.Core/app.config index e5b8d3d02..61096febb 100644 --- a/MediaBrowser.Server.Startup.Common/app.config +++ b/Emby.Server.Core/app.config @@ -3,8 +3,8 @@ <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> + <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" /> </dependentAssembly> </assemblyBinding> </runtime> diff --git a/Emby.Server.Core/packages.config b/Emby.Server.Core/packages.config new file mode 100644 index 000000000..24e8a26b6 --- /dev/null +++ b/Emby.Server.Core/packages.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.2" targetFramework="net462" /> + <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" /> + <package id="SimpleInjector" version="4.0.7" targetFramework="net462" /> +</packages>
\ No newline at end of file diff --git a/Emby.Server.Core/project.json b/Emby.Server.Core/project.json deleted file mode 100644 index fd4f9d6cf..000000000 --- a/Emby.Server.Core/project.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "version": "1.0.0-*", - - "dependencies": { - - }, - - "frameworks": { - "net46": { - "frameworkAssemblies": { - "System.Runtime": "4.0.0" - }, - "dependencies": { - "MediaBrowser.Model": { - "target": "project" - }, - "MediaBrowser.Common": { - "target": "project" - }, - "MediaBrowser.Controller": { - "target": "project" - }, - "Emby.Common.Implementations": { - "target": "project" - }, - "Mono.Nat": { - "target": "project" - }, - "Emby.Server.Implementations": { - "target": "project" - }, - "MediaBrowser.Server.Implementations": { - "target": "project" - }, - "Emby.Dlna": { - "target": "project" - }, - "Emby.Photos": { - "target": "project" - }, - "MediaBrowser.Api": { - "target": "project" - }, - "MediaBrowser.MediaEncoding": { - "target": "project" - }, - "MediaBrowser.XbmcMetadata": { - "target": "project" - }, - "MediaBrowser.LocalMetadata": { - "target": "project" - }, - "MediaBrowser.WebDashboard": { - "target": "project" - }, - "Emby.Drawing": { - "target": "project" - }, - "SocketHttpListener.Portable": { - "target": "project" - } - } - }, - "netstandard1.6": { - "imports": "dnxcore50", - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.AppDomain": "2.0.11", - "System.Globalization.Extensions": "4.3.0", - "System.IO.FileSystem.Watcher": "4.3.0", - "System.Net.Security": "4.3.1", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "MediaBrowser.Model": { - "target": "project" - }, - "MediaBrowser.Common": { - "target": "project" - }, - "MediaBrowser.Controller": { - "target": "project" - }, - "Emby.Common.Implementations": { - "target": "project" - }, - "Mono.Nat": { - "target": "project" - }, - "Emby.Server.Implementations": { - "target": "project" - }, - "MediaBrowser.Server.Implementations": { - "target": "project" - }, - "Emby.Dlna": { - "target": "project" - }, - "Emby.Photos": { - "target": "project" - }, - "MediaBrowser.Api": { - "target": "project" - }, - "MediaBrowser.MediaEncoding": { - "target": "project" - }, - "MediaBrowser.XbmcMetadata": { - "target": "project" - }, - "MediaBrowser.LocalMetadata": { - "target": "project" - }, - "MediaBrowser.WebDashboard": { - "target": "project" - }, - "Emby.Drawing": { - "target": "project" - }, - "SocketHttpListener.Portable": { - "target": "project" - } - } - } - } -} diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 7812cfb3c..49ba6c9f3 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -1245,10 +1245,6 @@ namespace Emby.Server.Implementations.Data { if (_config.Configuration.SkipDeserializationForBasicTypes) { - if (type == typeof(Person)) - { - return false; - } if (type == typeof(Channel)) { return false; @@ -1267,6 +1263,10 @@ namespace Emby.Server.Implementations.Data } } + if (type == typeof(Person)) + { + return false; + } if (type == typeof(MusicGenre)) { return false; @@ -5276,7 +5276,6 @@ namespace Emby.Server.Implementations.Data NameLessThan = query.NameLessThan, NameStartsWith = query.NameStartsWith, NameStartsWithOrGreater = query.NameStartsWithOrGreater, - AlbumArtistStartsWithOrGreater = query.AlbumArtistStartsWithOrGreater, Tags = query.Tags, OfficialRatings = query.OfficialRatings, GenreIds = query.GenreIds, diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index b2f1f0ceb..ff3a983db 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -10,9 +10,8 @@ <RootNamespace>Emby.Server.Implementations</RootNamespace> <AssemblyName>Emby.Server.Implementations</AssemblyName> <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <TargetFrameworkProfile>Profile7</TargetFrameworkProfile> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <TargetFrameworkProfile /> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -291,9 +290,9 @@ <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project> <Name>MediaBrowser.Server.Implementations</Name> </ProjectReference> - <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj"> - <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project> - <Name>SocketHttpListener.Portable</Name> + <ProjectReference Include="..\SocketHttpListener\SocketHttpListener.csproj"> + <Project>{1d74413b-e7cf-455b-b021-f52bdf881542}</Project> + <Name>SocketHttpListener</Name> </ProjectReference> <Reference Include="Emby.XmlTv, Version=1.0.6299.28292, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\Emby.XmlTv.1.0.8\lib\portable-net45+win8\Emby.XmlTv.dll</HintPath> @@ -313,6 +312,17 @@ </Reference> </ItemGroup> <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Runtime.Serialization" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> <EmbeddedResource Include="Localization\Core\ar.json" /> <EmbeddedResource Include="Localization\Core\bg-BG.json" /> <EmbeddedResource Include="Localization\Core\ca.json" /> @@ -410,7 +420,7 @@ <ItemGroup> <EmbeddedResource Include="Localization\Ratings\uk.txt" /> </ItemGroup> - <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> diff --git a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs index b3fcde745..2dfe6a9e3 100644 --- a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs +++ b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.IO; -using System.Net; using System.Text; using Emby.Server.Implementations.HttpServer; using Emby.Server.Implementations.HttpServer.SocketSharp; @@ -374,7 +373,7 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp this.pathInfo = request.RawUrl; } - this.pathInfo = WebUtility.UrlDecode(pathInfo); + this.pathInfo = System.Net.WebUtility.UrlDecode(pathInfo); this.pathInfo = NormalizePathInfo(pathInfo, mode); } return this.pathInfo; @@ -440,7 +439,7 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp cookies = new Dictionary<string, System.Net.Cookie>(); foreach (var cookie in this.request.Cookies) { - var httpCookie = (Cookie) cookie; + var httpCookie = (System.Net.Cookie) cookie; cookies[httpCookie.Name] = new System.Net.Cookie(httpCookie.Name, httpCookie.Value, httpCookie.Path, httpCookie.Domain); } } diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs index edff25156..885cfa3c8 100644 --- a/Emby.Server.Implementations/IO/FileRefresher.cs +++ b/Emby.Server.Implementations/IO/FileRefresher.cs @@ -231,7 +231,7 @@ namespace Emby.Server.Implementations.IO private bool IsFileLocked(string path) { - if (_environmentInfo.OperatingSystem != OperatingSystem.Windows) + if (_environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows) { // Causing lockups on linux return false; diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 125db7fd6..394e357c7 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1086,12 +1086,6 @@ namespace Emby.Server.Implementations.Library try { await PerformLibraryValidation(progress, cancellationToken).ConfigureAwait(false); - - if (!ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey) - { - ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey = true; - ConfigurationManager.SaveConfiguration(); - } } finally { diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index 50cb68a95..2afc3744f 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -511,8 +511,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun } // The UDP method is not working reliably on OSX, and on BSD it hasn't been tested yet - var enableHttpStream = _environment.OperatingSystem == OperatingSystem.OSX - || _environment.OperatingSystem == OperatingSystem.BSD; + var enableHttpStream = _environment.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.OSX + || _environment.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.BSD; enableHttpStream = true; if (enableHttpStream) { @@ -597,10 +597,12 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun // Need a way to set the Receive timeout on the socket otherwise this might never timeout? try { - await udpClient.SendAsync(discBytes, discBytes.Length, new IpEndPointInfo(new IpAddressInfo("255.255.255.255", IpAddressFamily.InterNetwork), 65001), cancellationToken); + await udpClient.SendToAsync(discBytes, 0, discBytes.Length, new IpEndPointInfo(new IpAddressInfo("255.255.255.255", IpAddressFamily.InterNetwork), 65001), cancellationToken); + var receiveBuffer = new byte[8192]; + while (!cancellationToken.IsCancellationRequested) { - var response = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + var response = await udpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); var deviceIp = response.RemoteEndPoint.IpAddress.Address; // check to make sure we have enough bytes received to be a valid message and make sure the 2nd byte is the discover reply byte diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs index 3202b7313..4dd6e3c71 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs @@ -114,7 +114,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun var ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort); var lockkeyMsg = CreateGetMessage(tuner, "lockkey"); - await socket.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken); + await socket.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken); var response = await socket.ReceiveAsync(cancellationToken).ConfigureAwait(false); string returnVal; ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal); @@ -128,6 +128,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun using (var tcpClient = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort)) { + var receiveBuffer = new byte[8192]; + if (!_lockkey.HasValue) { var rand = new Random(); @@ -144,8 +146,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun _activeTuner = i; var lockKeyString = String.Format("{0:d}", _lockkey.Value); var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null); - await tcpClient.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); - var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); + var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); string returnVal; // parse response to make sure it worked if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) @@ -155,8 +157,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun foreach(Tuple<string,string> command in commandList) { var channelMsg = CreateSetMessage(i, command.Item1, command.Item2, _lockkey.Value); - await tcpClient.SendAsync(channelMsg, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); - response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); + response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); // parse response to make sure it worked if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) { @@ -169,8 +171,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun var targetValue = String.Format("rtp://{0}:{1}", localIp, localPort); var targetMsg = CreateSetMessage(i, "target", targetValue, _lockkey.Value); - await tcpClient.SendAsync(targetMsg, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); - response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + await tcpClient.SendToAsync(targetMsg, 0, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); + response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); // parse response to make sure it worked if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) { @@ -191,11 +193,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun using (var tcpClient = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort)) { var commandList = commands.GetCommands(); + var receiveBuffer = new byte[8192]; + foreach (Tuple<string, string> command in commandList) { var channelMsg = CreateSetMessage(_activeTuner, command.Item1, command.Item2, _lockkey.Value); - await tcpClient.SendAsync(channelMsg, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false); - var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false); + var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); // parse response to make sure it worked string returnVal; if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) @@ -220,12 +224,15 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun private async Task ReleaseLockkey(ISocket tcpClient) { var releaseTarget = CreateSetMessage(_activeTuner, "target", "none", _lockkey); - await tcpClient.SendAsync(releaseTarget, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); - await tcpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); + await tcpClient.SendToAsync(releaseTarget, 0, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); + + var receiveBuffer = new byte[8192]; + + await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false); var releaseKeyMsg = CreateSetMessage(_activeTuner, "lockkey", "none", _lockkey); _lockkey = null; - await tcpClient.SendAsync(releaseKeyMsg, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); - await tcpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); + await tcpClient.SendToAsync(releaseKeyMsg, 0, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); + await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false); } private static byte[] CreateGetMessage(int tuner, string name) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs index 7c767c141..97753b3d3 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs @@ -173,11 +173,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun private static int RtpHeaderBytes = 12; private async Task CopyTo(ISocket udpClient, Stream outputStream, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken) { + var receiveBuffer = new byte[8192]; + while (true) { - var data = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + var data = await udpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); var bytesRead = data.ReceivedBytes - RtpHeaderBytes; - + await outputStream.WriteAsync(data.Buffer, RtpHeaderBytes, bytesRead, cancellationToken).ConfigureAwait(false); if (openTaskCompletionSource != null) @@ -188,128 +190,4 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun } } } - - // This handles the ReadAsync function only of a Stream object - // This is used to wrap a UDP socket into a stream for MulticastStream which only uses ReadAsync - public class UdpClientStream : Stream - { - private static int RtpHeaderBytes = 12; - private static int PacketSize = 1316; - private readonly ISocket _udpClient; - bool disposed; - - public UdpClientStream(ISocket udpClient) : base() - { - _udpClient = udpClient; - } - - public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) - { - if (buffer == null) - throw new ArgumentNullException("buffer"); - - if (offset + count < 0) - throw new ArgumentOutOfRangeException("offset + count must not be negative", "offset+count"); - - if (offset + count > buffer.Length) - throw new ArgumentException("offset + count must not be greater than the length of buffer", "offset+count"); - - if (disposed) - throw new ObjectDisposedException(typeof(UdpClientStream).ToString()); - - // This will always receive a 1328 packet size (PacketSize + RtpHeaderSize) - // The RTP header will be stripped so see how many reads we need to make to fill the buffer. - var numReads = count / PacketSize; - - int totalBytesRead = 0; - - for (int i = 0; i < numReads; ++i) - { - var data = await _udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); - - var bytesRead = data.ReceivedBytes - RtpHeaderBytes; - - // remove rtp header - Buffer.BlockCopy(data.Buffer, RtpHeaderBytes, buffer, offset, bytesRead); - offset += bytesRead; - totalBytesRead += bytesRead; - } - return totalBytesRead; - } - - protected override void Dispose(bool disposing) - { - disposed = true; - } - - public override bool CanRead - { - get - { - return true; - } - } - - public override bool CanSeek - { - get - { - return false; - } - } - - public override bool CanWrite - { - get - { - return false; - } - } - - public override long Length - { - get - { - throw new NotImplementedException(); - } - } - - public override long Position - { - get - { - throw new NotImplementedException(); - } - - set - { - throw new NotImplementedException(); - } - } - - public override void Flush() - { - throw new NotImplementedException(); - } - - public override int Read(byte[] buffer, int offset, int count) - { - throw new NotImplementedException(); - } - - public override long Seek(long offset, SeekOrigin origin) - { - throw new NotImplementedException(); - } - - public override void SetLength(long value) - { - throw new NotImplementedException(); - } - - public override void Write(byte[] buffer, int offset, int count) - { - throw new NotImplementedException(); - } - } }
\ No newline at end of file diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 7031ad770..6b3d2dc52 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -30,6 +30,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Threading; namespace Emby.Server.Implementations.Session @@ -1071,7 +1072,11 @@ namespace Emby.Server.Implementations.Session Recursive = true, DtoOptions = new DtoOptions(false) { - EnableImages = false + EnableImages = false, + Fields = new List<ItemFields> + { + ItemFields.SortName + } } }); @@ -1090,7 +1095,11 @@ namespace Emby.Server.Implementations.Session IsFolder = false, DtoOptions = new DtoOptions(false) { - EnableImages = false + EnableImages = false, + Fields = new List<ItemFields> + { + ItemFields.SortName + } } }).ConfigureAwait(false); diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs index 255c93b5f..876c5d58b 100644 --- a/Emby.Server.Implementations/TV/TVSeriesManager.cs +++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs @@ -69,7 +69,7 @@ namespace Emby.Server.Implementations.TV { Fields = new List<ItemFields> { - + ItemFields.PresentationUniqueKey } } @@ -119,7 +119,7 @@ namespace Emby.Server.Implementations.TV { Fields = new List<ItemFields> { - + ItemFields.PresentationUniqueKey }, EnableImages = false } @@ -178,12 +178,10 @@ namespace Emby.Server.Implementations.TV /// <returns>Task{Episode}.</returns> private Tuple<DateTime, Func<Episode>> GetNextUp(string seriesKey, User user, DtoOptions dtoOptions) { - var enableSeriesPresentationKey = _config.Configuration.EnableSeriesPresentationUniqueKey; - var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = null, + SeriesPresentationUniqueKey = seriesKey, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, SortOrder = SortOrder.Descending, @@ -194,7 +192,7 @@ namespace Emby.Server.Implementations.TV { Fields = new List<ItemFields> { - + ItemFields.SortName }, EnableImages = false } @@ -205,8 +203,8 @@ namespace Emby.Server.Implementations.TV { return _libraryManager.GetItemList(new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = null, + SeriesPresentationUniqueKey = seriesKey, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, SortOrder = SortOrder.Ascending, diff --git a/Emby.Server.Implementations/Udp/UdpServer.cs b/Emby.Server.Implementations/Udp/UdpServer.cs index 21ef3cab6..8dc1fae4b 100644 --- a/Emby.Server.Implementations/Udp/UdpServer.cs +++ b/Emby.Server.Implementations/Udp/UdpServer.cs @@ -139,30 +139,58 @@ namespace Emby.Server.Implementations.Udp { _udpClient = _socketFactory.CreateUdpSocket(port); - Task.Run(() => StartListening()); + Task.Run(() => BeginReceive()); } - private async void StartListening() + private readonly byte[] _receiveBuffer = new byte[8192]; + + private void BeginReceive() { - while (!_isDisposed) + if (_isDisposed) { - try - { - var result = await _udpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); + return; + } - OnMessageReceived(result); - } - catch (ObjectDisposedException) - { - } - catch (OperationCanceledException) - { - } - catch (Exception ex) + try + { + var result = _udpClient.BeginReceive(_receiveBuffer, 0, _receiveBuffer.Length, OnReceiveResult); + + if (result.CompletedSynchronously) { - _logger.ErrorException("Error receiving udp message", ex); + OnReceiveResult(result); } } + catch (ObjectDisposedException) + { + } + catch (Exception ex) + { + _logger.ErrorException("Error receiving udp message", ex); + } + } + + private void OnReceiveResult(IAsyncResult result) + { + if (_isDisposed) + { + return; + } + + try + { + var socketResult = _udpClient.EndReceive(result); + + OnMessageReceived(socketResult); + } + catch (ObjectDisposedException) + { + } + catch (Exception ex) + { + _logger.ErrorException("Error receiving udp message", ex); + } + + BeginReceive(); } /// <summary> @@ -239,13 +267,13 @@ namespace Emby.Server.Implementations.Udp try { - await _udpClient.SendWithLockAsync(bytes, bytes.Length, remoteEndPoint, CancellationToken.None).ConfigureAwait(false); + await _udpClient.SendToAsync(bytes, 0, bytes.Length, remoteEndPoint, CancellationToken.None).ConfigureAwait(false); _logger.Info("Udp message sent to {0}", remoteEndPoint); } catch (OperationCanceledException) { - + } catch (Exception ex) { diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs index 9490c301d..6e89b0d39 100644 --- a/MediaBrowser.Api/Reports/ReportsService.cs +++ b/MediaBrowser.Api/Reports/ReportsService.cs @@ -225,7 +225,6 @@ namespace MediaBrowser.Api.Reports ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), ParentIndexNumber = request.ParentIndexNumber, AiredDuringSeason = request.AiredDuringSeason, - AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater, EnableTotalRecordCount = request.EnableTotalRecordCount }; diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 7e13512aa..cd56b69bd 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -96,7 +96,6 @@ namespace MediaBrowser.Api config.EnableCaseSensitiveItemIds = true; config.SkipDeserializationForBasicTypes = true; config.SkipDeserializationForAudio = true; - config.EnableSeriesPresentationUniqueKey = true; config.EnableLocalizedGuids = true; config.EnableSimpleArtistDetection = true; config.EnableNormalizedItemByNameIds = true; diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index d79fafd32..24d0a7d52 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -119,7 +119,6 @@ namespace MediaBrowser.Api.UserLibrary NameLessThan = request.NameLessThan, NameStartsWith = request.NameStartsWith, NameStartsWithOrGreater = request.NameStartsWithOrGreater, - AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater, Tags = request.GetTags(), OfficialRatings = request.GetOfficialRatings(), Genres = request.GetGenres(), diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs index 56fd93014..2de86f4da 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs @@ -354,9 +354,6 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string NameLessThan { get; set; } - [ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string AlbumArtistStartsWithOrGreater { get; set; } - public string[] GetGenres() { return (Genres ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 159de46e6..d4811e603 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -249,7 +249,6 @@ namespace MediaBrowser.Api.UserLibrary ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), ParentIndexNumber = request.ParentIndexNumber, AiredDuringSeason = request.AiredDuringSeason, - AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater, EnableTotalRecordCount = request.EnableTotalRecordCount, ExcludeItemIds = request.GetExcludeItemIds(), DtoOptions = dtoOptions diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index a4e1ec330..90db9348d 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -362,20 +362,6 @@ namespace MediaBrowser.Api.UserLibrary var dtos = series .GetEpisodes(user, dtoOptions) .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0) - .OrderBy(i => - { - if (i.PremiereDate.HasValue) - { - return i.PremiereDate.Value; - } - - if (i.ProductionYear.HasValue) - { - return new DateTime(i.ProductionYear.Value, 1, 1, 0, 0, 0, DateTimeKind.Utc); - } - return DateTime.MinValue; - }) - .ThenBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, currentUser)); return dtos.ToList(); diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index f83b2f7bd..b602be9ea 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -826,30 +826,6 @@ namespace MediaBrowser.Controller.Entities } } - if (query.SortBy != null && query.SortBy.Length > 0) - { - if (query.SortBy.Contains(ItemSortBy.AiredEpisodeOrder, StringComparer.OrdinalIgnoreCase)) - { - Logger.Debug("Query requires post-filtering due to ItemSortBy.AiredEpisodeOrder"); - return true; - } - if (query.SortBy.Contains(ItemSortBy.GameSystem, StringComparer.OrdinalIgnoreCase)) - { - Logger.Debug("Query requires post-filtering due to ItemSortBy.GameSystem"); - return true; - } - if (query.SortBy.Contains(ItemSortBy.Players, StringComparer.OrdinalIgnoreCase)) - { - Logger.Debug("Query requires post-filtering due to ItemSortBy.Players"); - return true; - } - if (query.SortBy.Contains(ItemSortBy.VideoBitRate, StringComparer.OrdinalIgnoreCase)) - { - Logger.Debug("Query requires post-filtering due to ItemSortBy.VideoBitRate"); - return true; - } - } - if (query.IsInBoxSet.HasValue) { Logger.Debug("Query requires post-filtering due to IsInBoxSet"); @@ -907,18 +883,6 @@ namespace MediaBrowser.Controller.Entities return true; } - if (query.MinPlayers.HasValue) - { - Logger.Debug("Query requires post-filtering due to MinPlayers"); - return true; - } - - if (query.MaxPlayers.HasValue) - { - Logger.Debug("Query requires post-filtering due to MaxPlayers"); - return true; - } - if (UserViewBuilder.CollapseBoxSetItems(query, this, query.User, ConfigurationManager)) { Logger.Debug("Query requires post-filtering due to CollapseBoxSetItems"); @@ -949,12 +913,6 @@ namespace MediaBrowser.Controller.Entities return true; } - if (!string.IsNullOrWhiteSpace(query.AlbumArtistStartsWithOrGreater)) - { - Logger.Debug("Query requires post-filtering due to AlbumArtistStartsWithOrGreater"); - return true; - } - if (query.IsPlayed.HasValue) { if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes.Contains(typeof(Series).Name)) diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 2186716d7..743e7642e 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -154,7 +154,6 @@ namespace MediaBrowser.Controller.Entities public DayOfWeek[] AirDays { get; set; } public SeriesStatus[] SeriesStatuses { get; set; } - public string AlbumArtistStartsWithOrGreater { get; set; } public string ExternalSeriesId { get; set; } public string ExternalId { get; set; } diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index f75a78c97..45dbed216 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -142,13 +142,12 @@ namespace MediaBrowser.Controller.Entities.TV public override int GetChildCount(User user) { - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); var result = LibraryManager.GetCount(new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = null, + SeriesPresentationUniqueKey = seriesKey, IncludeItemTypes = new[] { typeof(Season).Name }, IsVirtualItem = false, Limit = 0, @@ -167,13 +166,12 @@ namespace MediaBrowser.Controller.Entities.TV public override int GetRecursiveChildCount(User user) { - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); var query = new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = null, + SeriesPresentationUniqueKey = seriesKey, DtoOptions = new Dto.DtoOptions { Fields = new List<ItemFields> @@ -270,11 +268,10 @@ namespace MediaBrowser.Controller.Entities.TV { var config = user.Configuration; - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); - query.AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey; - query.SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null; + query.AncestorWithPresentationUniqueKey = null; + query.SeriesPresentationUniqueKey = seriesKey; query.IncludeItemTypes = new[] { typeof(Season).Name }; query.SortBy = new[] {ItemSortBy.SortName}; @@ -303,11 +300,10 @@ namespace MediaBrowser.Controller.Entities.TV if (query.Recursive) { - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); - query.AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey; - query.SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null; + query.AncestorWithPresentationUniqueKey = null; + query.SeriesPresentationUniqueKey = seriesKey; if (query.SortBy.Length == 0) { query.SortBy = new[] { ItemSortBy.SortName }; @@ -327,13 +323,12 @@ namespace MediaBrowser.Controller.Entities.TV public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options) { - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); var query = new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = null, + SeriesPresentationUniqueKey = seriesKey, IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }, SortBy = new[] { ItemSortBy.SortName }, DtoOptions = options @@ -436,8 +431,6 @@ namespace MediaBrowser.Controller.Entities.TV public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options) { - var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; - var queryFromSeries = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons; // add optimization when this setting is not enabled @@ -447,8 +440,8 @@ namespace MediaBrowser.Controller.Entities.TV var query = new InternalItemsQuery(user) { - AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey, - SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null, + AncestorWithPresentationUniqueKey = queryFromSeries ? null : seriesKey, + SeriesPresentationUniqueKey = queryFromSeries ? seriesKey : null, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, DtoOptions = options diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index b2edb3da8..b5ece06a6 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1714,17 +1714,6 @@ namespace MediaBrowser.Controller.Entities } } - if (!string.IsNullOrEmpty(query.AlbumArtistStartsWithOrGreater)) - { - var ok = new[] { item }.OfType<IHasAlbumArtist>() - .Any(p => string.Compare(query.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); - - if (!ok) - { - return false; - } - } - return true; } diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 90aa3690a..a02b6957f 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -282,12 +282,10 @@ namespace MediaBrowser.Controller.Entities public IEnumerable<Video> GetLinkedAlternateVersions() { - var linkedVersions = LinkedAlternateVersions + return LinkedAlternateVersions .Select(GetLinkedChild) .Where(i => i != null) - .OfType<Video>(); - - return linkedVersions + .OfType<Video>() .OrderBy(i => i.SortName); } @@ -630,21 +628,24 @@ namespace MediaBrowser.Controller.Entities { info.Path = media.ShortcutPath; - if (info.Path.StartsWith("Http", StringComparison.OrdinalIgnoreCase)) - { - info.Protocol = MediaProtocol.Http; - } - else if (info.Path.StartsWith("Rtmp", StringComparison.OrdinalIgnoreCase)) - { - info.Protocol = MediaProtocol.Rtmp; - } - else if (info.Path.StartsWith("Rtsp", StringComparison.OrdinalIgnoreCase)) - { - info.Protocol = MediaProtocol.Rtsp; - } - else + if (!string.IsNullOrWhiteSpace(info.Path)) { - info.Protocol = MediaProtocol.File; + if (info.Path.StartsWith("Http", StringComparison.OrdinalIgnoreCase)) + { + info.Protocol = MediaProtocol.Http; + } + else if (info.Path.StartsWith("Rtmp", StringComparison.OrdinalIgnoreCase)) + { + info.Protocol = MediaProtocol.Rtmp; + } + else if (info.Path.StartsWith("Rtsp", StringComparison.OrdinalIgnoreCase)) + { + info.Protocol = MediaProtocol.Rtsp; + } + else + { + info.Protocol = MediaProtocol.File; + } } } diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 67ba633b7..54a361ff7 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -994,6 +994,10 @@ namespace MediaBrowser.Controller.MediaEncoding { sourceBitrate *= 2; } + else if (sourceBitrate <= 3000000) + { + sourceBitrate = Convert.ToInt32(sourceBitrate * 1.5); + } var bitrate = Math.Min(sourceBitrate, requestedBitrate); diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 60bbf6240..a4a921821 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -46,7 +46,6 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value><c>true</c> if [use HTTPS]; otherwise, <c>false</c>.</value> public bool EnableHttps { get; set; } - public bool EnableSeriesPresentationUniqueKey { get; set; } public bool EnableLocalizedGuids { get; set; } public bool EnableNormalizedItemByNameIds { get; set; } diff --git a/MediaBrowser.Model/Net/ISocket.cs b/MediaBrowser.Model/Net/ISocket.cs index 61fc0e28b..1cf6c7cc7 100644 --- a/MediaBrowser.Model/Net/ISocket.cs +++ b/MediaBrowser.Model/Net/ISocket.cs @@ -19,11 +19,17 @@ namespace MediaBrowser.Model.Net /// </summary> /// <returns></returns> Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken); + Task<SocketReceiveResult> ReceiveAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken); + + IAsyncResult BeginReceive(byte[] buffer, int offset, int count, AsyncCallback callback); + SocketReceiveResult EndReceive(IAsyncResult result); /// <summary> /// Sends a UDP message to a particular end point (uni or multicast). /// </summary> - Task SendAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); - Task SendWithLockAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); + Task SendToAsync(byte[] buffer, int offset, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); + + IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, AsyncCallback callback, object state); + int EndSendTo(IAsyncResult result); } }
\ No newline at end of file diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 15c7761e2..207597a00 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -10,7 +10,7 @@ <RootNamespace>MediaBrowser.Server.Mono</RootNamespace> <AssemblyName>MediaBrowser.Server.Mono</AssemblyName> <StartupObject>MediaBrowser.Server.Mono.MainClass</StartupObject> - <TargetFrameworkVersion>v4.6</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <TargetFrameworkProfile /> </PropertyGroup> @@ -36,18 +36,12 @@ <Prefer32Bit>false</Prefer32Bit> </PropertyGroup> <ItemGroup> - <Reference Include="Emby.Common.Implementations"> - <HintPath>..\ThirdParty\emby\Emby.Common.Implementations.dll</HintPath> - </Reference> <Reference Include="Emby.Server.CinemaMode"> <HintPath>..\ThirdParty\emby\Emby.Server.CinemaMode.dll</HintPath> </Reference> <Reference Include="Emby.Server.Connect"> <HintPath>..\ThirdParty\emby\Emby.Server.Connect.dll</HintPath> </Reference> - <Reference Include="Emby.Server.Core"> - <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath> - </Reference> <Reference Include="Emby.Server.Sync"> <HintPath>..\ThirdParty\emby\Emby.Server.Sync.dll</HintPath> </Reference> @@ -59,16 +53,16 @@ <HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="ServiceStack.Text, Version=4.5.4.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\ServiceStack.Text.4.5.4\lib\net45\ServiceStack.Text.dll</HintPath> + <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="SimpleInjector, Version=3.3.2.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> - <HintPath>..\packages\SimpleInjector.3.3.2\lib\net45\SimpleInjector.dll</HintPath> + <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> + <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="SQLitePCLRaw.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1488e028ca7ab535, processorArchitecture=MSIL"> @@ -110,6 +104,10 @@ <Project>{713f42b5-878e-499d-a878-e4c652b1d5e8}</Project> <Name>DvdLib</Name> </ProjectReference> + <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj"> + <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project> + <Name>Emby.Common.Implementations</Name> + </ProjectReference> <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj"> <Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project> <Name>Emby.Dlna</Name> @@ -126,14 +124,14 @@ <Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project> <Name>Emby.Photos</Name> </ProjectReference> + <ProjectReference Include="..\Emby.Server.Core\Emby.Server.Core.csproj"> + <Project>{776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0}</Project> + <Name>Emby.Server.Core</Name> + </ProjectReference> <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj"> <Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project> <Name>Emby.Server.Implementations</Name> </ProjectReference> - <ProjectReference Include="..\MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj"> - <Project>{b90ab8f2-1bff-4568-a3fd-2a338a435a75}</Project> - <Name>MediaBrowser.Server.Startup.Common</Name> - </ProjectReference> <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj"> <Project>{5624B7B5-B5A7-41D8-9F10-CC5611109619}</Project> <Name>MediaBrowser.WebDashboard</Name> @@ -174,6 +172,10 @@ <Project>{23499896-B135-4527-8574-C26E926EA99E}</Project> <Name>MediaBrowser.XbmcMetadata</Name> </ProjectReference> + <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj"> + <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project> + <Name>Mono.Nat</Name> + </ProjectReference> <ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj"> <Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project> <Name>OpenSubtitlesHandler</Name> @@ -182,10 +184,6 @@ <Project>{21002819-c39a-4d3e-be83-2a276a77fb1f}</Project> <Name>RSSDP</Name> </ProjectReference> - <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj"> - <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project> - <Name>SocketHttpListener.Portable</Name> - </ProjectReference> </ItemGroup> <ItemGroup> <None Include="..\ThirdParty\SQLite3\osx\libsqlite3.0.dylib"> diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index b79c8c1f7..a9aed0fce 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -14,15 +14,15 @@ using System.Threading.Tasks; using Emby.Common.Implementations.EnvironmentInfo; using Emby.Common.Implementations.Logging; using Emby.Common.Implementations.Networking; -using Emby.Common.Implementations.Security; +using Emby.Server.Core.Cryptography; using Emby.Server.Core; +using Emby.Server.Core.IO; using Emby.Server.Core.Logging; using Emby.Server.Implementations; using Emby.Server.Implementations.IO; using Emby.Server.Implementations.Logging; using MediaBrowser.Model.IO; using MediaBrowser.Model.System; -using MediaBrowser.Server.Startup.Common.IO; using Mono.Unix.Native; using NLog; using ILogger = MediaBrowser.Model.Logging.ILogger; diff --git a/MediaBrowser.Server.Mono/app.config b/MediaBrowser.Server.Mono/app.config index 8f21d4a67..15896b606 100644 --- a/MediaBrowser.Server.Mono/app.config +++ b/MediaBrowser.Server.Mono/app.config @@ -1,31 +1,31 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> - <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> + <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets async="true"></targets> </nlog> <appSettings> - <add key="DebugProgramDataPath" value="ProgramData-Server" /> - <add key="ReleaseProgramDataPath" value="ProgramData-Server" /> + <add key="DebugProgramDataPath" value="ProgramData-Server"/> + <add key="ReleaseProgramDataPath" value="ProgramData-Server"/> </appSettings> <runtime> - <legacyUnhandledExceptionPolicy enabled="1" /> + <legacyUnhandledExceptionPolicy enabled="1"/> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> - <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.0.94.0" newVersion="1.0.94.0" /> + <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/> + <bindingRedirect oldVersion="0.0.0.0-1.0.94.0" newVersion="1.0.94.0"/> </dependentAssembly> <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> + <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> + <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/> </dependentAssembly> <dependentAssembly> - <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" /> + <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/> + <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0"/> </dependentAssembly> </assemblyBinding> </runtime> -<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /></startup></configuration> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration> diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config index de26c7666..bd8ff4476 100644 --- a/MediaBrowser.Server.Mono/packages.config +++ b/MediaBrowser.Server.Mono/packages.config @@ -2,9 +2,9 @@ <packages> <package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" /> <package id="NLog" version="4.4.3" targetFramework="net46" /> - <package id="ServiceStack.Text" version="4.5.4" targetFramework="net46" /> + <package id="ServiceStack.Text" version="4.5.8" targetFramework="net46" /> <package id="SharpCompress" version="0.14.0" targetFramework="net46" /> - <package id="SimpleInjector" version="3.3.2" targetFramework="net46" /> + <package id="SimpleInjector" version="4.0.7" targetFramework="net46" /> <package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="net46" /> <package id="SQLitePCLRaw.provider.sqlite3.net45" version="1.1.5" targetFramework="net46" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Server.Startup.Common/packages.config b/MediaBrowser.Server.Startup.Common/packages.config deleted file mode 100644 index 4b6266585..000000000 --- a/MediaBrowser.Server.Startup.Common/packages.config +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.2" targetFramework="net46" /> -</packages>
\ No newline at end of file diff --git a/MediaBrowser.ServerApplication/App.config b/MediaBrowser.ServerApplication/App.config index fae013d6e..d7f4380c4 100644 --- a/MediaBrowser.ServerApplication/App.config +++ b/MediaBrowser.ServerApplication/App.config @@ -49,7 +49,7 @@ </dependentAssembly> <dependentAssembly> <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" /> + <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 37c71545a..a0494b3e5 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -21,9 +21,10 @@ using Emby.Common.Implementations.EnvironmentInfo; using Emby.Common.Implementations.IO; using Emby.Common.Implementations.Logging; using Emby.Common.Implementations.Networking; -using Emby.Common.Implementations.Security; +using Emby.Server.Core.Cryptography; using Emby.Drawing; using Emby.Server.Core; +using Emby.Server.Core.IO; using Emby.Server.Core.Logging; using Emby.Server.Implementations; using Emby.Server.Implementations.Browser; @@ -32,7 +33,6 @@ using Emby.Server.Implementations.Logging; using ImageMagickSharp; using MediaBrowser.Common.Net; using MediaBrowser.Model.IO; -using MediaBrowser.Server.Startup.Common.IO; namespace MediaBrowser.ServerApplication { diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index eb8cd9bcb..e4a526613 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -64,18 +64,12 @@ <Prefer32Bit>true</Prefer32Bit> </PropertyGroup> <ItemGroup> - <Reference Include="Emby.Common.Implementations"> - <HintPath>..\ThirdParty\emby\Emby.Common.Implementations.dll</HintPath> - </Reference> <Reference Include="Emby.Server.CinemaMode"> <HintPath>..\ThirdParty\emby\Emby.Server.CinemaMode.dll</HintPath> </Reference> <Reference Include="Emby.Server.Connect"> <HintPath>..\ThirdParty\emby\Emby.Server.Connect.dll</HintPath> </Reference> - <Reference Include="Emby.Server.Core"> - <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath> - </Reference> <Reference Include="Emby.Server.Sync"> <HintPath>..\ThirdParty\emby\Emby.Server.Sync.dll</HintPath> </Reference> @@ -87,16 +81,16 @@ <HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="ServiceStack.Text, Version=4.5.4.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\ServiceStack.Text.4.5.4\lib\net45\ServiceStack.Text.dll</HintPath> + <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="SimpleInjector, Version=3.3.2.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> - <HintPath>..\packages\SimpleInjector.3.3.2\lib\net45\SimpleInjector.dll</HintPath> + <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL"> + <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="SkiaSharp, Version=1.57.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> @@ -1098,6 +1092,10 @@ <Project>{713f42b5-878e-499d-a878-e4c652b1d5e8}</Project> <Name>DvdLib</Name> </ProjectReference> + <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj"> + <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project> + <Name>Emby.Common.Implementations</Name> + </ProjectReference> <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj"> <Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project> <Name>Emby.Dlna</Name> @@ -1118,6 +1116,10 @@ <Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project> <Name>Emby.Photos</Name> </ProjectReference> + <ProjectReference Include="..\Emby.Server.Core\Emby.Server.Core.csproj"> + <Project>{776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0}</Project> + <Name>Emby.Server.Core</Name> + </ProjectReference> <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj"> <Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project> <Name>Emby.Server.Implementations</Name> @@ -1154,10 +1156,6 @@ <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project> <Name>MediaBrowser.Server.Implementations</Name> </ProjectReference> - <ProjectReference Include="..\MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj"> - <Project>{b90ab8f2-1bff-4568-a3fd-2a338a435a75}</Project> - <Name>MediaBrowser.Server.Startup.Common</Name> - </ProjectReference> <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj"> <Project>{5624b7b5-b5a7-41d8-9f10-cc5611109619}</Project> <Name>MediaBrowser.WebDashboard</Name> @@ -1166,6 +1164,10 @@ <Project>{23499896-b135-4527-8574-c26e926ea99e}</Project> <Name>MediaBrowser.XbmcMetadata</Name> </ProjectReference> + <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj"> + <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project> + <Name>Mono.Nat</Name> + </ProjectReference> <ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj"> <Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project> <Name>OpenSubtitlesHandler</Name> @@ -1174,10 +1176,6 @@ <Project>{21002819-c39a-4d3e-be83-2a276a77fb1f}</Project> <Name>RSSDP</Name> </ProjectReference> - <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj"> - <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project> - <Name>SocketHttpListener.Portable</Name> - </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <PropertyGroup> diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index 2d4ba6170..2a0cbd150 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -2,9 +2,9 @@ <packages> <package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net45" /> <package id="NLog" version="4.4.3" targetFramework="net462" /> - <package id="ServiceStack.Text" version="4.5.4" targetFramework="net462" /> + <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" /> <package id="SharpCompress" version="0.14.0" targetFramework="net462" /> - <package id="SimpleInjector" version="3.3.2" targetFramework="net462" /> + <package id="SimpleInjector" version="4.0.7" targetFramework="net462" /> <package id="SkiaSharp" version="1.57.1" targetFramework="net462" /> <package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="net462" /> <package id="SQLitePCLRaw.provider.sqlite3.net45" version="1.1.5" targetFramework="net462" /> diff --git a/MediaBrowser.Tests/MediaBrowser.Tests.csproj b/MediaBrowser.Tests/MediaBrowser.Tests.csproj index 8ba828d85..732fae370 100644 --- a/MediaBrowser.Tests/MediaBrowser.Tests.csproj +++ b/MediaBrowser.Tests/MediaBrowser.Tests.csproj @@ -8,7 +8,7 @@ <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>MediaBrowser.Tests</RootNamespace> <AssemblyName>MediaBrowser.Tests</AssemblyName> - <TargetFrameworkVersion>v4.6</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> diff --git a/MediaBrowser.Tests/app.config b/MediaBrowser.Tests/app.config index 9d8c1ac93..5c79b167f 100644 --- a/MediaBrowser.Tests/app.config +++ b/MediaBrowser.Tests/app.config @@ -8,4 +8,4 @@ </dependentAssembly> </assemblyBinding> </runtime> -<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration> diff --git a/MediaBrowser.sln b/MediaBrowser.sln index 525fa5807..1a4638265 100644 --- a/MediaBrowser.sln +++ b/MediaBrowser.sln @@ -52,34 +52,32 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.LocalMetadata" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Server.Mono", "MediaBrowser.Server.Mono\MediaBrowser.Server.Mono.csproj", "{175A9388-F352-4586-A6B4-070DED62B644}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Server.Startup.Common", "MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj", "{B90AB8F2-1BFF-4568-A3FD-2A338A435A75}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing", "Emby.Drawing\Emby.Drawing.csproj", "{08FFF49B-F175-4807-A2B5-73B0EBD9F716}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Photos", "Emby.Photos\Emby.Photos.csproj", "{89AB4548-770D-41FD-A891-8DAFF44F452C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DvdLib", "DvdLib\DvdLib.csproj", "{713F42B5-878E-499D-A878-E4C652B1D5E8}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Common.Implementations", "Emby.Common.Implementations\Emby.Common.Implementations.xproj", "{5A27010A-09C6-4E86-93EA-437484C10917}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDInfo", "BDInfo\BDInfo.csproj", "{88AE38DF-19D7-406F-A6A9-09527719A21E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Implementations", "Emby.Server.Implementations\Emby.Server.Implementations.csproj", "{E383961B-9356-4D5D-8233-9A1079D03055}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Mono.Nat", "Mono.Nat\Mono.Nat.xproj", "{4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RSSDP", "RSSDP\RSSDP.csproj", "{21002819-C39A-4D3E-BE83-2A276A77FB1F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Dlna", "Emby.Dlna\Emby.Dlna.csproj", "{805844AB-E92F-45E6-9D99-4F6D48D129A5}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Server.Core", "Emby.Server.Core\Emby.Server.Core.xproj", "{65AA7D67-8059-40CD-91F1-16D02687226C}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.ImageMagick", "Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj", "{6CFEE013-6E7C-432B-AC37-CABF0880C69A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener.Portable", "SocketHttpListener.Portable\SocketHttpListener.Portable.csproj", "{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Skia", "Emby.Drawing.Skia\Emby.Drawing.Skia.csproj", "{2312DA6D-FF86-4597-9777-BCEEC32D96DD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Core", "Emby.Server.Core\Emby.Server.Core.csproj", "{776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "Mono.Nat\Mono.Nat.csproj", "{CB7F2326-6497-4A3D-BA03-48513B17A7BE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Common.Implementations", "Emby.Common.Implementations\Emby.Common.Implementations.csproj", "{1E37A338-9F57-4B70-BD6D-BB9C591E319B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener", "SocketHttpListener\SocketHttpListener.csproj", "{1D74413B-E7CF-455B-B021-F52BDF881542}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -556,37 +554,6 @@ Global {175A9388-F352-4586-A6B4-070DED62B644}.Signed|x64.Build.0 = Release|Any CPU {175A9388-F352-4586-A6B4-070DED62B644}.Signed|x86.ActiveCfg = Release|Any CPU {175A9388-F352-4586-A6B4-070DED62B644}.Signed|x86.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Win32.ActiveCfg = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|x64.ActiveCfg = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|x86.ActiveCfg = Debug|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Any CPU.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Win32.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|x64.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|x86.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Any CPU.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Win32.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|x64.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|x86.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Any CPU.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Any CPU.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Mixed Platforms.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Win32.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Win32.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x64.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x64.Build.0 = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x86.ActiveCfg = Release|Any CPU - {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x86.Build.0 = Release|Any CPU {08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Any CPU.Build.0 = Debug|Any CPU {08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -698,45 +665,6 @@ Global {713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x64.Build.0 = Release|Any CPU {713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x86.ActiveCfg = Release|Any CPU {713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x86.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Win32.ActiveCfg = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Win32.Build.0 = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x64.ActiveCfg = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x64.Build.0 = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x86.ActiveCfg = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x86.Build.0 = Debug|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Win32.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Win32.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x64.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x64.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x86.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x86.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Any CPU.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Win32.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Win32.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x64.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x64.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x86.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x86.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Any CPU.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Any CPU.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Mixed Platforms.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Win32.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Win32.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x64.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x64.Build.0 = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x86.ActiveCfg = Release|Any CPU - {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x86.Build.0 = Release|Any CPU {88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Any CPU.Build.0 = Debug|Any CPU {88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -817,45 +745,6 @@ Global {E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x64.Build.0 = Release|Any CPU {E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x86.ActiveCfg = Release|Any CPU {E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x86.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Win32.Build.0 = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x64.ActiveCfg = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x64.Build.0 = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x86.ActiveCfg = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x86.Build.0 = Debug|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Win32.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Win32.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x64.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x64.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x86.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x86.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Any CPU.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Win32.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Win32.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x64.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x64.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x86.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x86.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Any CPU.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Any CPU.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Mixed Platforms.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Win32.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Win32.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x64.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x64.Build.0 = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x86.ActiveCfg = Release|Any CPU - {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x86.Build.0 = Release|Any CPU {21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Any CPU.Build.0 = Debug|Any CPU {21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -936,45 +825,6 @@ Global {805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x64.Build.0 = Release|Any CPU {805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.ActiveCfg = Release|Any CPU {805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Win32.ActiveCfg = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Win32.Build.0 = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x64.ActiveCfg = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x64.Build.0 = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x86.ActiveCfg = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x86.Build.0 = Debug|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Win32.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Win32.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x64.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x64.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x86.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x86.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Any CPU.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Win32.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Win32.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x64.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x64.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Any CPU.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Any CPU.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Mixed Platforms.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Win32.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Win32.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x64.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x64.Build.0 = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x86.ActiveCfg = Release|Any CPU - {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x86.Build.0 = Release|Any CPU {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -1015,46 +865,6 @@ Global {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x64.Build.0 = Release|Any CPU {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x86.ActiveCfg = Release|Any CPU {6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x86.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Win32.Build.0 = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x64.ActiveCfg = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x64.Build.0 = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x86.ActiveCfg = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x86.Build.0 = Debug|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Any CPU.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Win32.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Win32.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x64.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x64.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x86.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x86.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Any CPU.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Win32.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Win32.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x64.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x64.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x86.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x86.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Any CPU.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Any CPU.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Mixed Platforms.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Win32.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Win32.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x64.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x64.Build.0 = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.ActiveCfg = Release|Any CPU - {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.Build.0 = Release|Any CPU {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.Build.0 = Debug|Any CPU {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -1095,6 +905,166 @@ Global {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x64.Build.0 = Release|Any CPU {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.ActiveCfg = Release|Any CPU {2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Win32.ActiveCfg = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Win32.Build.0 = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x64.ActiveCfg = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x64.Build.0 = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x86.ActiveCfg = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x86.Build.0 = Debug|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Any CPU.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Win32.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Win32.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x64.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x64.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x86.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x86.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Any CPU.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Win32.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Win32.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x64.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x64.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x86.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x86.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Any CPU.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Any CPU.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Mixed Platforms.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Win32.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Win32.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x64.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x64.Build.0 = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x86.ActiveCfg = Release|Any CPU + {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x86.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Win32.ActiveCfg = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Win32.Build.0 = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x64.Build.0 = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x86.Build.0 = Debug|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Any CPU.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Win32.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Win32.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x64.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x64.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x86.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x86.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Any CPU.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Win32.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Win32.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x64.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x64.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x86.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x86.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Any CPU.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Any CPU.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Mixed Platforms.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Win32.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Win32.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x64.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x64.Build.0 = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.ActiveCfg = Release|Any CPU + {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.Build.0 = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.ActiveCfg = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.Build.0 = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.ActiveCfg = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.Build.0 = Debug|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.Build.0 = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.ActiveCfg = Release|Any CPU + {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Win32.Build.0 = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x64.ActiveCfg = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x64.Build.0 = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x86.ActiveCfg = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x86.Build.0 = Debug|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Any CPU.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Win32.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Win32.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x64.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x64.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x86.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x86.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Any CPU.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Win32.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Win32.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x64.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x64.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x86.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x86.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Any CPU.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Any CPU.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Mixed Platforms.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Win32.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Win32.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x64.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x64.Build.0 = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x86.ActiveCfg = Release|Any CPU + {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Mono.Nat/Mono.Nat.csproj b/Mono.Nat/Mono.Nat.csproj new file mode 100644 index 000000000..d006b657b --- /dev/null +++ b/Mono.Nat/Mono.Nat.csproj @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{CB7F2326-6497-4A3D-BA03-48513B17A7BE}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Mono.Nat</RootNamespace> + <AssemblyName>Mono.Nat</AssemblyName> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\SharedVersion.cs"> + <Link>Properties\SharedVersion.cs</Link> + </Compile> + <Compile Include="AbstractNatDevice.cs" /> + <Compile Include="AsyncResults\AsyncResult.cs" /> + <Compile Include="Enums\MapState.cs" /> + <Compile Include="Enums\ProtocolType.cs" /> + <Compile Include="EventArgs\DeviceEventArgs.cs" /> + <Compile Include="Exceptions\MappingException.cs" /> + <Compile Include="INatDevice.cs" /> + <Compile Include="ISearcher.cs" /> + <Compile Include="Mapping.cs" /> + <Compile Include="NatProtocol.cs" /> + <Compile Include="NatUtility.cs" /> + <Compile Include="Pmp\AsyncResults\PortMapAsyncResult.cs" /> + <Compile Include="Pmp\PmpConstants.cs" /> + <Compile Include="Pmp\PmpNatDevice.cs" /> + <Compile Include="Pmp\Searchers\PmpSearcher.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Upnp\Messages\DiscoverDeviceMessage.cs" /> + <Compile Include="Upnp\Messages\ErrorMessage.cs" /> + <Compile Include="Upnp\Messages\GetServicesMessage.cs" /> + <Compile Include="Upnp\Messages\Requests\CreatePortMappingMessage.cs" /> + <Compile Include="Upnp\Messages\Responses\CreatePortMappingResponseMessage.cs" /> + <Compile Include="Upnp\Messages\UpnpMessage.cs" /> + <Compile Include="Upnp\Searchers\UpnpSearcher.cs" /> + <Compile Include="Upnp\Upnp.cs" /> + <Compile Include="Upnp\UpnpNatDevice.cs" /> + </ItemGroup> + <ItemGroup> + <Folder Include="Upnp\AsyncResults\" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> + <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project> + <Name>MediaBrowser.Common</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj"> + <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project> + <Name>MediaBrowser.Controller</Name> + </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj"> + <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project> + <Name>MediaBrowser.Model</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/Mono.Nat/Mono.Nat.xproj b/Mono.Nat/Mono.Nat.xproj deleted file mode 100644 index 3479a2a67..000000000 --- a/Mono.Nat/Mono.Nat.xproj +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> - <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> - </PropertyGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" /> - <PropertyGroup Label="Globals"> - <ProjectGuid>4acab6a2-ac9a-4b50-baec-1fe4a1f3b8bc</ProjectGuid> - <RootNamespace>Mono.Nat</RootNamespace> - <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath> - <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath> - <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> - </PropertyGroup> - <PropertyGroup> - <SchemaVersion>2.0</SchemaVersion> - </PropertyGroup> - <ItemGroup> - <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" /> - <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" /> - </ItemGroup> - <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" /> -</Project>
\ No newline at end of file diff --git a/Mono.Nat/Properties/AssemblyInfo.cs b/Mono.Nat/Properties/AssemblyInfo.cs index 2a4e75c21..18b183817 100644 --- a/Mono.Nat/Properties/AssemblyInfo.cs +++ b/Mono.Nat/Properties/AssemblyInfo.cs @@ -2,15 +2,33 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following +// General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. +[assembly: AssemblyTitle("Mono.Nat")] +[assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Mono.Nat")] +[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("cb7f2326-6497-4a3d-ba03-48513b17a7be")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")]
\ No newline at end of file diff --git a/Mono.Nat/project.json b/Mono.Nat/project.json deleted file mode 100644 index 3c38a62e1..000000000 --- a/Mono.Nat/project.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "version": "1.0.0-*", - - "dependencies": { - - }, - - "frameworks": { - "net46": { - "frameworkAssemblies": { - "System.Collections": "4.0.0.0", - "System.Net": "4.0.0.0", - "System.Runtime": "4.0.0.0", - "System.Threading": "4.0.0.0", - "System.Threading.Tasks": "4.0.0.0", - "System.Xml": "4.0.0.0" - }, - "dependencies": { - "MediaBrowser.Common": { - "target": "project" - }, - "MediaBrowser.Model": { - "target": "project" - } - } - }, - "netstandard1.6": { - "imports": "dnxcore50", - "dependencies": { - "NETStandard.Library": "1.6.1", - "MediaBrowser.Common": { - "target": "project" - }, - "MediaBrowser.Model": { - "target": "project" - }, - "System.Net.NetworkInformation": "4.3.0" - } - } - } -} diff --git a/RSSDP/SsdpCommunicationsServer.cs b/RSSDP/SsdpCommunicationsServer.cs index e9dc4c54f..91004b76f 100644 --- a/RSSDP/SsdpCommunicationsServer.cs +++ b/RSSDP/SsdpCommunicationsServer.cs @@ -177,7 +177,7 @@ namespace Rssdp.Infrastructure { try { - await socket.SendWithLockAsync(messageData, messageData.Length, destination, cancellationToken).ConfigureAwait(false); + await socket.SendToAsync(messageData, 0, messageData.Length, destination, cancellationToken).ConfigureAwait(false); } catch (ObjectDisposedException) { @@ -392,11 +392,13 @@ namespace Rssdp.Infrastructure var t = Task.Run(async () => { var cancelled = false; + var receiveBuffer = new byte[8192]; + while (!cancelled) { try { - var result = await socket.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); + var result = await socket.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false); if (result.ReceivedBytes > 0) { diff --git a/SocketHttpListener.Portable/Net/ChunkedInputStream.cs b/SocketHttpListener.Portable/Net/ChunkedInputStream.cs deleted file mode 100644 index 6dfd8d8a1..000000000 --- a/SocketHttpListener.Portable/Net/ChunkedInputStream.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.IO; -using System.Runtime.InteropServices; -using SocketHttpListener.Primitives; - -namespace SocketHttpListener.Net -{ - class ChunkedInputStream : RequestStream - { - bool disposed; - ChunkStream decoder; - HttpListenerContext context; - bool no_more_data; - - //class ReadBufferState - //{ - // public byte[] Buffer; - // public int Offset; - // public int Count; - // public int InitialCount; - // public HttpStreamAsyncResult Ares; - // public ReadBufferState(byte[] buffer, int offset, int count, - // HttpStreamAsyncResult ares) - // { - // Buffer = buffer; - // Offset = offset; - // Count = count; - // InitialCount = count; - // Ares = ares; - // } - //} - - public ChunkedInputStream(HttpListenerContext context, Stream stream, - byte[] buffer, int offset, int length) - : base(stream, buffer, offset, length) - { - this.context = context; - WebHeaderCollection coll = (WebHeaderCollection)context.Request.Headers; - decoder = new ChunkStream(coll); - } - - //public ChunkStream Decoder - //{ - // get { return decoder; } - // set { decoder = value; } - //} - - //public override int Read([In, Out] byte[] buffer, int offset, int count) - //{ - // IAsyncResult ares = BeginRead(buffer, offset, count, null, null); - // return EndRead(ares); - //} - - //public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, - // AsyncCallback cback, object state) - //{ - // if (disposed) - // throw new ObjectDisposedException(GetType().ToString()); - - // if (buffer == null) - // throw new ArgumentNullException("buffer"); - - // int len = buffer.Length; - // if (offset < 0 || offset > len) - // throw new ArgumentOutOfRangeException("offset exceeds the size of buffer"); - - // if (count < 0 || offset > len - count) - // throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer"); - - // HttpStreamAsyncResult ares = new HttpStreamAsyncResult(); - // ares.Callback = cback; - // ares.State = state; - // if (no_more_data) - // { - // ares.Complete(); - // return ares; - // } - // int nread = decoder.Read(buffer, offset, count); - // offset += nread; - // count -= nread; - // if (count == 0) - // { - // // got all we wanted, no need to bother the decoder yet - // ares.Count = nread; - // ares.Complete(); - // return ares; - // } - // if (!decoder.WantMore) - // { - // no_more_data = nread == 0; - // ares.Count = nread; - // ares.Complete(); - // return ares; - // } - // ares.Buffer = new byte[8192]; - // ares.Offset = 0; - // ares.Count = 8192; - // ReadBufferState rb = new ReadBufferState(buffer, offset, count, ares); - // rb.InitialCount += nread; - // base.BeginRead(ares.Buffer, ares.Offset, ares.Count, OnRead, rb); - // return ares; - //} - - //void OnRead(IAsyncResult base_ares) - //{ - // ReadBufferState rb = (ReadBufferState)base_ares.AsyncState; - // HttpStreamAsyncResult ares = rb.Ares; - // try - // { - // int nread = base.EndRead(base_ares); - // decoder.Write(ares.Buffer, ares.Offset, nread); - // nread = decoder.Read(rb.Buffer, rb.Offset, rb.Count); - // rb.Offset += nread; - // rb.Count -= nread; - // if (rb.Count == 0 || !decoder.WantMore || nread == 0) - // { - // no_more_data = !decoder.WantMore && nread == 0; - // ares.Count = rb.InitialCount - rb.Count; - // ares.Complete(); - // return; - // } - // ares.Offset = 0; - // ares.Count = Math.Min(8192, decoder.ChunkLeft + 6); - // base.BeginRead(ares.Buffer, ares.Offset, ares.Count, OnRead, rb); - // } - // catch (Exception e) - // { - // context.Connection.SendError(e.Message, 400); - // ares.Complete(e); - // } - //} - - //public override int EndRead(IAsyncResult ares) - //{ - // if (disposed) - // throw new ObjectDisposedException(GetType().ToString()); - - // HttpStreamAsyncResult my_ares = ares as HttpStreamAsyncResult; - // if (ares == null) - // throw new ArgumentException("Invalid IAsyncResult", "ares"); - - // if (!ares.IsCompleted) - // ares.AsyncWaitHandle.WaitOne(); - - // if (my_ares.Error != null) - // throw new HttpListenerException(400, "I/O operation aborted: " + my_ares.Error.Message); - - // return my_ares.Count; - //} - - //protected override void Dispose(bool disposing) - //{ - // if (!disposed) - // { - // disposed = true; - // base.Dispose(disposing); - // } - //} - } -} diff --git a/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs b/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs deleted file mode 100644 index 518c45acb..000000000 --- a/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Threading; - -namespace SocketHttpListener.Net -{ - class HttpStreamAsyncResult : IAsyncResult - { - object locker = new object(); - ManualResetEvent handle; - bool completed; - - internal byte[] Buffer; - internal int Offset; - internal int Count; - internal AsyncCallback Callback; - internal object State; - internal int SynchRead; - internal Exception Error; - - public void Complete(Exception e) - { - Error = e; - Complete(); - } - - public void Complete() - { - lock (locker) - { - if (completed) - return; - - completed = true; - if (handle != null) - handle.Set(); - - if (Callback != null) - Callback.BeginInvoke(this, null, null); - } - } - - public object AsyncState - { - get { return State; } - } - - public WaitHandle AsyncWaitHandle - { - get - { - lock (locker) - { - if (handle == null) - handle = new ManualResetEvent(completed); - } - - return handle; - } - } - - public bool CompletedSynchronously - { - get { return (SynchRead == Count); } - } - - public bool IsCompleted - { - get - { - lock (locker) - { - return completed; - } - } - } - } -} diff --git a/SocketHttpListener.Portable/Net/RequestStream.cs b/SocketHttpListener.Portable/Net/RequestStream.cs deleted file mode 100644 index 58030500d..000000000 --- a/SocketHttpListener.Portable/Net/RequestStream.cs +++ /dev/null @@ -1,231 +0,0 @@ -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Threading; -using System.Threading.Tasks; - -namespace SocketHttpListener.Net -{ - class RequestStream : Stream - { - byte[] buffer; - int offset; - int length; - long remaining_body; - bool disposed; - Stream stream; - - internal RequestStream(Stream stream, byte[] buffer, int offset, int length) - : this(stream, buffer, offset, length, -1) - { - } - - internal RequestStream(Stream stream, byte[] buffer, int offset, int length, long contentlength) - { - this.stream = stream; - this.buffer = buffer; - this.offset = offset; - this.length = length; - this.remaining_body = contentlength; - } - - public override bool CanRead - { - get { return true; } - } - - public override bool CanSeek - { - get { return false; } - } - - public override bool CanWrite - { - get { return false; } - } - - public override long Length - { - get { throw new NotSupportedException(); } - } - - public override long Position - { - get { throw new NotSupportedException(); } - set { throw new NotSupportedException(); } - } - - - protected override void Dispose(bool disposing) - { - disposed = true; - } - - public override void Flush() - { - } - - - // Returns 0 if we can keep reading from the base stream, - // > 0 if we read something from the buffer. - // -1 if we had a content length set and we finished reading that many bytes. - int FillFromBuffer(byte[] buffer, int off, int count) - { - if (buffer == null) - throw new ArgumentNullException("buffer"); - if (off < 0) - throw new ArgumentOutOfRangeException("offset", "< 0"); - if (count < 0) - throw new ArgumentOutOfRangeException("count", "< 0"); - int len = buffer.Length; - if (off > len) - throw new ArgumentException("destination offset is beyond array size"); - if (off > len - count) - throw new ArgumentException("Reading would overrun buffer"); - - if (this.remaining_body == 0) - return -1; - - if (this.length == 0) - return 0; - - int size = Math.Min(this.length, count); - if (this.remaining_body > 0) - size = (int)Math.Min(size, this.remaining_body); - - if (this.offset > this.buffer.Length - size) - { - size = Math.Min(size, this.buffer.Length - this.offset); - } - if (size == 0) - return 0; - - Buffer.BlockCopy(this.buffer, this.offset, buffer, off, size); - this.offset += size; - this.length -= size; - if (this.remaining_body > 0) - remaining_body -= size; - return size; - } - - public override int Read([In, Out] byte[] buffer, int offset, int count) - { - if (disposed) - throw new ObjectDisposedException(typeof(RequestStream).ToString()); - - // Call FillFromBuffer to check for buffer boundaries even when remaining_body is 0 - int nread = FillFromBuffer(buffer, offset, count); - if (nread == -1) - { // No more bytes available (Content-Length) - return 0; - } - else if (nread > 0) - { - return nread; - } - - nread = stream.Read(buffer, offset, count); - if (nread > 0 && remaining_body > 0) - remaining_body -= nread; - return nread; - } - - public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) - { - if (disposed) - throw new ObjectDisposedException(typeof(RequestStream).ToString()); - - int nread = FillFromBuffer(buffer, offset, count); - if (nread > 0 || nread == -1) - { - return Math.Max(0, nread); - } - - // Avoid reading past the end of the request to allow - // for HTTP pipelining - if (remaining_body >= 0 && count > remaining_body) - count = (int)Math.Min(Int32.MaxValue, remaining_body); - - nread = await stream.ReadAsync(buffer, offset, count, cancellationToken).ConfigureAwait(false); - if (remaining_body > 0 && nread > 0) - remaining_body -= nread; - return nread; - } - - //public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, - // AsyncCallback cback, object state) - //{ - // if (disposed) - // throw new ObjectDisposedException(typeof(RequestStream).ToString()); - - // int nread = FillFromBuffer(buffer, offset, count); - // if (nread > 0 || nread == -1) - // { - // HttpStreamAsyncResult ares = new HttpStreamAsyncResult(); - // ares.Buffer = buffer; - // ares.Offset = offset; - // ares.Count = count; - // ares.Callback = cback; - // ares.State = state; - // ares.SynchRead = Math.Max(0, nread); - // ares.Complete(); - // return ares; - // } - - // // Avoid reading past the end of the request to allow - // // for HTTP pipelining - // if (remaining_body >= 0 && count > remaining_body) - // count = (int)Math.Min(Int32.MaxValue, remaining_body); - // return stream.BeginRead(buffer, offset, count, cback, state); - //} - - //public override int EndRead(IAsyncResult ares) - //{ - // if (disposed) - // throw new ObjectDisposedException(typeof(RequestStream).ToString()); - - // if (ares == null) - // throw new ArgumentNullException("async_result"); - - // if (ares is HttpStreamAsyncResult) - // { - // HttpStreamAsyncResult r = (HttpStreamAsyncResult)ares; - // if (!ares.IsCompleted) - // ares.AsyncWaitHandle.WaitOne(); - // return r.SynchRead; - // } - - // // Close on exception? - // int nread = stream.EndRead(ares); - // if (remaining_body > 0 && nread > 0) - // remaining_body -= nread; - // return nread; - //} - - public override long Seek(long offset, SeekOrigin origin) - { - throw new NotSupportedException(); - } - - public override void SetLength(long value) - { - throw new NotSupportedException(); - } - - public override void Write(byte[] buffer, int offset, int count) - { - throw new NotSupportedException(); - } - - //public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, - // AsyncCallback cback, object state) - //{ - // throw new NotSupportedException(); - //} - - //public override void EndWrite(IAsyncResult async_result) - //{ - // throw new NotSupportedException(); - //} - } -} diff --git a/SocketHttpListener.Portable/Primitives/HttpListenerException.cs b/SocketHttpListener.Portable/Primitives/HttpListenerException.cs deleted file mode 100644 index 7b383fd23..000000000 --- a/SocketHttpListener.Portable/Primitives/HttpListenerException.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SocketHttpListener.Primitives -{ - public class HttpListenerException : Exception - { - public HttpListenerException(int statusCode, string message) - : base(message) - { - - } - } -} diff --git a/SocketHttpListener.Portable/Properties/AssemblyInfo.cs b/SocketHttpListener.Portable/Properties/AssemblyInfo.cs deleted file mode 100644 index 870426460..000000000 --- a/SocketHttpListener.Portable/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Resources; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SocketHttpListener.Portable")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SocketHttpListener.Portable")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: NeutralResourcesLanguage("en")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets b/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets deleted file mode 100644 index e69ce0e64..000000000 --- a/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Target Name="EmitMSBuildWarning" BeforeTargets="Build"> - <Warning Text="Packages containing MSBuild targets and props files cannot be fully installed in projects targeting multiple frameworks. The MSBuild targets and props files have been ignored." /> - </Target> -</Project>
\ No newline at end of file diff --git a/SocketHttpListener.Portable/packages.config b/SocketHttpListener.Portable/packages.config deleted file mode 100644 index 2aae715b5..000000000 --- a/SocketHttpListener.Portable/packages.config +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="MediaBrowser.Common" version="3.0.689" targetFramework="portable45-net45+win8" /> - <package id="Patterns.Logging" version="1.0.0.6" targetFramework="portable45-net45+win8" /> -</packages>
\ No newline at end of file diff --git a/SocketHttpListener.Portable/project.json b/SocketHttpListener.Portable/project.json deleted file mode 100644 index fbbe9eaf3..000000000 --- a/SocketHttpListener.Portable/project.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "frameworks":{ - "netstandard1.6":{ - "dependencies":{ - "NETStandard.Library":"1.6.0", - } - }, - ".NETPortable,Version=v4.5,Profile=Profile7":{ - "buildOptions": { - "define": [ ] - }, - "frameworkAssemblies":{ - - } - } - } -}
\ No newline at end of file diff --git a/SocketHttpListener.Portable/ByteOrder.cs b/SocketHttpListener/ByteOrder.cs index f5db52fd7..f5db52fd7 100644 --- a/SocketHttpListener.Portable/ByteOrder.cs +++ b/SocketHttpListener/ByteOrder.cs diff --git a/SocketHttpListener.Portable/CloseEventArgs.cs b/SocketHttpListener/CloseEventArgs.cs index b1bb4b196..b1bb4b196 100644 --- a/SocketHttpListener.Portable/CloseEventArgs.cs +++ b/SocketHttpListener/CloseEventArgs.cs diff --git a/SocketHttpListener.Portable/CloseStatusCode.cs b/SocketHttpListener/CloseStatusCode.cs index 62a268bce..62a268bce 100644 --- a/SocketHttpListener.Portable/CloseStatusCode.cs +++ b/SocketHttpListener/CloseStatusCode.cs diff --git a/SocketHttpListener.Portable/CompressionMethod.cs b/SocketHttpListener/CompressionMethod.cs index 36a48d94c..36a48d94c 100644 --- a/SocketHttpListener.Portable/CompressionMethod.cs +++ b/SocketHttpListener/CompressionMethod.cs diff --git a/SocketHttpListener.Portable/ErrorEventArgs.cs b/SocketHttpListener/ErrorEventArgs.cs index bf1d6fc95..bf1d6fc95 100644 --- a/SocketHttpListener.Portable/ErrorEventArgs.cs +++ b/SocketHttpListener/ErrorEventArgs.cs diff --git a/SocketHttpListener.Portable/Ext.cs b/SocketHttpListener/Ext.cs index 87f0887ed..87f0887ed 100644 --- a/SocketHttpListener.Portable/Ext.cs +++ b/SocketHttpListener/Ext.cs diff --git a/SocketHttpListener.Portable/Fin.cs b/SocketHttpListener/Fin.cs index f91401b99..f91401b99 100644 --- a/SocketHttpListener.Portable/Fin.cs +++ b/SocketHttpListener/Fin.cs diff --git a/SocketHttpListener.Portable/HttpBase.cs b/SocketHttpListener/HttpBase.cs index 5172ba497..5172ba497 100644 --- a/SocketHttpListener.Portable/HttpBase.cs +++ b/SocketHttpListener/HttpBase.cs diff --git a/SocketHttpListener.Portable/HttpResponse.cs b/SocketHttpListener/HttpResponse.cs index 5aca28c7c..5aca28c7c 100644 --- a/SocketHttpListener.Portable/HttpResponse.cs +++ b/SocketHttpListener/HttpResponse.cs diff --git a/SocketHttpListener.Portable/Mask.cs b/SocketHttpListener/Mask.cs index adc2f098e..adc2f098e 100644 --- a/SocketHttpListener.Portable/Mask.cs +++ b/SocketHttpListener/Mask.cs diff --git a/SocketHttpListener.Portable/MessageEventArgs.cs b/SocketHttpListener/MessageEventArgs.cs index 9dbadb9ab..9dbadb9ab 100644 --- a/SocketHttpListener.Portable/MessageEventArgs.cs +++ b/SocketHttpListener/MessageEventArgs.cs diff --git a/SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs index c6e7e538e..c6e7e538e 100644 --- a/SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs +++ b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs diff --git a/SocketHttpListener.Portable/Net/ChunkStream.cs b/SocketHttpListener/Net/ChunkStream.cs index 3f3b4a667..2de6c2c18 100644 --- a/SocketHttpListener.Portable/Net/ChunkStream.cs +++ b/SocketHttpListener/Net/ChunkStream.cs @@ -8,9 +8,39 @@ using System.Text; namespace SocketHttpListener.Net { - class ChunkStream + // Licensed to the .NET Foundation under one or more agreements. + // See the LICENSE file in the project root for more information. + // + // System.Net.ResponseStream + // + // Author: + // Gonzalo Paniagua Javier (gonzalo@novell.com) + // + // Copyright (c) 2005 Novell, Inc. (http://www.novell.com) + // + // Permission is hereby granted, free of charge, to any person obtaining + // a copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to + // permit persons to whom the Software is furnished to do so, subject to + // the following conditions: + // + // The above copyright notice and this permission notice shall be + // included in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + // + + internal sealed class ChunkStream { - enum State + private enum State { None, PartialSize, @@ -19,14 +49,14 @@ namespace SocketHttpListener.Net Trailer } - class Chunk + private class Chunk { public byte[] Bytes; public int Offset; public Chunk(byte[] chunk) { - this.Bytes = chunk; + Bytes = chunk; } public int Read(byte[] buffer, int offset, int size) @@ -38,33 +68,38 @@ namespace SocketHttpListener.Net } } - internal WebHeaderCollection headers; - int chunkSize; - int chunkRead; - int totalWritten; - State state; - //byte [] waitBuffer; - StringBuilder saved; - bool sawCR; - bool gotit; - int trailerState; - List<Chunk> chunks; + internal WebHeaderCollection _headers; + private int _chunkSize; + private int _chunkRead; + private int _totalWritten; + private State _state; + private StringBuilder _saved; + private bool _sawCR; + private bool _gotit; + private int _trailerState; + private List<Chunk> _chunks; + + public ChunkStream(byte[] buffer, int offset, int size, WebHeaderCollection headers) + : this(headers) + { + Write(buffer, offset, size); + } public ChunkStream(WebHeaderCollection headers) { - this.headers = headers; - saved = new StringBuilder(); - chunks = new List<Chunk>(); - chunkSize = -1; - totalWritten = 0; + _headers = headers; + _saved = new StringBuilder(); + _chunks = new List<Chunk>(); + _chunkSize = -1; + _totalWritten = 0; } public void ResetBuffer() { - chunkSize = -1; - chunkRead = 0; - totalWritten = 0; - chunks.Clear(); + _chunkSize = -1; + _chunkRead = 0; + _totalWritten = 0; + _chunks.Clear(); } public void WriteAndReadBack(byte[] buffer, int offset, int size, ref int read) @@ -79,15 +114,15 @@ namespace SocketHttpListener.Net return ReadFromChunks(buffer, offset, size); } - int ReadFromChunks(byte[] buffer, int offset, int size) + private int ReadFromChunks(byte[] buffer, int offset, int size) { - int count = chunks.Count; + int count = _chunks.Count; int nread = 0; var chunksForRemoving = new List<Chunk>(count); for (int i = 0; i < count; i++) { - Chunk chunk = (Chunk)chunks[i]; + Chunk chunk = _chunks[i]; if (chunk.Offset == chunk.Bytes.Length) { @@ -101,7 +136,7 @@ namespace SocketHttpListener.Net } foreach (var chunk in chunksForRemoving) - chunks.Remove(chunk); + _chunks.Remove(chunk); return nread; } @@ -112,44 +147,44 @@ namespace SocketHttpListener.Net InternalWrite(buffer, ref offset, size); } - void InternalWrite(byte[] buffer, ref int offset, int size) + private void InternalWrite(byte[] buffer, ref int offset, int size) { - if (state == State.None || state == State.PartialSize) + if (_state == State.None || _state == State.PartialSize) { - state = GetChunkSize(buffer, ref offset, size); - if (state == State.PartialSize) + _state = GetChunkSize(buffer, ref offset, size); + if (_state == State.PartialSize) return; - saved.Length = 0; - sawCR = false; - gotit = false; + _saved.Length = 0; + _sawCR = false; + _gotit = false; } - if (state == State.Body && offset < size) + if (_state == State.Body && offset < size) { - state = ReadBody(buffer, ref offset, size); - if (state == State.Body) + _state = ReadBody(buffer, ref offset, size); + if (_state == State.Body) return; } - if (state == State.BodyFinished && offset < size) + if (_state == State.BodyFinished && offset < size) { - state = ReadCRLF(buffer, ref offset, size); - if (state == State.BodyFinished) + _state = ReadCRLF(buffer, ref offset, size); + if (_state == State.BodyFinished) return; - sawCR = false; + _sawCR = false; } - if (state == State.Trailer && offset < size) + if (_state == State.Trailer && offset < size) { - state = ReadTrailer(buffer, ref offset, size); - if (state == State.Trailer) + _state = ReadTrailer(buffer, ref offset, size); + if (_state == State.Trailer) return; - saved.Length = 0; - sawCR = false; - gotit = false; + _saved.Length = 0; + _sawCR = false; + _gotit = false; } if (offset < size) @@ -158,21 +193,21 @@ namespace SocketHttpListener.Net public bool WantMore { - get { return (chunkRead != chunkSize || chunkSize != 0 || state != State.None); } + get { return (_chunkRead != _chunkSize || _chunkSize != 0 || _state != State.None); } } public bool DataAvailable { get { - int count = chunks.Count; + int count = _chunks.Count; for (int i = 0; i < count; i++) { - Chunk ch = (Chunk)chunks[i]; + Chunk ch = _chunks[i]; if (ch == null || ch.Bytes == null) continue; if (ch.Bytes.Length > 0 && ch.Offset < ch.Bytes.Length) - return (state != State.Body); + return (_state != State.Body); } return false; } @@ -180,73 +215,73 @@ namespace SocketHttpListener.Net public int TotalDataSize { - get { return totalWritten; } + get { return _totalWritten; } } public int ChunkLeft { - get { return chunkSize - chunkRead; } + get { return _chunkSize - _chunkRead; } } - State ReadBody(byte[] buffer, ref int offset, int size) + private State ReadBody(byte[] buffer, ref int offset, int size) { - if (chunkSize == 0) + if (_chunkSize == 0) return State.BodyFinished; int diff = size - offset; - if (diff + chunkRead > chunkSize) - diff = chunkSize - chunkRead; + if (diff + _chunkRead > _chunkSize) + diff = _chunkSize - _chunkRead; byte[] chunk = new byte[diff]; Buffer.BlockCopy(buffer, offset, chunk, 0, diff); - chunks.Add(new Chunk(chunk)); + _chunks.Add(new Chunk(chunk)); offset += diff; - chunkRead += diff; - totalWritten += diff; - return (chunkRead == chunkSize) ? State.BodyFinished : State.Body; + _chunkRead += diff; + _totalWritten += diff; + return (_chunkRead == _chunkSize) ? State.BodyFinished : State.Body; } - State GetChunkSize(byte[] buffer, ref int offset, int size) + private State GetChunkSize(byte[] buffer, ref int offset, int size) { - chunkRead = 0; - chunkSize = 0; + _chunkRead = 0; + _chunkSize = 0; char c = '\0'; while (offset < size) { c = (char)buffer[offset++]; if (c == '\r') { - if (sawCR) + if (_sawCR) ThrowProtocolViolation("2 CR found"); - sawCR = true; + _sawCR = true; continue; } - if (sawCR && c == '\n') + if (_sawCR && c == '\n') break; if (c == ' ') - gotit = true; + _gotit = true; - if (!gotit) - saved.Append(c); + if (!_gotit) + _saved.Append(c); - if (saved.Length > 20) + if (_saved.Length > 20) ThrowProtocolViolation("chunk size too long."); } - if (!sawCR || c != '\n') + if (!_sawCR || c != '\n') { if (offset < size) ThrowProtocolViolation("Missing \\n"); try { - if (saved.Length > 0) + if (_saved.Length > 0) { - chunkSize = Int32.Parse(RemoveChunkExtension(saved.ToString()), NumberStyles.HexNumber); + _chunkSize = Int32.Parse(RemoveChunkExtension(_saved.ToString()), NumberStyles.HexNumber); } } catch (Exception) @@ -257,26 +292,26 @@ namespace SocketHttpListener.Net return State.PartialSize; } - chunkRead = 0; + _chunkRead = 0; try { - chunkSize = Int32.Parse(RemoveChunkExtension(saved.ToString()), NumberStyles.HexNumber); + _chunkSize = Int32.Parse(RemoveChunkExtension(_saved.ToString()), NumberStyles.HexNumber); } catch (Exception) { ThrowProtocolViolation("Cannot parse chunk size."); } - if (chunkSize == 0) + if (_chunkSize == 0) { - trailerState = 2; + _trailerState = 2; return State.Trailer; } return State.Body; } - static string RemoveChunkExtension(string input) + private static string RemoveChunkExtension(string input) { int idx = input.IndexOf(';'); if (idx == -1) @@ -284,30 +319,30 @@ namespace SocketHttpListener.Net return input.Substring(0, idx); } - State ReadCRLF(byte[] buffer, ref int offset, int size) + private State ReadCRLF(byte[] buffer, ref int offset, int size) { - if (!sawCR) + if (!_sawCR) { if ((char)buffer[offset++] != '\r') ThrowProtocolViolation("Expecting \\r"); - sawCR = true; + _sawCR = true; if (offset == size) return State.BodyFinished; } - if (sawCR && (char)buffer[offset++] != '\n') + if (_sawCR && (char)buffer[offset++] != '\n') ThrowProtocolViolation("Expecting \\n"); return State.None; } - State ReadTrailer(byte[] buffer, ref int offset, int size) + private State ReadTrailer(byte[] buffer, ref int offset, int size) { char c = '\0'; // short path - if (trailerState == 2 && (char)buffer[offset] == '\r' && saved.Length == 0) + if (_trailerState == 2 && (char)buffer[offset] == '\r' && _saved.Length == 0) { offset++; if (offset < size && (char)buffer[offset] == '\n') @@ -318,7 +353,7 @@ namespace SocketHttpListener.Net offset--; } - int st = trailerState; + int st = _trailerState; string stString = "\r\n\r"; while (offset < size && st < 4) { @@ -337,34 +372,33 @@ namespace SocketHttpListener.Net if (st > 0) { - saved.Append(stString.Substring(0, saved.Length == 0 ? st - 2 : st)); + _saved.Append(stString.Substring(0, _saved.Length == 0 ? st - 2 : st)); st = 0; - if (saved.Length > 4196) + if (_saved.Length > 4196) ThrowProtocolViolation("Error reading trailer (too long)."); } } if (st < 4) { - trailerState = st; + _trailerState = st; if (offset < size) ThrowProtocolViolation("Error reading trailer."); return State.Trailer; } - StringReader reader = new StringReader(saved.ToString()); + StringReader reader = new StringReader(_saved.ToString()); string line; while ((line = reader.ReadLine()) != null && line != "") - headers.Add(line); + _headers.Add(line); return State.None; } - static void ThrowProtocolViolation(string message) + private static void ThrowProtocolViolation(string message) { - WebException we = new WebException(message, null, WebExceptionStatus.UnknownError, null); - //WebException we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null); + WebException we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null); throw we; } } diff --git a/SocketHttpListener/Net/ChunkedInputStream.cs b/SocketHttpListener/Net/ChunkedInputStream.cs new file mode 100644 index 000000000..2e0e1964b --- /dev/null +++ b/SocketHttpListener/Net/ChunkedInputStream.cs @@ -0,0 +1,172 @@ +using System; +using System.IO; +using System.Net; +using System.Runtime.InteropServices; +using SocketHttpListener.Primitives; + +namespace SocketHttpListener.Net +{ + // Licensed to the .NET Foundation under one or more agreements. + // See the LICENSE file in the project root for more information. + // + // System.Net.ResponseStream + // + // Author: + // Gonzalo Paniagua Javier (gonzalo@novell.com) + // + // Copyright (c) 2005 Novell, Inc. (http://www.novell.com) + // + // Permission is hereby granted, free of charge, to any person obtaining + // a copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to + // permit persons to whom the Software is furnished to do so, subject to + // the following conditions: + // + // The above copyright notice and this permission notice shall be + // included in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + // + + internal sealed class ChunkedInputStream : HttpRequestStream + { + private ChunkStream _decoder; + private readonly HttpListenerContext _context; + private bool _no_more_data; + + private class ReadBufferState + { + public byte[] Buffer; + public int Offset; + public int Count; + public int InitialCount; + public HttpStreamAsyncResult Ares; + public ReadBufferState(byte[] buffer, int offset, int count, HttpStreamAsyncResult ares) + { + Buffer = buffer; + Offset = offset; + Count = count; + InitialCount = count; + Ares = ares; + } + } + + public ChunkedInputStream(HttpListenerContext context, Stream stream, byte[] buffer, int offset, int length) + : base(stream, buffer, offset, length) + { + _context = context; + WebHeaderCollection coll = (WebHeaderCollection)context.Request.Headers; + _decoder = new ChunkStream(coll); + } + + public ChunkStream Decoder + { + get { return _decoder; } + set { _decoder = value; } + } + + protected override int ReadCore(byte[] buffer, int offset, int count) + { + IAsyncResult ares = BeginReadCore(buffer, offset, count, null, null); + return EndRead(ares); + } + + protected override IAsyncResult BeginReadCore(byte[] buffer, int offset, int size, AsyncCallback cback, object state) + { + HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + ares._callback = cback; + ares._state = state; + if (_no_more_data || size == 0 || _closed) + { + ares.Complete(); + return ares; + } + int nread = _decoder.Read(buffer, offset, size); + offset += nread; + size -= nread; + if (size == 0) + { + // got all we wanted, no need to bother the decoder yet + ares._count = nread; + ares.Complete(); + return ares; + } + if (!_decoder.WantMore) + { + _no_more_data = nread == 0; + ares._count = nread; + ares.Complete(); + return ares; + } + ares._buffer = new byte[8192]; + ares._offset = 0; + ares._count = 8192; + ReadBufferState rb = new ReadBufferState(buffer, offset, size, ares); + rb.InitialCount += nread; + base.BeginReadCore(ares._buffer, ares._offset, ares._count, OnRead, rb); + return ares; + } + + private void OnRead(IAsyncResult base_ares) + { + ReadBufferState rb = (ReadBufferState)base_ares.AsyncState; + HttpStreamAsyncResult ares = rb.Ares; + try + { + int nread = base.EndRead(base_ares); + _decoder.Write(ares._buffer, ares._offset, nread); + nread = _decoder.Read(rb.Buffer, rb.Offset, rb.Count); + rb.Offset += nread; + rb.Count -= nread; + if (rb.Count == 0 || !_decoder.WantMore || nread == 0) + { + _no_more_data = !_decoder.WantMore && nread == 0; + ares._count = rb.InitialCount - rb.Count; + ares.Complete(); + return; + } + ares._offset = 0; + ares._count = Math.Min(8192, _decoder.ChunkLeft + 6); + base.BeginReadCore(ares._buffer, ares._offset, ares._count, OnRead, rb); + } + catch (Exception e) + { + _context.Connection.SendError(e.Message, 400); + ares.Complete(e); + } + } + + public override int EndRead(IAsyncResult asyncResult) + { + if (asyncResult == null) + throw new ArgumentNullException(nameof(asyncResult)); + + HttpStreamAsyncResult ares = asyncResult as HttpStreamAsyncResult; + if (ares == null || !ReferenceEquals(this, ares._parent)) + { + throw new ArgumentException("Invalid async result"); + } + if (ares._endCalled) + { + throw new InvalidOperationException("Invalid end call"); + } + ares._endCalled = true; + + if (!asyncResult.IsCompleted) + asyncResult.AsyncWaitHandle.WaitOne(); + + if (ares._error != null) + throw new HttpListenerException((int)HttpStatusCode.BadRequest, "Bad Request"); + + return ares._count; + } + } +} diff --git a/SocketHttpListener.Portable/Net/CookieHelper.cs b/SocketHttpListener/Net/CookieHelper.cs index 470507d6b..470507d6b 100644 --- a/SocketHttpListener.Portable/Net/CookieHelper.cs +++ b/SocketHttpListener/Net/CookieHelper.cs diff --git a/SocketHttpListener.Portable/Net/EndPointListener.cs b/SocketHttpListener/Net/EndPointListener.cs index 2106bbec5..2106bbec5 100644 --- a/SocketHttpListener.Portable/Net/EndPointListener.cs +++ b/SocketHttpListener/Net/EndPointListener.cs diff --git a/SocketHttpListener.Portable/Net/EndPointManager.cs b/SocketHttpListener/Net/EndPointManager.cs index 6a00ed360..6a00ed360 100644 --- a/SocketHttpListener.Portable/Net/EndPointManager.cs +++ b/SocketHttpListener/Net/EndPointManager.cs diff --git a/SocketHttpListener.Portable/Net/HttpConnection.cs b/SocketHttpListener/Net/HttpConnection.cs index 65e7470f7..848b80f99 100644 --- a/SocketHttpListener.Portable/Net/HttpConnection.cs +++ b/SocketHttpListener/Net/HttpConnection.cs @@ -23,7 +23,7 @@ namespace SocketHttpListener.Net HttpListenerContext context; StringBuilder current_line; ListenerPrefix prefix; - RequestStream i_stream; + HttpRequestStream i_stream; Stream o_stream; bool chunked; int reuses; @@ -186,7 +186,7 @@ namespace SocketHttpListener.Net } } - public RequestStream GetRequestStream(bool chunked, long contentlength) + public HttpRequestStream GetRequestStream(bool chunked, long contentlength) { if (i_stream == null) { @@ -203,7 +203,7 @@ namespace SocketHttpListener.Net } else { - i_stream = new RequestStream(stream, buffer, position, length - position, contentlength); + i_stream = new HttpRequestStream(stream, buffer, position, length - position, contentlength); } } return i_stream; @@ -216,20 +216,9 @@ namespace SocketHttpListener.Net { //context.Response.DetermineIfChunked(); - if (context.Response.SendChunked || isExpect100Continue || context.Request.IsWebSocketRequest || true) - { - var supportsDirectSocketAccess = !context.Response.SendChunked && !isExpect100Continue && !secure; + var supportsDirectSocketAccess = !context.Response.SendChunked && !isExpect100Continue && !secure; - o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding, _fileSystem, sock, supportsDirectSocketAccess, _logger, _environment); - } - else - { - o_stream = stream; - using (var headerStream = ResponseStream.GetHeaders(context.Response, _memoryStreamFactory, false)) - { - headerStream.CopyTo(o_stream); - } - } + o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding, _fileSystem, sock, supportsDirectSocketAccess, _logger, _environment); } return o_stream; } diff --git a/SocketHttpListener.Portable/Net/HttpListener.cs b/SocketHttpListener/Net/HttpListener.cs index b3e01425c..b3e01425c 100644 --- a/SocketHttpListener.Portable/Net/HttpListener.cs +++ b/SocketHttpListener/Net/HttpListener.cs diff --git a/SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs index faa26693d..faa26693d 100644 --- a/SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs +++ b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs diff --git a/SocketHttpListener.Portable/Net/HttpListenerContext.cs b/SocketHttpListener/Net/HttpListenerContext.cs index 58d769f22..58d769f22 100644 --- a/SocketHttpListener.Portable/Net/HttpListenerContext.cs +++ b/SocketHttpListener/Net/HttpListenerContext.cs diff --git a/SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs index 0b05539ee..0b05539ee 100644 --- a/SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs +++ b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs diff --git a/SocketHttpListener.Portable/Net/HttpListenerRequest.cs b/SocketHttpListener/Net/HttpListenerRequest.cs index cfbd49203..cfbd49203 100644 --- a/SocketHttpListener.Portable/Net/HttpListenerRequest.cs +++ b/SocketHttpListener/Net/HttpListenerRequest.cs diff --git a/SocketHttpListener.Portable/Net/HttpListenerResponse.cs b/SocketHttpListener/Net/HttpListenerResponse.cs index 3cb6a0d75..3cb6a0d75 100644 --- a/SocketHttpListener.Portable/Net/HttpListenerResponse.cs +++ b/SocketHttpListener/Net/HttpListenerResponse.cs diff --git a/SocketHttpListener/Net/HttpRequestStream.Managed.cs b/SocketHttpListener/Net/HttpRequestStream.Managed.cs new file mode 100644 index 000000000..cb02a4d5a --- /dev/null +++ b/SocketHttpListener/Net/HttpRequestStream.Managed.cs @@ -0,0 +1,196 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.ExceptionServices; +using System.Text; +using System.Threading.Tasks; + +namespace SocketHttpListener.Net +{ + // Licensed to the .NET Foundation under one or more agreements. + // See the LICENSE file in the project root for more information. + // + // System.Net.ResponseStream + // + // Author: + // Gonzalo Paniagua Javier (gonzalo@novell.com) + // + // Copyright (c) 2005 Novell, Inc. (http://www.novell.com) + // + // Permission is hereby granted, free of charge, to any person obtaining + // a copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to + // permit persons to whom the Software is furnished to do so, subject to + // the following conditions: + // + // The above copyright notice and this permission notice shall be + // included in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + // + + internal partial class HttpRequestStream : Stream + { + private byte[] _buffer; + private int _offset; + private int _length; + private long _remainingBody; + protected bool _closed; + private Stream _stream; + + internal HttpRequestStream(Stream stream, byte[] buffer, int offset, int length) + : this(stream, buffer, offset, length, -1) + { + } + + internal HttpRequestStream(Stream stream, byte[] buffer, int offset, int length, long contentlength) + { + _stream = stream; + _buffer = buffer; + _offset = offset; + _length = length; + _remainingBody = contentlength; + } + + // Returns 0 if we can keep reading from the base stream, + // > 0 if we read something from the buffer. + // -1 if we had a content length set and we finished reading that many bytes. + private int FillFromBuffer(byte[] buffer, int offset, int count) + { + if (_remainingBody == 0) + return -1; + + if (_length == 0) + return 0; + + int size = Math.Min(_length, count); + if (_remainingBody > 0) + size = (int)Math.Min(size, _remainingBody); + + if (_offset > _buffer.Length - size) + { + size = Math.Min(size, _buffer.Length - _offset); + } + if (size == 0) + return 0; + + Buffer.BlockCopy(_buffer, _offset, buffer, offset, size); + _offset += size; + _length -= size; + if (_remainingBody > 0) + _remainingBody -= size; + return size; + } + + protected virtual int ReadCore(byte[] buffer, int offset, int size) + { + // Call FillFromBuffer to check for buffer boundaries even when remaining_body is 0 + int nread = FillFromBuffer(buffer, offset, size); + if (nread == -1) + { // No more bytes available (Content-Length) + return 0; + } + else if (nread > 0) + { + return nread; + } + + nread = _stream.Read(buffer, offset, size); + if (nread > 0 && _remainingBody > 0) + _remainingBody -= nread; + return nread; + } + + protected virtual IAsyncResult BeginReadCore(byte[] buffer, int offset, int size, AsyncCallback cback, object state) + { + if (size == 0 || _closed) + { + HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + ares._callback = cback; + ares._state = state; + ares.Complete(); + return ares; + } + + int nread = FillFromBuffer(buffer, offset, size); + if (nread > 0 || nread == -1) + { + HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + ares._buffer = buffer; + ares._offset = offset; + ares._count = size; + ares._callback = cback; + ares._state = state; + ares._synchRead = Math.Max(0, nread); + ares.Complete(); + return ares; + } + + // Avoid reading past the end of the request to allow + // for HTTP pipelining + if (_remainingBody >= 0 && size > _remainingBody) + { + size = (int)Math.Min(int.MaxValue, _remainingBody); + } + + return _stream.BeginRead(buffer, offset, size, cback, state); + } + + public override int EndRead(IAsyncResult asyncResult) + { + if (asyncResult == null) + throw new ArgumentNullException(nameof(asyncResult)); + + var r = asyncResult as HttpStreamAsyncResult; + + if (r != null) + { + if (!ReferenceEquals(this, r._parent)) + { + throw new ArgumentException("Invalid async result"); + } + if (r._endCalled) + { + throw new InvalidOperationException("Invalid end call"); + } + r._endCalled = true; + + if (!asyncResult.IsCompleted) + { + asyncResult.AsyncWaitHandle.WaitOne(); + } + + return r._synchRead; + } + + if (_closed) + return 0; + + int nread = 0; + try + { + nread = _stream.EndRead(asyncResult); + } + catch (IOException e) when (e.InnerException is ArgumentException || e.InnerException is InvalidOperationException) + { + throw e.InnerException; + } + + if (_remainingBody > 0 && nread > 0) + { + _remainingBody -= nread; + } + + return nread; + } + } +} diff --git a/SocketHttpListener/Net/HttpRequestStream.cs b/SocketHttpListener/Net/HttpRequestStream.cs new file mode 100644 index 000000000..c54da44a1 --- /dev/null +++ b/SocketHttpListener/Net/HttpRequestStream.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SocketHttpListener.Net +{ + // Licensed to the .NET Foundation under one or more agreements. + // See the LICENSE file in the project root for more information. + // + // System.Net.ResponseStream + // + // Author: + // Gonzalo Paniagua Javier (gonzalo@novell.com) + // + // Copyright (c) 2005 Novell, Inc. (http://www.novell.com) + // + // Permission is hereby granted, free of charge, to any person obtaining + // a copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to + // permit persons to whom the Software is furnished to do so, subject to + // the following conditions: + // + // The above copyright notice and this permission notice shall be + // included in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + // + + internal partial class HttpRequestStream : Stream + { + public override bool CanSeek => false; + public override bool CanWrite => false; + public override bool CanRead => true; + + public override int Read(byte[] buffer, int offset, int size) + { + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } + if (size == 0 || _closed) + { + return 0; + } + + return ReadCore(buffer, offset, size); + } + + public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, object state) + { + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } + + return BeginReadCore(buffer, offset, size, callback, state); + } + + public override void Flush() { } + public override Task FlushAsync(CancellationToken cancellationToken) => Task.CompletedTask; + + public override long Length + { + get + { + throw new NotImplementedException(); + } + } + + public override long Position + { + get + { + throw new NotImplementedException(); + } + + set + { + throw new NotImplementedException(); + } + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotImplementedException(); + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotImplementedException(); + } + + public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state) + { + return base.BeginWrite(buffer, offset, count, callback, state); + } + + public override void EndWrite(IAsyncResult asyncResult) + { + base.EndWrite(asyncResult); + } + + internal bool Closed => _closed; + + protected override void Dispose(bool disposing) + { + _closed = true; + base.Dispose(disposing); + } + } +} diff --git a/SocketHttpListener.Portable/Net/HttpStatusCode.cs b/SocketHttpListener/Net/HttpStatusCode.cs index 93da82ba0..93da82ba0 100644 --- a/SocketHttpListener.Portable/Net/HttpStatusCode.cs +++ b/SocketHttpListener/Net/HttpStatusCode.cs diff --git a/SocketHttpListener/Net/HttpStreamAsyncResult.cs b/SocketHttpListener/Net/HttpStreamAsyncResult.cs new file mode 100644 index 000000000..e7e516c6b --- /dev/null +++ b/SocketHttpListener/Net/HttpStreamAsyncResult.cs @@ -0,0 +1,85 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace SocketHttpListener.Net +{ + internal class HttpStreamAsyncResult : IAsyncResult + { + private object _locker = new object(); + private ManualResetEvent _handle; + private bool _completed; + + internal readonly object _parent; + internal byte[] _buffer; + internal int _offset; + internal int _count; + internal AsyncCallback _callback; + internal object _state; + internal int _synchRead; + internal Exception _error; + internal bool _endCalled; + + internal HttpStreamAsyncResult(object parent) + { + _parent = parent; + } + + public void Complete(Exception e) + { + _error = e; + Complete(); + } + + public void Complete() + { + lock (_locker) + { + if (_completed) + return; + + _completed = true; + if (_handle != null) + _handle.Set(); + + if (_callback != null) + Task.Run(() => _callback(this)); + } + } + + public object AsyncState + { + get { return _state; } + } + + public WaitHandle AsyncWaitHandle + { + get + { + lock (_locker) + { + if (_handle == null) + _handle = new ManualResetEvent(_completed); + } + + return _handle; + } + } + + public bool CompletedSynchronously + { + get { return (_synchRead == _count); } + } + + public bool IsCompleted + { + get + { + lock (_locker) + { + return _completed; + } + } + } + } +} diff --git a/SocketHttpListener.Portable/Net/HttpVersion.cs b/SocketHttpListener/Net/HttpVersion.cs index c0839b46d..c0839b46d 100644 --- a/SocketHttpListener.Portable/Net/HttpVersion.cs +++ b/SocketHttpListener/Net/HttpVersion.cs diff --git a/SocketHttpListener.Portable/Net/ListenerPrefix.cs b/SocketHttpListener/Net/ListenerPrefix.cs index 2c314da50..2c314da50 100644 --- a/SocketHttpListener.Portable/Net/ListenerPrefix.cs +++ b/SocketHttpListener/Net/ListenerPrefix.cs diff --git a/SocketHttpListener.Portable/Net/ResponseStream.cs b/SocketHttpListener/Net/ResponseStream.cs index b2d0d4e9c..5949e3817 100644 --- a/SocketHttpListener.Portable/Net/ResponseStream.cs +++ b/SocketHttpListener/Net/ResponseStream.cs @@ -304,7 +304,7 @@ namespace SocketHttpListener.Net private async Task TransmitFileManaged(string path, long offset, long count, FileShareMode fileShareMode, CancellationToken cancellationToken) { - var allowAsync = _environment.OperatingSystem != OperatingSystem.Windows; + var allowAsync = _environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows; var fileOpenOptions = offset > 0 ? FileOpenOptions.RandomAccess diff --git a/SocketHttpListener.Portable/Net/WebHeaderCollection.cs b/SocketHttpListener/Net/WebHeaderCollection.cs index d20f99b9b..d20f99b9b 100644 --- a/SocketHttpListener.Portable/Net/WebHeaderCollection.cs +++ b/SocketHttpListener/Net/WebHeaderCollection.cs diff --git a/SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs index 034ac17d2..034ac17d2 100644 --- a/SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs +++ b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs diff --git a/SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs index 3ffa6e639..3ffa6e639 100644 --- a/SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs +++ b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs diff --git a/SocketHttpListener.Portable/Opcode.cs b/SocketHttpListener/Opcode.cs index 62b7d8585..62b7d8585 100644 --- a/SocketHttpListener.Portable/Opcode.cs +++ b/SocketHttpListener/Opcode.cs diff --git a/SocketHttpListener.Portable/PayloadData.cs b/SocketHttpListener/PayloadData.cs index a6318da2b..a6318da2b 100644 --- a/SocketHttpListener.Portable/PayloadData.cs +++ b/SocketHttpListener/PayloadData.cs diff --git a/SocketHttpListener.Portable/Primitives/ICertificate.cs b/SocketHttpListener/Primitives/ICertificate.cs index 1289da13d..1289da13d 100644 --- a/SocketHttpListener.Portable/Primitives/ICertificate.cs +++ b/SocketHttpListener/Primitives/ICertificate.cs diff --git a/SocketHttpListener.Portable/Primitives/IStreamFactory.cs b/SocketHttpListener/Primitives/IStreamFactory.cs index 57e21e31b..57e21e31b 100644 --- a/SocketHttpListener.Portable/Primitives/IStreamFactory.cs +++ b/SocketHttpListener/Primitives/IStreamFactory.cs diff --git a/SocketHttpListener.Portable/Primitives/ITextEncoding.cs b/SocketHttpListener/Primitives/ITextEncoding.cs index b10145687..b10145687 100644 --- a/SocketHttpListener.Portable/Primitives/ITextEncoding.cs +++ b/SocketHttpListener/Primitives/ITextEncoding.cs diff --git a/MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs b/SocketHttpListener/Properties/AssemblyInfo.cs index c8e037804..8876cea4f 100644 --- a/MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs +++ b/SocketHttpListener/Properties/AssemblyInfo.cs @@ -1,15 +1,16 @@ using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("MediaBrowser.Server.Startup.Common")] +[assembly: AssemblyTitle("SocketHttpListener")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MediaBrowser.Server.Startup.Common")] -[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyProduct("SocketHttpListener")] +[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -19,7 +20,7 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("fcc1d690-3a86-4c4b-baef-439c53e1547a")] +[assembly: Guid("1d74413b-e7cf-455b-b021-f52bdf881542")] // Version information for an assembly consists of the following four values: // @@ -27,4 +28,7 @@ using System.Runtime.InteropServices; // Minor Version // Build Number // Revision -//
\ No newline at end of file +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] diff --git a/SocketHttpListener.Portable/Rsv.cs b/SocketHttpListener/Rsv.cs index 668059b8a..668059b8a 100644 --- a/SocketHttpListener.Portable/Rsv.cs +++ b/SocketHttpListener/Rsv.cs diff --git a/SocketHttpListener.Portable/SocketHttpListener.Portable.csproj b/SocketHttpListener/SocketHttpListener.csproj index ee902462b..dd2d2cf0f 100644 --- a/SocketHttpListener.Portable/SocketHttpListener.Portable.csproj +++ b/SocketHttpListener/SocketHttpListener.csproj @@ -2,19 +2,16 @@ <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> - <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}</ProjectGuid> + <ProjectGuid>{1D74413B-E7CF-455B-B021-F52BDF881542}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>SocketHttpListener.Portable</RootNamespace> - <AssemblyName>SocketHttpListener.Portable</AssemblyName> - <DefaultLanguage>en-US</DefaultLanguage> + <RootNamespace>SocketHttpListener</RootNamespace> + <AssemblyName>SocketHttpListener</AssemblyName> + <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <TargetFrameworkProfile>Profile7</TargetFrameworkProfile> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -34,6 +31,19 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="..\SharedVersion.cs"> + <Link>Properties\SharedVersion.cs</Link> + </Compile> <Compile Include="ByteOrder.cs" /> <Compile Include="CloseEventArgs.cs" /> <Compile Include="CloseStatusCode.cs" /> @@ -58,18 +68,18 @@ <Compile Include="Net\HttpListenerPrefixCollection.cs" /> <Compile Include="Net\HttpListenerRequest.cs" /> <Compile Include="Net\HttpListenerResponse.cs" /> + <Compile Include="Net\HttpRequestStream.cs" /> + <Compile Include="Net\HttpRequestStream.Managed.cs" /> <Compile Include="Net\HttpStatusCode.cs" /> <Compile Include="Net\HttpStreamAsyncResult.cs" /> <Compile Include="Net\HttpVersion.cs" /> <Compile Include="Net\ListenerPrefix.cs" /> - <Compile Include="Net\RequestStream.cs" /> <Compile Include="Net\ResponseStream.cs" /> <Compile Include="Net\WebHeaderCollection.cs" /> <Compile Include="Net\WebSockets\HttpListenerWebSocketContext.cs" /> <Compile Include="Net\WebSockets\WebSocketContext.cs" /> <Compile Include="Opcode.cs" /> <Compile Include="PayloadData.cs" /> - <Compile Include="Primitives\HttpListenerException.cs" /> <Compile Include="Primitives\ICertificate.cs" /> <Compile Include="Primitives\IStreamFactory.cs" /> <Compile Include="Primitives\ITextEncoding.cs" /> @@ -81,9 +91,6 @@ <Compile Include="WebSocketState.cs" /> </ItemGroup> <ItemGroup> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project> <Name>MediaBrowser.Common</Name> @@ -93,11 +100,7 @@ <Name>MediaBrowser.Model</Name> </ProjectReference> </ItemGroup> - <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" /> - <PropertyGroup> - <PostBuildEvent> - </PostBuildEvent> - </PropertyGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> diff --git a/SocketHttpListener.Portable/WebSocket.cs b/SocketHttpListener/WebSocket.cs index 9966d3fcf..9966d3fcf 100644 --- a/SocketHttpListener.Portable/WebSocket.cs +++ b/SocketHttpListener/WebSocket.cs diff --git a/SocketHttpListener.Portable/WebSocketException.cs b/SocketHttpListener/WebSocketException.cs index 260721317..260721317 100644 --- a/SocketHttpListener.Portable/WebSocketException.cs +++ b/SocketHttpListener/WebSocketException.cs diff --git a/SocketHttpListener.Portable/WebSocketFrame.cs b/SocketHttpListener/WebSocketFrame.cs index 44fa4a5dc..44fa4a5dc 100644 --- a/SocketHttpListener.Portable/WebSocketFrame.cs +++ b/SocketHttpListener/WebSocketFrame.cs diff --git a/SocketHttpListener.Portable/WebSocketState.cs b/SocketHttpListener/WebSocketState.cs index 73b3a49dd..73b3a49dd 100644 --- a/SocketHttpListener.Portable/WebSocketState.cs +++ b/SocketHttpListener/WebSocketState.cs |
