mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-07 10:14:14 -04:00
Moved all settings across to network.xml
This commit is contained in:
parent
a3f0843ac9
commit
deb4d27857
@ -10,6 +10,7 @@ using MediaBrowser.Common.Extensions;
|
|||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations.Operations;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.AppBase
|
namespace Emby.Server.Implementations.AppBase
|
||||||
@ -268,7 +269,7 @@ namespace Emby.Server.Implementations.AppBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public object GetConfiguration(string key)
|
public object GetConfiguration(string key, Type objectType = null)
|
||||||
{
|
{
|
||||||
return _configurations.GetOrAdd(key, k =>
|
return _configurations.GetOrAdd(key, k =>
|
||||||
{
|
{
|
||||||
@ -277,12 +278,12 @@ namespace Emby.Server.Implementations.AppBase
|
|||||||
var configurationInfo = _configurationStores
|
var configurationInfo = _configurationStores
|
||||||
.FirstOrDefault(i => string.Equals(i.Key, key, StringComparison.OrdinalIgnoreCase));
|
.FirstOrDefault(i => string.Equals(i.Key, key, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
if (configurationInfo == null)
|
if (configurationInfo == null && objectType == null)
|
||||||
{
|
{
|
||||||
throw new ResourceNotFoundException("Configuration with key " + key + " not found.");
|
throw new ResourceNotFoundException("Configuration with key " + key + " not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var configurationType = configurationInfo.ConfigurationType;
|
var configurationType = configurationInfo?.ConfigurationType ?? objectType;
|
||||||
|
|
||||||
lock (_configurationSyncLock)
|
lock (_configurationSyncLock)
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,7 @@ using System.Security.Cryptography.X509Certificates;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml.Serialization;
|
||||||
using Emby.Dlna;
|
using Emby.Dlna;
|
||||||
using Emby.Dlna.Main;
|
using Emby.Dlna.Main;
|
||||||
using Emby.Dlna.Ssdp;
|
using Emby.Dlna.Ssdp;
|
||||||
@ -48,6 +49,8 @@ using Emby.Server.Implementations.SyncPlay;
|
|||||||
using Emby.Server.Implementations.TV;
|
using Emby.Server.Implementations.TV;
|
||||||
using Emby.Server.Implementations.Updates;
|
using Emby.Server.Implementations.Updates;
|
||||||
using Jellyfin.Api.Helpers;
|
using Jellyfin.Api.Helpers;
|
||||||
|
using Jellyfin.Api.Migrations;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using Jellyfin.Networking.Manager;
|
using Jellyfin.Networking.Manager;
|
||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
@ -100,6 +103,7 @@ using MediaBrowser.Providers.Manager;
|
|||||||
using MediaBrowser.Providers.Plugins.TheTvdb;
|
using MediaBrowser.Providers.Plugins.TheTvdb;
|
||||||
using MediaBrowser.Providers.Subtitles;
|
using MediaBrowser.Providers.Subtitles;
|
||||||
using MediaBrowser.XbmcMetadata.Providers;
|
using MediaBrowser.XbmcMetadata.Providers;
|
||||||
|
using Microsoft.AspNetCore.DataProtection.Repositories;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
@ -273,6 +277,7 @@ namespace Emby.Server.Implementations
|
|||||||
ConfigurationManager = new ServerConfigurationManager(ApplicationPaths, LoggerFactory, _xmlSerializer, _fileSystemManager);
|
ConfigurationManager = new ServerConfigurationManager(ApplicationPaths, LoggerFactory, _xmlSerializer, _fileSystemManager);
|
||||||
|
|
||||||
NetManager = new NetworkManager((IServerConfigurationManager)ConfigurationManager, LoggerFactory.CreateLogger<NetworkManager>());
|
NetManager = new NetworkManager((IServerConfigurationManager)ConfigurationManager, LoggerFactory.CreateLogger<NetworkManager>());
|
||||||
|
NetManager.UpdateSettings(GetNetworkConfiguration());
|
||||||
|
|
||||||
Logger = LoggerFactory.CreateLogger<ApplicationHost>();
|
Logger = LoggerFactory.CreateLogger<ApplicationHost>();
|
||||||
|
|
||||||
@ -298,6 +303,21 @@ namespace Emby.Server.Implementations
|
|||||||
ApplicationUserAgent = Name.Replace(' ', '-') + "/" + ApplicationVersionString;
|
ApplicationUserAgent = Name.Replace(' ', '-') + "/" + ApplicationVersionString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private NetworkConfiguration GetNetworkConfiguration()
|
||||||
|
{
|
||||||
|
string path = Path.Combine(ConfigurationManager.CommonApplicationPaths.ConfigurationDirectoryPath, "network.xml");
|
||||||
|
if (!File.Exists(path))
|
||||||
|
{
|
||||||
|
var networkSettings = new NetworkConfiguration();
|
||||||
|
ClassMigrationHelper.CopyProperties(ServerConfigurationManager.Configuration, networkSettings);
|
||||||
|
_xmlSerializer.SerializeToFile(networkSettings, path);
|
||||||
|
|
||||||
|
return networkSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (NetworkConfiguration)ConfigurationManager.GetConfiguration("network", typeof(NetworkConfiguration));
|
||||||
|
}
|
||||||
|
|
||||||
public string ExpandVirtualPath(string path)
|
public string ExpandVirtualPath(string path)
|
||||||
{
|
{
|
||||||
var appPaths = ApplicationPaths;
|
var appPaths = ApplicationPaths;
|
||||||
@ -480,14 +500,15 @@ namespace Emby.Server.Implementations
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
HttpPort = ServerConfigurationManager.Configuration.HttpServerPortNumber;
|
var networkConfiguration = ServerConfigurationManager.GetNetworkConfiguration();
|
||||||
HttpsPort = ServerConfigurationManager.Configuration.HttpsPortNumber;
|
HttpPort = networkConfiguration.HttpServerPortNumber;
|
||||||
|
HttpsPort = networkConfiguration.HttpsPortNumber;
|
||||||
|
|
||||||
// Safeguard against invalid configuration
|
// Safeguard against invalid configuration
|
||||||
if (HttpPort == HttpsPort)
|
if (HttpPort == HttpsPort)
|
||||||
{
|
{
|
||||||
HttpPort = ServerConfiguration.DefaultHttpPort;
|
HttpPort = NetworkConfiguration.DefaultHttpPort;
|
||||||
HttpsPort = ServerConfiguration.DefaultHttpsPort;
|
HttpsPort = NetworkConfiguration.DefaultHttpsPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Plugins != null)
|
if (Plugins != null)
|
||||||
@ -929,9 +950,10 @@ namespace Emby.Server.Implementations
|
|||||||
// Don't do anything if these haven't been set yet
|
// Don't do anything if these haven't been set yet
|
||||||
if (HttpPort != 0 && HttpsPort != 0)
|
if (HttpPort != 0 && HttpsPort != 0)
|
||||||
{
|
{
|
||||||
|
var networkConfiguration = ServerConfigurationManager.GetNetworkConfiguration();
|
||||||
// Need to restart if ports have changed
|
// Need to restart if ports have changed
|
||||||
if (ServerConfigurationManager.Configuration.HttpServerPortNumber != HttpPort ||
|
if (networkConfiguration.HttpServerPortNumber != HttpPort ||
|
||||||
ServerConfigurationManager.Configuration.HttpsPortNumber != HttpsPort)
|
networkConfiguration.HttpsPortNumber != HttpsPort)
|
||||||
{
|
{
|
||||||
if (ServerConfigurationManager.Configuration.IsPortAuthorized)
|
if (ServerConfigurationManager.Configuration.IsPortAuthorized)
|
||||||
{
|
{
|
||||||
@ -1253,7 +1275,7 @@ namespace Emby.Server.Implementations
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool ListenWithHttps => Certificate != null && ServerConfigurationManager.Configuration.EnableHttps;
|
public bool ListenWithHttps => Certificate != null && ServerConfigurationManager.GetNetworkConfiguration().EnableHttps;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public string GetSmartApiUrl(IPAddress ipAddress, int? port = null)
|
public string GetSmartApiUrl(IPAddress ipAddress, int? port = null)
|
||||||
@ -1337,7 +1359,7 @@ namespace Emby.Server.Implementations
|
|||||||
Scheme = scheme ?? (ListenWithHttps ? Uri.UriSchemeHttps : Uri.UriSchemeHttp),
|
Scheme = scheme ?? (ListenWithHttps ? Uri.UriSchemeHttps : Uri.UriSchemeHttp),
|
||||||
Host = host,
|
Host = host,
|
||||||
Port = port ?? (ListenWithHttps ? HttpsPort : HttpPort),
|
Port = port ?? (ListenWithHttps ? HttpsPort : HttpPort),
|
||||||
Path = ServerConfigurationManager.Configuration.BaseUrl
|
Path = ServerConfigurationManager.GetNetworkConfiguration().BaseUrl
|
||||||
}.ToString().TrimEnd('/');
|
}.ToString().TrimEnd('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ using System.Text;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Jellyfin.Data.Events;
|
using Jellyfin.Data.Events;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
@ -56,7 +57,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
private string GetConfigIdentifier()
|
private string GetConfigIdentifier()
|
||||||
{
|
{
|
||||||
const char Separator = '|';
|
const char Separator = '|';
|
||||||
var config = _config.Configuration;
|
var config = _config.GetNetworkConfiguration();
|
||||||
|
|
||||||
return new StringBuilder(32)
|
return new StringBuilder(32)
|
||||||
.Append(config.EnableUPnP).Append(Separator)
|
.Append(config.EnableUPnP).Append(Separator)
|
||||||
@ -93,7 +94,8 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
if (!_config.Configuration.EnableUPnP || !_config.Configuration.EnableRemoteAccess)
|
var config = _config.GetNetworkConfiguration();
|
||||||
|
if (!config.EnableUPnP || !config.EnableRemoteAccess)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -156,11 +158,12 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
|
|
||||||
private IEnumerable<Task> CreatePortMaps(INatDevice device)
|
private IEnumerable<Task> CreatePortMaps(INatDevice device)
|
||||||
{
|
{
|
||||||
yield return CreatePortMap(device, _appHost.HttpPort, _config.Configuration.PublicPort);
|
var config = _config.GetNetworkConfiguration();
|
||||||
|
yield return CreatePortMap(device, _appHost.HttpPort, config.PublicPort);
|
||||||
|
|
||||||
if (_appHost.ListenWithHttps)
|
if (_appHost.ListenWithHttps)
|
||||||
{
|
{
|
||||||
yield return CreatePortMap(device, _appHost.HttpsPort, _config.Configuration.PublicHttpsPort);
|
yield return CreatePortMap(device, _appHost.HttpsPort, config.PublicHttpsPort);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,9 @@ using System.Text.Json;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Jellyfin.Api.Attributes;
|
using Jellyfin.Api.Attributes;
|
||||||
using Jellyfin.Api.Constants;
|
using Jellyfin.Api.Constants;
|
||||||
|
using Jellyfin.Api.Migrations;
|
||||||
using Jellyfin.Api.Models.ConfigurationDtos;
|
using Jellyfin.Api.Models.ConfigurationDtos;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Common.Json;
|
using MediaBrowser.Common.Json;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.MediaEncoding;
|
using MediaBrowser.Controller.MediaEncoding;
|
||||||
@ -49,6 +51,10 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
public ActionResult<ServerConfiguration> GetConfiguration()
|
public ActionResult<ServerConfiguration> GetConfiguration()
|
||||||
{
|
{
|
||||||
|
// TODO: Temp workaround until the web can be changed.
|
||||||
|
var net = _configurationManager.GetNetworkConfiguration();
|
||||||
|
ClassMigrationHelper.CopyProperties(net, _configurationManager.Configuration);
|
||||||
|
|
||||||
return _configurationManager.Configuration;
|
return _configurationManager.Configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +70,12 @@ namespace Jellyfin.Api.Controllers
|
|||||||
public ActionResult UpdateConfiguration([FromBody, Required] ServerConfiguration configuration)
|
public ActionResult UpdateConfiguration([FromBody, Required] ServerConfiguration configuration)
|
||||||
{
|
{
|
||||||
_configurationManager.ReplaceConfiguration(configuration);
|
_configurationManager.ReplaceConfiguration(configuration);
|
||||||
|
|
||||||
|
// TODO: Temp workaround until the web can be changed.
|
||||||
|
var network = _configurationManager.GetNetworkConfiguration();
|
||||||
|
ClassMigrationHelper.CopyProperties(configuration, network);
|
||||||
|
_configurationManager.SaveConfiguration("Network", network);
|
||||||
|
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Jellyfin.Api.Constants;
|
using Jellyfin.Api.Constants;
|
||||||
using Jellyfin.Api.Models.StartupDtos;
|
using Jellyfin.Api.Models.StartupDtos;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@ -89,9 +90,10 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||||
public ActionResult SetRemoteAccess([FromBody, Required] StartupRemoteAccessDto startupRemoteAccessDto)
|
public ActionResult SetRemoteAccess([FromBody, Required] StartupRemoteAccessDto startupRemoteAccessDto)
|
||||||
{
|
{
|
||||||
_config.Configuration.EnableRemoteAccess = startupRemoteAccessDto.EnableRemoteAccess;
|
NetworkConfiguration settings = _config.GetNetworkConfiguration();
|
||||||
_config.Configuration.EnableUPnP = startupRemoteAccessDto.EnableAutomaticPortMapping;
|
settings.EnableRemoteAccess = startupRemoteAccessDto.EnableRemoteAccess;
|
||||||
_config.SaveConfiguration();
|
settings.EnableUPnP = startupRemoteAccessDto.EnableAutomaticPortMapping;
|
||||||
|
_config.SaveConfiguration("network", settings);
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
70
Jellyfin.Api/Helpers/ClassMigrationHelper.cs
Normal file
70
Jellyfin.Api/Helpers/ClassMigrationHelper.cs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Jellyfin.Api.Migrations
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A static class for reflection type functions. Temporary until web changed.
|
||||||
|
/// </summary>
|
||||||
|
public static class ClassMigrationHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Extension for 'Object' that copies the properties to a destination object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source">The source.</param>
|
||||||
|
/// <param name="destination">The destination.</param>
|
||||||
|
public static void CopyProperties(this object source, object destination)
|
||||||
|
{
|
||||||
|
// If any this null throw an exception
|
||||||
|
if (source == null || destination == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Source or/and Destination Objects are null");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getting the Types of the objects
|
||||||
|
Type typeDest = destination.GetType();
|
||||||
|
Type typeSrc = source.GetType();
|
||||||
|
|
||||||
|
// Iterate the Properties of the source instance and populate them from their desination counterparts.
|
||||||
|
PropertyInfo[] srcProps = typeSrc.GetProperties();
|
||||||
|
foreach (PropertyInfo srcProp in srcProps)
|
||||||
|
{
|
||||||
|
if (!srcProp.CanRead)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var targetProperty = typeDest.GetProperty(srcProp.Name);
|
||||||
|
if (targetProperty == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!targetProperty.CanWrite)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var obj = targetProperty.GetSetMethod(true);
|
||||||
|
if (obj != null && obj.IsPrivate)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var target = targetProperty.GetSetMethod();
|
||||||
|
if (target != null && (target.Attributes & MethodAttributes.Static) != 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!targetProperty.PropertyType.IsAssignableFrom(srcProp.PropertyType))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Passed all tests, lets set the value
|
||||||
|
targetProperty.SetValue(destination, srcProp.GetValue(source, null), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using Jellyfin.Server.Middleware;
|
using Jellyfin.Server.Middleware;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
@ -24,8 +25,8 @@ namespace Jellyfin.Server.Extensions
|
|||||||
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
|
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
|
||||||
// specifying the Swagger JSON endpoint.
|
// specifying the Swagger JSON endpoint.
|
||||||
|
|
||||||
var baseUrl = serverConfigurationManager.Configuration.BaseUrl.Trim('/');
|
var baseUrl = serverConfigurationManager.GetNetworkConfiguration().BaseUrl.Trim('/');
|
||||||
var apiDocBaseUrl = serverConfigurationManager.Configuration.BaseUrl;
|
var apiDocBaseUrl = serverConfigurationManager.GetNetworkConfiguration().BaseUrl;
|
||||||
if (!string.IsNullOrEmpty(baseUrl))
|
if (!string.IsNullOrEmpty(baseUrl))
|
||||||
{
|
{
|
||||||
baseUrl += '/';
|
baseUrl += '/';
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
@ -42,7 +43,7 @@ namespace Jellyfin.Server.Middleware
|
|||||||
public async Task Invoke(HttpContext httpContext, IServerConfigurationManager serverConfigurationManager)
|
public async Task Invoke(HttpContext httpContext, IServerConfigurationManager serverConfigurationManager)
|
||||||
{
|
{
|
||||||
var localPath = httpContext.Request.Path.ToString();
|
var localPath = httpContext.Request.Path.ToString();
|
||||||
var baseUrlPrefix = serverConfigurationManager.Configuration.BaseUrl;
|
var baseUrlPrefix = serverConfigurationManager.GetNetworkConfiguration().BaseUrl;
|
||||||
|
|
||||||
if (string.Equals(localPath, baseUrlPrefix + "/", StringComparison.OrdinalIgnoreCase)
|
if (string.Equals(localPath, baseUrlPrefix + "/", StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(localPath, baseUrlPrefix, StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(localPath, baseUrlPrefix, StringComparison.OrdinalIgnoreCase)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
@ -42,7 +43,7 @@ namespace Jellyfin.Server.Middleware
|
|||||||
|
|
||||||
var remoteIp = httpContext.Connection.RemoteIpAddress ?? IPAddress.Loopback;
|
var remoteIp = httpContext.Connection.RemoteIpAddress ?? IPAddress.Loopback;
|
||||||
|
|
||||||
if (serverConfigurationManager.Configuration.EnableRemoteAccess)
|
if (serverConfigurationManager.GetNetworkConfiguration().EnableRemoteAccess)
|
||||||
{
|
{
|
||||||
// Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely.
|
// Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely.
|
||||||
// If left blank, all remote addresses will be allowed.
|
// If left blank, all remote addresses will be allowed.
|
||||||
@ -52,7 +53,7 @@ namespace Jellyfin.Server.Middleware
|
|||||||
{
|
{
|
||||||
// remoteAddressFilter is a whitelist or blacklist.
|
// remoteAddressFilter is a whitelist or blacklist.
|
||||||
bool isListed = remoteAddressFilter.Contains(remoteIp);
|
bool isListed = remoteAddressFilter.Contains(remoteIp);
|
||||||
if (!serverConfigurationManager.Configuration.IsRemoteIPFilterBlacklist)
|
if (!serverConfigurationManager.GetNetworkConfiguration().IsRemoteIPFilterBlacklist)
|
||||||
{
|
{
|
||||||
// Black list, so flip over.
|
// Black list, so flip over.
|
||||||
isListed = !isListed;
|
isListed = !isListed;
|
||||||
|
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
@ -37,7 +38,7 @@ namespace Jellyfin.Server.Middleware
|
|||||||
{
|
{
|
||||||
var host = httpContext.Connection.RemoteIpAddress ?? IPAddress.Loopback;
|
var host = httpContext.Connection.RemoteIpAddress ?? IPAddress.Loopback;
|
||||||
|
|
||||||
if (!networkManager.IsInLocalNetwork(host) && !serverConfigurationManager.Configuration.EnableRemoteAccess)
|
if (!networkManager.IsInLocalNetwork(host) && !serverConfigurationManager.GetNetworkConfiguration().EnableRemoteAccess)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using Jellyfin.Api.TypeConverters;
|
using Jellyfin.Api.TypeConverters;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
using Jellyfin.Server.Extensions;
|
using Jellyfin.Server.Extensions;
|
||||||
using Jellyfin.Server.Implementations;
|
using Jellyfin.Server.Implementations;
|
||||||
using Jellyfin.Server.Middleware;
|
using Jellyfin.Server.Middleware;
|
||||||
@ -52,7 +53,7 @@ namespace Jellyfin.Server
|
|||||||
{
|
{
|
||||||
options.HttpsPort = _serverApplicationHost.HttpsPort;
|
options.HttpsPort = _serverApplicationHost.HttpsPort;
|
||||||
});
|
});
|
||||||
services.AddJellyfinApi(_serverApplicationHost.GetApiPluginAssemblies(), _serverConfigurationManager.Configuration.KnownProxies);
|
services.AddJellyfinApi(_serverApplicationHost.GetApiPluginAssemblies(), _serverConfigurationManager.GetNetworkConfiguration().KnownProxies);
|
||||||
|
|
||||||
services.AddJellyfinApiSwagger();
|
services.AddJellyfinApiSwagger();
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ namespace Jellyfin.Server
|
|||||||
app.UseBaseUrlRedirection();
|
app.UseBaseUrlRedirection();
|
||||||
|
|
||||||
// Wrap rest of configuration so everything only listens on BaseUrl.
|
// Wrap rest of configuration so everything only listens on BaseUrl.
|
||||||
app.Map(_serverConfigurationManager.Configuration.BaseUrl, mainApp =>
|
app.Map(_serverConfigurationManager.GetNetworkConfiguration().BaseUrl, mainApp =>
|
||||||
{
|
{
|
||||||
if (env.IsDevelopment())
|
if (env.IsDevelopment())
|
||||||
{
|
{
|
||||||
|
@ -50,8 +50,9 @@ namespace MediaBrowser.Common.Configuration
|
|||||||
/// Gets the configuration.
|
/// Gets the configuration.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="key">The key.</param>
|
/// <param name="key">The key.</param>
|
||||||
|
/// <param name="objectType">Optional parameter containing the key object to create, if it hasn't been registered.</param>
|
||||||
/// <returns>System.Object.</returns>
|
/// <returns>System.Object.</returns>
|
||||||
object GetConfiguration(string key);
|
object GetConfiguration(string key, Type objectType = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the type of the configuration.
|
/// Gets the type of the configuration.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user