diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-10-28 23:54:07 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-28 23:54:07 -0400 |
| commit | 84c96a9cc432ee939ec361bb85e561a8b3b39069 (patch) | |
| tree | ad3b71649bfdecd605589b55595bc5f7bcbbd4a2 /Emby.Server.Implementations | |
| parent | 5302cd5b20e8c160d288886732b410124091878f (diff) | |
| parent | 1dcb3a1369c41f292b1cb0f9ac32b100f30c2485 (diff) | |
Merge pull request #2986 from MediaBrowser/beta
Beta
Diffstat (limited to 'Emby.Server.Implementations')
5 files changed, 70 insertions, 62 deletions
diff --git a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs index 4a3301252..020818361 100644 --- a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs +++ b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs @@ -9,7 +9,7 @@ using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.Channels { - class RefreshChannelsScheduledTask : IScheduledTask + class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask { private readonly IChannelManager _channelManager; private readonly IUserManager _userManager; @@ -39,6 +39,21 @@ namespace Emby.Server.Implementations.Channels get { return "Internet Channels"; } } + public bool IsHidden + { + get { return ((ChannelManager)_channelManager).Channels.Length == 0; } + } + + public bool IsEnabled + { + get { return true; } + } + + public bool IsLogged + { + get { return true; } + } + public async Task Execute(System.Threading.CancellationToken cancellationToken, IProgress<double> progress) { var manager = (ChannelManager)_channelManager; @@ -65,15 +80,5 @@ namespace Emby.Server.Implementations.Channels { get { return "RefreshInternetChannels"; } } - - public bool IsHidden - { - get { return false; } - } - - public bool IsEnabled - { - get { return true; } - } } } diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs index ef95b47c3..cd7c98dc8 100644 --- a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs +++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs @@ -124,18 +124,6 @@ namespace Emby.Server.Implementations.HttpClientManager } } - private void AddIpv4Option(HttpWebRequest request, HttpRequestOptions options) - { - request.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) => - { - if (remoteEndPoint.AddressFamily == AddressFamily.InterNetwork) - { - return new IPEndPoint(IPAddress.Any, 0); - } - throw new InvalidOperationException("no IPv4 address"); - }; - } - private WebRequest GetRequest(HttpRequestOptions options, string method) { var url = options.Url; @@ -153,11 +141,6 @@ namespace Emby.Server.Implementations.HttpClientManager if (httpWebRequest != null) { - if (options.PreferIpv4) - { - AddIpv4Option(httpWebRequest, options); - } - AddRequestHeaders(httpWebRequest, options); if (options.EnableHttpCompression) diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index cac1cb3b4..bd8a09550 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -506,7 +506,7 @@ namespace Emby.Server.Implementations.Library throw new ArgumentNullException("type"); } - if (ConfigurationManager.Configuration.EnableLocalizedGuids && key.StartsWith(ConfigurationManager.ApplicationPaths.ProgramDataPath)) + if (key.StartsWith(ConfigurationManager.ApplicationPaths.ProgramDataPath)) { // Try to normalize paths located underneath program-data in an attempt to make them more portable key = key.Substring(ConfigurationManager.ApplicationPaths.ProgramDataPath.Length) diff --git a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs index b3c7ecc9f..e210e2224 100644 --- a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs +++ b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs @@ -653,6 +653,14 @@ namespace Emby.Server.Implementations.LiveTv.Listings // Schedules direct requires that the client support compression and will return a 400 response without it options.EnableHttpCompression = true; + // On windows 7 under .net core, this header is not getting added +#if NETSTANDARD2_0 + if (Environment.OSVersion.Platform == PlatformID.Win32NT) + { + options.RequestHeaders["Accept-Encoding"] = "deflate"; + } +#endif + try { return await _httpClient.Post(options).ConfigureAwait(false); @@ -684,6 +692,14 @@ namespace Emby.Server.Implementations.LiveTv.Listings // Schedules direct requires that the client support compression and will return a 400 response without it options.EnableHttpCompression = true; + // On windows 7 under .net core, this header is not getting added +#if NETSTANDARD2_0 + if (Environment.OSVersion.Platform == PlatformID.Win32NT) + { + options.RequestHeaders["Accept-Encoding"] = "deflate"; + } +#endif + try { return await _httpClient.SendAsync(options, "GET").ConfigureAwait(false); diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index 66b2cba39..72d0154aa 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -103,7 +103,10 @@ namespace Emby.Server.Implementations.Networking } return endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("127.0.0.1", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("192.168", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || IsInPrivateAddressSpaceAndLocalSubnet(endpoint); } @@ -111,46 +114,42 @@ namespace Emby.Server.Implementations.Networking { var endpointFirstPart = endpoint.Split('.')[0]; - string subnet_Match = ""; - if ( - endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("192.168", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase) - ) + if (endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase)) { - foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) - foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) - if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0]) - { - int subnet_Test = 0; - foreach (string part in unicastIPAddressInformation.IPv4Mask.ToString().Split('.')) - { - if (part.Equals("0")) break; - subnet_Test++; - } + var subnets = GetSubnets(endpointFirstPart); - subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray()); - } + foreach (var subnet_Match in subnets) + { + //Logger.Debug("subnet_Match:" + subnet_Match); + + if (endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } } - return endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase); + return false; } - private Dictionary<string, string> _subnetLookup = new Dictionary<string, string>(StringComparer.Ordinal); - private string GetSubnet(string endpointFirstPart) + private Dictionary<string, List<string>> _subnetLookup = new Dictionary<string, List<string>>(StringComparer.Ordinal); + private List<string> GetSubnets(string endpointFirstPart) { - string subnet_Match = ""; + List<string> subnets; lock (_subnetLookup) { - if (_subnetLookup.TryGetValue(endpointFirstPart, out subnet_Match)) + if (_subnetLookup.TryGetValue(endpointFirstPart, out subnets)) { - return subnet_Match; + return subnets; } + subnets = new List<string>(); + foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) + { foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) + { if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0]) { int subnet_Test = 0; @@ -160,16 +159,21 @@ namespace Emby.Server.Implementations.Networking subnet_Test++; } - subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray()); - } + var subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray()); - if (!string.IsNullOrWhiteSpace(subnet_Match)) - { - _subnetLookup[endpointFirstPart] = subnet_Match; + // TODO: Is this check necessary? + if (adapter.OperationalStatus == OperationalStatus.Up) + { + subnets.Add(subnet_Match); + } + } + } } - } - return subnet_Match; + _subnetLookup[endpointFirstPart] = subnets; + + return subnets; + } } private bool Is172AddressPrivate(string endpoint) |
