commit
b51ed9621f
|
@ -799,7 +799,7 @@ namespace Emby.Server.Implementations
|
||||||
|
|
||||||
protected abstract IConnectManager CreateConnectManager();
|
protected abstract IConnectManager CreateConnectManager();
|
||||||
protected abstract ISyncManager CreateSyncManager();
|
protected abstract ISyncManager CreateSyncManager();
|
||||||
|
|
||||||
protected virtual IHttpClient CreateHttpClient()
|
protected virtual IHttpClient CreateHttpClient()
|
||||||
{
|
{
|
||||||
return new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent);
|
return new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent);
|
||||||
|
@ -953,6 +953,7 @@ namespace Emby.Server.Implementations
|
||||||
var deviceRepo = new SqliteDeviceRepository(LogManager.GetLogger("DeviceManager"), ServerConfigurationManager, FileSystemManager, JsonSerializer);
|
var deviceRepo = new SqliteDeviceRepository(LogManager.GetLogger("DeviceManager"), ServerConfigurationManager, FileSystemManager, JsonSerializer);
|
||||||
deviceRepo.Initialize();
|
deviceRepo.Initialize();
|
||||||
DeviceManager = new DeviceManager(deviceRepo, UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
|
DeviceManager = new DeviceManager(deviceRepo, UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
|
||||||
|
RegisterSingleInstance<IDeviceRepository>(deviceRepo);
|
||||||
RegisterSingleInstance(DeviceManager);
|
RegisterSingleInstance(DeviceManager);
|
||||||
|
|
||||||
var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
|
var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
|
||||||
|
|
|
@ -709,6 +709,9 @@ namespace Emby.Server.Implementations.Library
|
||||||
|
|
||||||
var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath));
|
var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath));
|
||||||
|
|
||||||
|
// In case program data folder was moved
|
||||||
|
rootFolder.Path = rootFolderPath;
|
||||||
|
|
||||||
// Add in the plug-in folders
|
// Add in the plug-in folders
|
||||||
foreach (var child in PluginFolderCreators)
|
foreach (var child in PluginFolderCreators)
|
||||||
{
|
{
|
||||||
|
@ -771,6 +774,9 @@ namespace Emby.Server.Implementations.Library
|
||||||
tmpItem = (UserRootFolder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath));
|
tmpItem = (UserRootFolder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In case program data folder was moved
|
||||||
|
tmpItem.Path = userRootPath;
|
||||||
|
|
||||||
_userRootFolder = tmpItem;
|
_userRootFolder = tmpItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,8 +196,18 @@ namespace Emby.Server.Implementations.Net
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
// seeing occasional exceptions thrown on qnap
|
||||||
|
// System.Net.Sockets.SocketException (0x80004005): Protocol not available
|
||||||
retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||||
|
}
|
||||||
|
catch (SocketException)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
|
||||||
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
|
||||||
|
|
||||||
var localIp = IPAddress.Any;
|
var localIp = IPAddress.Any;
|
||||||
|
|
|
@ -59,7 +59,13 @@ namespace Emby.Server.Implementations.Networking
|
||||||
list.AddRange(GetLocalIpAddressesFallback().Result);
|
list.AddRange(GetLocalIpAddressesFallback().Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list.Where(FilterIpAddress).DistinctBy(i => i.ToString());
|
var listClone = list.ToList();
|
||||||
|
|
||||||
|
return list
|
||||||
|
.OrderBy(i => i.AddressFamily == AddressFamily.InterNetwork ? 0 : 1)
|
||||||
|
.ThenBy(i => listClone.IndexOf(i))
|
||||||
|
.Where(FilterIpAddress)
|
||||||
|
.DistinctBy(i => i.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool FilterIpAddress(IPAddress address)
|
private bool FilterIpAddress(IPAddress address)
|
||||||
|
@ -112,10 +118,10 @@ namespace Emby.Server.Implementations.Networking
|
||||||
|
|
||||||
public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint)
|
public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint)
|
||||||
{
|
{
|
||||||
var endpointFirstPart = endpoint.Split('.')[0];
|
|
||||||
|
|
||||||
if (endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase))
|
if (endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
var endpointFirstPart = endpoint.Split('.')[0];
|
||||||
|
|
||||||
var subnets = GetSubnets(endpointFirstPart);
|
var subnets = GetSubnets(endpointFirstPart);
|
||||||
|
|
||||||
foreach (var subnet_Match in subnets)
|
foreach (var subnet_Match in subnets)
|
||||||
|
@ -217,7 +223,7 @@ namespace Emby.Server.Implementations.Networking
|
||||||
}
|
}
|
||||||
else if (address.AddressFamily == AddressFamily.InterNetworkV6)
|
else if (address.AddressFamily == AddressFamily.InterNetworkV6)
|
||||||
{
|
{
|
||||||
lengthMatch = 10;
|
lengthMatch = 9;
|
||||||
if (IsInPrivateAddressSpace(endpoint))
|
if (IsInPrivateAddressSpace(endpoint))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -317,7 +323,7 @@ namespace Emby.Server.Implementations.Networking
|
||||||
return ipProperties.UnicastAddresses
|
return ipProperties.UnicastAddresses
|
||||||
//.Where(i => i.IsDnsEligible)
|
//.Where(i => i.IsDnsEligible)
|
||||||
.Select(i => i.Address)
|
.Select(i => i.Address)
|
||||||
.Where(i => i.AddressFamily == AddressFamily.InterNetwork)
|
.Where(i => i.AddressFamily == AddressFamily.InterNetwork || i.AddressFamily == AddressFamily.InterNetworkV6)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -337,7 +343,7 @@ namespace Emby.Server.Implementations.Networking
|
||||||
// Reverse them because the last one is usually the correct one
|
// Reverse them because the last one is usually the correct one
|
||||||
// It's not fool-proof so ultimately the consumer will have to examine them and decide
|
// It's not fool-proof so ultimately the consumer will have to examine them and decide
|
||||||
return host.AddressList
|
return host.AddressList
|
||||||
.Where(i => i.AddressFamily == AddressFamily.InterNetwork)
|
.Where(i => i.AddressFamily == AddressFamily.InterNetwork || i.AddressFamily == AddressFamily.InterNetworkV6)
|
||||||
.Reverse();
|
.Reverse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ namespace MediaBrowser.Model.Configuration
|
||||||
|
|
||||||
SaveImagePathsInNfo = true;
|
SaveImagePathsInNfo = true;
|
||||||
EnablePathSubstitution = true;
|
EnablePathSubstitution = true;
|
||||||
EnableExtraThumbsDuplication = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("3.2.36.6")]
|
[assembly: AssemblyVersion("3.2.36.7")]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user