mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-15 10:43:30 +01:00
Replace ISocket and UdpSocket, fix DLNA and SSDP binding and discovery
This commit is contained in:
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using MediaBrowser.Model.Net;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace MediaBrowser.Common.Net
|
||||
@@ -70,27 +71,28 @@ namespace MediaBrowser.Common.Net
|
||||
/// <param name="source">Source of the request.</param>
|
||||
/// <param name="port">Optional port returned, if it's part of an override.</param>
|
||||
/// <returns>IP address to use, or loopback address if all else fails.</returns>
|
||||
string GetBindInterface(HttpRequest source, out int? port);
|
||||
string GetBindAddress(HttpRequest source, out int? port);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the bind address to use in system URLs. (Server Discovery, PlayTo, LiveTV, SystemInfo)
|
||||
/// If no bind addresses are specified, an internal interface address is selected.
|
||||
/// (See <see cref="GetBindAddress(IPAddress, out int?)"/>.
|
||||
/// (See <see cref="GetBindAddress(IPAddress, out int?, bool)"/>.
|
||||
/// </summary>
|
||||
/// <param name="source">IP address of the request.</param>
|
||||
/// <param name="port">Optional port returned, if it's part of an override.</param>
|
||||
/// <param name="skipOverrides">Optional boolean denoting if published server overrides should be ignored. Defaults to false.</param>
|
||||
/// <returns>IP address to use, or loopback address if all else fails.</returns>
|
||||
string GetBindAddress(IPAddress source, out int? port);
|
||||
string GetBindAddress(IPAddress source, out int? port, bool skipOverrides = false);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the bind address to use in system URLs. (Server Discovery, PlayTo, LiveTV, SystemInfo)
|
||||
/// If no bind addresses are specified, an internal interface address is selected.
|
||||
/// (See <see cref="GetBindAddress(IPAddress, out int?)"/>.
|
||||
/// (See <see cref="GetBindAddress(IPAddress, out int?, bool)"/>.
|
||||
/// </summary>
|
||||
/// <param name="source">Source of the request.</param>
|
||||
/// <param name="port">Optional port returned, if it's part of an override.</param>
|
||||
/// <returns>IP address to use, or loopback address if all else fails.</returns>
|
||||
string GetBindInterface(string source, out int? port);
|
||||
string GetBindAddress(string source, out int? port);
|
||||
|
||||
/// <summary>
|
||||
/// Get a list of all the MAC addresses associated with active interfaces.
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
|
||||
namespace MediaBrowser.Common.Net
|
||||
{
|
||||
/// <summary>
|
||||
/// Base network object class.
|
||||
/// </summary>
|
||||
public class IPData
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IPData"/> class.
|
||||
/// </summary>
|
||||
/// <param name="address">The <see cref="IPAddress"/>.</param>
|
||||
/// <param name="subnet">The <see cref="IPNetwork"/>.</param>
|
||||
/// <param name="name">The interface name.</param>
|
||||
public IPData(IPAddress address, IPNetwork? subnet, string name)
|
||||
{
|
||||
Address = address;
|
||||
Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128));
|
||||
Name = name;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IPData"/> class.
|
||||
/// </summary>
|
||||
/// <param name="address">The <see cref="IPAddress"/>.</param>
|
||||
/// <param name="subnet">The <see cref="IPNetwork"/>.</param>
|
||||
public IPData(IPAddress address, IPNetwork? subnet)
|
||||
: this(address, subnet, string.Empty)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the object's IP address.
|
||||
/// </summary>
|
||||
public IPAddress Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the object's IP address.
|
||||
/// </summary>
|
||||
public IPNetwork Subnet { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the interface index.
|
||||
/// </summary>
|
||||
public int Index { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the interface name.
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the AddressFamily of the object.
|
||||
/// </summary>
|
||||
public AddressFamily AddressFamily
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Address.Equals(IPAddress.None))
|
||||
{
|
||||
return Subnet.Prefix.AddressFamily.Equals(IPAddress.None)
|
||||
? AddressFamily.Unspecified
|
||||
: Subnet.Prefix.AddressFamily;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Address.AddressFamily;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user