aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Networking/Manager/NetworkManager.cs
diff options
context:
space:
mode:
authorGreenback <jimcartlidge@yahoo.co.uk>2020-10-31 18:21:46 +0000
committerGreenback <jimcartlidge@yahoo.co.uk>2020-10-31 18:21:46 +0000
commit83af636c610744903b709117f7f2a7b7e34da1f0 (patch)
treea4aef3e5a420b333e575ee3a8f8ff599d5c0b00a /Jellyfin.Networking/Manager/NetworkManager.cs
parentc25ec72864768633417e06e6e34b1a2af7cc0df0 (diff)
Updated with new NetManager
Diffstat (limited to 'Jellyfin.Networking/Manager/NetworkManager.cs')
-rw-r--r--Jellyfin.Networking/Manager/NetworkManager.cs49
1 files changed, 32 insertions, 17 deletions
diff --git a/Jellyfin.Networking/Manager/NetworkManager.cs b/Jellyfin.Networking/Manager/NetworkManager.cs
index 616774d04..76ac02d79 100644
--- a/Jellyfin.Networking/Manager/NetworkManager.cs
+++ b/Jellyfin.Networking/Manager/NetworkManager.cs
@@ -13,8 +13,7 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Net;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
-using NetworkCollection;
-using NetworkCollection.Udp;
+using NetCollection = System.Collections.ObjectModel.Collection<MediaBrowser.Common.Net.IPObject>;
namespace Jellyfin.Networking.Manager
{
@@ -154,6 +153,22 @@ namespace Jellyfin.Networking.Manager
/// </summary>
public Dictionary<IPNetAddress, string> PublishedServerUrls => _publishedServerUrls;
+ /// <summary>
+ /// Creates a new network collection.
+ /// </summary>
+ /// <param name="source">Items to assign the collection, or null.</param>
+ /// <returns>The collection created.</returns>
+ public static NetCollection CreateCollection(IEnumerable<IPObject>? source)
+ {
+ var result = new NetCollection();
+ if (source != null)
+ {
+ return result.AddRange(source);
+ }
+
+ return result;
+ }
+
/// <inheritdoc/>
public void Dispose()
{
@@ -162,10 +177,10 @@ namespace Jellyfin.Networking.Manager
}
/// <inheritdoc/>
- public List<PhysicalAddress> GetMacAddresses()
+ public IReadOnlyCollection<PhysicalAddress> GetMacAddresses()
{
// Populated in construction - so always has values.
- return _macAddresses.ToList();
+ return _macAddresses.AsReadOnly();
}
/// <inheritdoc/>
@@ -187,12 +202,12 @@ namespace Jellyfin.Networking.Manager
NetCollection nc = new NetCollection();
if (IsIP4Enabled)
{
- nc.Add(IPAddress.Loopback);
+ nc.AddItem(IPAddress.Loopback);
}
if (IsIP6Enabled)
{
- nc.Add(IPAddress.IPv6Loopback);
+ nc.AddItem(IPAddress.IPv6Loopback);
}
return nc;
@@ -276,12 +291,12 @@ namespace Jellyfin.Networking.Manager
if (IsIP4Enabled)
{
- result.Add(IPAddress.Any);
+ result.AddItem(IPAddress.Any);
}
if (IsIP6Enabled)
{
- result.Add(IPAddress.IPv6Any);
+ result.AddItem(IPAddress.IPv6Any);
}
return result;
@@ -375,7 +390,7 @@ namespace Jellyfin.Networking.Manager
}
// Get the first LAN interface address that isn't a loopback.
- var interfaces = new NetCollection(_interfaceAddresses
+ var interfaces = CreateCollection(_interfaceAddresses
.Exclude(_bindExclusions)
.Where(p => IsInLocalNetwork(p))
.OrderBy(p => p.Tag));
@@ -418,11 +433,11 @@ namespace Jellyfin.Networking.Manager
if (_bindExclusions.Count > 0)
{
// Return all the internal interfaces except the ones excluded.
- return new NetCollection(_internalInterfaces.Where(p => !_bindExclusions.Contains(p)));
+ return CreateCollection(_internalInterfaces.Where(p => !_bindExclusions.Contains(p)));
}
// No bind address, so return all internal interfaces.
- return new NetCollection(_internalInterfaces.Where(p => !p.IsLoopback()));
+ return CreateCollection(_internalInterfaces.Where(p => !p.IsLoopback()));
}
return new NetCollection(_bindAddresses);
@@ -572,7 +587,7 @@ namespace Jellyfin.Networking.Manager
}
TrustAllIP6Interfaces = config.TrustAllIP6Interfaces;
- UdpHelper.EnableMultiSocketBinding = config.EnableMultiSocketBinding;
+ // UdpHelper.EnableMultiSocketBinding = config.EnableMultiSocketBinding;
if (string.IsNullOrEmpty(MockNetworkSettings))
{
@@ -941,7 +956,7 @@ namespace Jellyfin.Networking.Manager
{
_logger.LogDebug("Using LAN interface addresses as user provided no LAN details.");
// Internal interfaces must be private and not excluded.
- _internalInterfaces = new NetCollection(_interfaceAddresses.Where(i => IsPrivateAddressRange(i) && !_excludedSubnets.Contains(i)));
+ _internalInterfaces = CreateCollection(_interfaceAddresses.Where(i => IsPrivateAddressRange(i) && !_excludedSubnets.Contains(i)));
// Subnets are the same as the calculated internal interface.
_lanSubnets = new NetCollection();
@@ -976,7 +991,7 @@ namespace Jellyfin.Networking.Manager
}
// Internal interfaces must be private, not excluded and part of the LocalNetworkSubnet.
- _internalInterfaces = new NetCollection(_interfaceAddresses.Where(i => IsInLocalNetwork(i) && !_excludedSubnets.Contains(i) && _lanSubnets.Contains(i)));
+ _internalInterfaces = CreateCollection(_interfaceAddresses.Where(i => IsInLocalNetwork(i) && !_excludedSubnets.Contains(i) && _lanSubnets.Contains(i)));
}
_logger.LogInformation("Defined LAN addresses : {0}", _lanSubnets);
@@ -1082,7 +1097,7 @@ namespace Jellyfin.Networking.Manager
IPHost host = new IPHost(Dns.GetHostName());
foreach (var a in host.GetAddresses())
{
- _interfaceAddresses.Add(a);
+ _interfaceAddresses.AddItem(a);
}
if (_interfaceAddresses.Count == 0)
@@ -1189,7 +1204,7 @@ namespace Jellyfin.Networking.Manager
if (isExternal)
{
// Find all external bind addresses. Store the default gateway, but check to see if there is a better match first.
- bindResult = new NetCollection(nc
+ bindResult = CreateCollection(nc
.Where(p => !IsInLocalNetwork(p))
.OrderBy(p => p.Tag));
defaultGateway = bindResult.FirstOrDefault()?.Address;
@@ -1246,7 +1261,7 @@ namespace Jellyfin.Networking.Manager
{
result = string.Empty;
// Get the first WAN interface address that isn't a loopback.
- var extResult = new NetCollection(_interfaceAddresses
+ var extResult = CreateCollection(_interfaceAddresses
.Exclude(_bindExclusions)
.Where(p => !IsInLocalNetwork(p))
.OrderBy(p => p.Tag));