mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-19 17:32:38 +01:00
New: Optionally use Environment Variables for settings in config.xml (#9985)
Co-authored-by: sillock1 <jprest97@gmail.com>
This commit is contained in:
parent
3a6d603a9e
commit
7f03a916f1
@ -1,10 +1,12 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Authentication;
|
using NzbDrone.Core.Authentication;
|
||||||
using NzbDrone.Core.Configuration;
|
using NzbDrone.Core.Configuration;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
@ -43,6 +45,26 @@ protected void WithMockConfigFile(string configFile)
|
|||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(v => v.WriteAllText(configFile, It.IsAny<string>()))
|
.Setup(v => v.WriteAllText(configFile, It.IsAny<string>()))
|
||||||
.Callback<string, string>((p, t) => _configFileContents = t);
|
.Callback<string, string>((p, t) => _configFileContents = t);
|
||||||
|
|
||||||
|
Mocker.GetMock<IOptions<AuthOptions>>()
|
||||||
|
.Setup(v => v.Value)
|
||||||
|
.Returns(new AuthOptions());
|
||||||
|
|
||||||
|
Mocker.GetMock<IOptions<AppOptions>>()
|
||||||
|
.Setup(v => v.Value)
|
||||||
|
.Returns(new AppOptions());
|
||||||
|
|
||||||
|
Mocker.GetMock<IOptions<ServerOptions>>()
|
||||||
|
.Setup(v => v.Value)
|
||||||
|
.Returns(new ServerOptions());
|
||||||
|
|
||||||
|
Mocker.GetMock<IOptions<LogOptions>>()
|
||||||
|
.Setup(v => v.Value)
|
||||||
|
.Returns(new LogOptions());
|
||||||
|
|
||||||
|
Mocker.GetMock<IOptions<UpdateOptions>>()
|
||||||
|
.Setup(v => v.Value)
|
||||||
|
.Returns(new UpdateOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
using NzbDrone.Common.Composition.Extensions;
|
using NzbDrone.Common.Composition.Extensions;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Instrumentation.Extensions;
|
using NzbDrone.Common.Instrumentation.Extensions;
|
||||||
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
using NzbDrone.Core.Datastore.Extensions;
|
using NzbDrone.Core.Datastore.Extensions;
|
||||||
using NzbDrone.Core.Lifecycle;
|
using NzbDrone.Core.Lifecycle;
|
||||||
@ -33,6 +34,11 @@ public void event_handlers_should_be_unique()
|
|||||||
|
|
||||||
container.RegisterInstance(new Mock<IHostLifetime>().Object);
|
container.RegisterInstance(new Mock<IHostLifetime>().Object);
|
||||||
container.RegisterInstance(new Mock<IOptions<PostgresOptions>>().Object);
|
container.RegisterInstance(new Mock<IOptions<PostgresOptions>>().Object);
|
||||||
|
container.RegisterInstance(new Mock<IOptions<AppOptions>>().Object);
|
||||||
|
container.RegisterInstance(new Mock<IOptions<AuthOptions>>().Object);
|
||||||
|
container.RegisterInstance(new Mock<IOptions<ServerOptions>>().Object);
|
||||||
|
container.RegisterInstance(new Mock<IOptions<LogOptions>>().Object);
|
||||||
|
container.RegisterInstance(new Mock<IOptions<UpdateOptions>>().Object);
|
||||||
|
|
||||||
var serviceProvider = container.GetServiceProvider();
|
var serviceProvider = container.GetServiceProvider();
|
||||||
|
|
||||||
|
8
src/NzbDrone.Common/Options/AppOptions.cs
Normal file
8
src/NzbDrone.Common/Options/AppOptions.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace NzbDrone.Common.Options;
|
||||||
|
|
||||||
|
public class AppOptions
|
||||||
|
{
|
||||||
|
public string InstanceName { get; set; }
|
||||||
|
public string Theme { get; set; }
|
||||||
|
public bool? LaunchBrowser { get; set; }
|
||||||
|
}
|
9
src/NzbDrone.Common/Options/AuthOptions.cs
Normal file
9
src/NzbDrone.Common/Options/AuthOptions.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace NzbDrone.Common.Options;
|
||||||
|
|
||||||
|
public class AuthOptions
|
||||||
|
{
|
||||||
|
public string ApiKey { get; set; }
|
||||||
|
public bool? Enabled { get; set; }
|
||||||
|
public string Method { get; set; }
|
||||||
|
public string Required { get; set; }
|
||||||
|
}
|
14
src/NzbDrone.Common/Options/LogOptions.cs
Normal file
14
src/NzbDrone.Common/Options/LogOptions.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
namespace NzbDrone.Common.Options;
|
||||||
|
|
||||||
|
public class LogOptions
|
||||||
|
{
|
||||||
|
public string Level { get; set; }
|
||||||
|
public bool? FilterSentryEvents { get; set; }
|
||||||
|
public int? Rotate { get; set; }
|
||||||
|
public bool? Sql { get; set; }
|
||||||
|
public string ConsoleLevel { get; set; }
|
||||||
|
public bool? AnalyticsEnabled { get; set; }
|
||||||
|
public string SyslogServer { get; set; }
|
||||||
|
public int? SyslogPort { get; set; }
|
||||||
|
public string SyslogLevel { get; set; }
|
||||||
|
}
|
12
src/NzbDrone.Common/Options/ServerOptions.cs
Normal file
12
src/NzbDrone.Common/Options/ServerOptions.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace NzbDrone.Common.Options;
|
||||||
|
|
||||||
|
public class ServerOptions
|
||||||
|
{
|
||||||
|
public string UrlBase { get; set; }
|
||||||
|
public string BindAddress { get; set; }
|
||||||
|
public int? Port { get; set; }
|
||||||
|
public bool? EnableSsl { get; set; }
|
||||||
|
public int? SslPort { get; set; }
|
||||||
|
public string SslCertPath { get; set; }
|
||||||
|
public string SslCertPassword { get; set; }
|
||||||
|
}
|
9
src/NzbDrone.Common/Options/UpdateOptions.cs
Normal file
9
src/NzbDrone.Common/Options/UpdateOptions.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace NzbDrone.Common.Options;
|
||||||
|
|
||||||
|
public class UpdateOptions
|
||||||
|
{
|
||||||
|
public string Mechanism { get; set; }
|
||||||
|
public bool? Automatically { get; set; }
|
||||||
|
public string ScriptPath { get; set; }
|
||||||
|
public string Branch { get; set; }
|
||||||
|
}
|
@ -10,6 +10,7 @@
|
|||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Authentication;
|
using NzbDrone.Core.Authentication;
|
||||||
using NzbDrone.Core.Configuration.Events;
|
using NzbDrone.Core.Configuration.Events;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
@ -71,6 +72,11 @@ public class ConfigFileProvider : IConfigFileProvider
|
|||||||
private readonly IDiskProvider _diskProvider;
|
private readonly IDiskProvider _diskProvider;
|
||||||
private readonly ICached<string> _cache;
|
private readonly ICached<string> _cache;
|
||||||
private readonly PostgresOptions _postgresOptions;
|
private readonly PostgresOptions _postgresOptions;
|
||||||
|
private readonly AuthOptions _authOptions;
|
||||||
|
private readonly AppOptions _appOptions;
|
||||||
|
private readonly ServerOptions _serverOptions;
|
||||||
|
private readonly UpdateOptions _updateOptions;
|
||||||
|
private readonly LogOptions _logOptions;
|
||||||
|
|
||||||
private readonly string _configFile;
|
private readonly string _configFile;
|
||||||
private static readonly Regex HiddenCharacterRegex = new Regex("[^a-z0-9]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
private static readonly Regex HiddenCharacterRegex = new Regex("[^a-z0-9]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
@ -81,13 +87,23 @@ public ConfigFileProvider(IAppFolderInfo appFolderInfo,
|
|||||||
ICacheManager cacheManager,
|
ICacheManager cacheManager,
|
||||||
IEventAggregator eventAggregator,
|
IEventAggregator eventAggregator,
|
||||||
IDiskProvider diskProvider,
|
IDiskProvider diskProvider,
|
||||||
IOptions<PostgresOptions> postgresOptions)
|
IOptions<PostgresOptions> postgresOptions,
|
||||||
|
IOptions<AuthOptions> authOptions,
|
||||||
|
IOptions<AppOptions> appOptions,
|
||||||
|
IOptions<ServerOptions> serverOptions,
|
||||||
|
IOptions<UpdateOptions> updateOptions,
|
||||||
|
IOptions<LogOptions> logOptions)
|
||||||
{
|
{
|
||||||
_cache = cacheManager.GetCache<string>(GetType());
|
_cache = cacheManager.GetCache<string>(GetType());
|
||||||
_eventAggregator = eventAggregator;
|
_eventAggregator = eventAggregator;
|
||||||
_diskProvider = diskProvider;
|
_diskProvider = diskProvider;
|
||||||
_configFile = appFolderInfo.GetConfigPath();
|
_configFile = appFolderInfo.GetConfigPath();
|
||||||
_postgresOptions = postgresOptions.Value;
|
_postgresOptions = postgresOptions.Value;
|
||||||
|
_authOptions = authOptions.Value;
|
||||||
|
_appOptions = appOptions.Value;
|
||||||
|
_serverOptions = serverOptions.Value;
|
||||||
|
_updateOptions = updateOptions.Value;
|
||||||
|
_logOptions = logOptions.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, object> GetConfigDictionary()
|
public Dictionary<string, object> GetConfigDictionary()
|
||||||
@ -143,7 +159,7 @@ public string BindAddress
|
|||||||
{
|
{
|
||||||
const string defaultValue = "*";
|
const string defaultValue = "*";
|
||||||
|
|
||||||
var bindAddress = GetValue("BindAddress", defaultValue);
|
var bindAddress = _serverOptions.BindAddress ?? GetValue("BindAddress", defaultValue);
|
||||||
if (string.IsNullOrWhiteSpace(bindAddress))
|
if (string.IsNullOrWhiteSpace(bindAddress))
|
||||||
{
|
{
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
@ -153,19 +169,19 @@ public string BindAddress
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Port => GetValueInt("Port", 7878);
|
public int Port => _serverOptions.Port ?? GetValueInt("Port", 7878);
|
||||||
|
|
||||||
public int SslPort => GetValueInt("SslPort", 9898);
|
public int SslPort => _serverOptions.SslPort ?? GetValueInt("SslPort", 9898);
|
||||||
|
|
||||||
public bool EnableSsl => GetValueBoolean("EnableSsl", false);
|
public bool EnableSsl => _serverOptions.EnableSsl ?? GetValueBoolean("EnableSsl", false);
|
||||||
|
|
||||||
public bool LaunchBrowser => GetValueBoolean("LaunchBrowser", true);
|
public bool LaunchBrowser => _appOptions.LaunchBrowser ?? GetValueBoolean("LaunchBrowser", true);
|
||||||
|
|
||||||
public string ApiKey
|
public string ApiKey
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var apiKey = GetValue("ApiKey", GenerateApiKey());
|
var apiKey = _authOptions.ApiKey ?? GetValue("ApiKey", GenerateApiKey());
|
||||||
|
|
||||||
if (apiKey.IsNullOrWhiteSpace())
|
if (apiKey.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
@ -181,7 +197,7 @@ public AuthenticationType AuthenticationMethod
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var enabled = GetValueBoolean("AuthenticationEnabled", false, false);
|
var enabled = _authOptions.Enabled ?? GetValueBoolean("AuthenticationEnabled", false, false);
|
||||||
|
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
@ -189,36 +205,41 @@ public AuthenticationType AuthenticationMethod
|
|||||||
return AuthenticationType.Basic;
|
return AuthenticationType.Basic;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetValueEnum("AuthenticationMethod", AuthenticationType.None);
|
return Enum.TryParse<AuthenticationType>(_authOptions.Method, out var enumValue)
|
||||||
|
? enumValue
|
||||||
|
: GetValueEnum("AuthenticationMethod", AuthenticationType.None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AuthenticationRequiredType AuthenticationRequired => GetValueEnum("AuthenticationRequired", AuthenticationRequiredType.Enabled);
|
public AuthenticationRequiredType AuthenticationRequired =>
|
||||||
|
Enum.TryParse<AuthenticationRequiredType>(_authOptions.Required, out var enumValue)
|
||||||
|
? enumValue
|
||||||
|
: GetValueEnum("AuthenticationRequired", AuthenticationRequiredType.Enabled);
|
||||||
|
|
||||||
public bool AnalyticsEnabled => GetValueBoolean("AnalyticsEnabled", true, persist: false);
|
public bool AnalyticsEnabled => _logOptions.AnalyticsEnabled ?? GetValueBoolean("AnalyticsEnabled", true, persist: false);
|
||||||
|
|
||||||
public string Branch => GetValue("Branch", "master").ToLowerInvariant();
|
public string Branch => _updateOptions.Branch ?? GetValue("Branch", "master").ToLowerInvariant();
|
||||||
|
|
||||||
public string LogLevel => GetValue("LogLevel", "info").ToLowerInvariant();
|
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "info").ToLowerInvariant();
|
||||||
public string ConsoleLogLevel => GetValue("ConsoleLogLevel", string.Empty, persist: false);
|
public string ConsoleLogLevel => _logOptions.ConsoleLevel ?? GetValue("ConsoleLogLevel", string.Empty, persist: false);
|
||||||
public string Theme => GetValue("Theme", "auto", persist: false);
|
public string Theme => _appOptions.Theme ?? GetValue("Theme", "auto", persist: false);
|
||||||
public string PostgresHost => _postgresOptions?.Host ?? GetValue("PostgresHost", string.Empty, persist: false);
|
public string PostgresHost => _postgresOptions?.Host ?? GetValue("PostgresHost", string.Empty, persist: false);
|
||||||
public string PostgresUser => _postgresOptions?.User ?? GetValue("PostgresUser", string.Empty, persist: false);
|
public string PostgresUser => _postgresOptions?.User ?? GetValue("PostgresUser", string.Empty, persist: false);
|
||||||
public string PostgresPassword => _postgresOptions?.Password ?? GetValue("PostgresPassword", string.Empty, persist: false);
|
public string PostgresPassword => _postgresOptions?.Password ?? GetValue("PostgresPassword", string.Empty, persist: false);
|
||||||
public string PostgresMainDb => _postgresOptions?.MainDb ?? GetValue("PostgresMainDb", "radarr-main", persist: false);
|
public string PostgresMainDb => _postgresOptions?.MainDb ?? GetValue("PostgresMainDb", "radarr-main", persist: false);
|
||||||
public string PostgresLogDb => _postgresOptions?.LogDb ?? GetValue("PostgresLogDb", "radarr-log", persist: false);
|
public string PostgresLogDb => _postgresOptions?.LogDb ?? GetValue("PostgresLogDb", "radarr-log", persist: false);
|
||||||
public int PostgresPort => (_postgresOptions?.Port ?? 0) != 0 ? _postgresOptions.Port : GetValueInt("PostgresPort", 5432, persist: false);
|
public int PostgresPort => (_postgresOptions?.Port ?? 0) != 0 ? _postgresOptions.Port : GetValueInt("PostgresPort", 5432, persist: false);
|
||||||
public bool LogSql => GetValueBoolean("LogSql", false, persist: false);
|
public bool LogSql => _logOptions.Sql ?? GetValueBoolean("LogSql", false, persist: false);
|
||||||
public int LogRotate => GetValueInt("LogRotate", 50, persist: false);
|
public int LogRotate => _logOptions.Rotate ?? GetValueInt("LogRotate", 50, persist: false);
|
||||||
public bool FilterSentryEvents => GetValueBoolean("FilterSentryEvents", true, persist: false);
|
public bool FilterSentryEvents => _logOptions.FilterSentryEvents ?? GetValueBoolean("FilterSentryEvents", true, persist: false);
|
||||||
public string SslCertPath => GetValue("SslCertPath", "");
|
public string SslCertPath => _serverOptions.SslCertPath ?? GetValue("SslCertPath", "");
|
||||||
public string SslCertPassword => GetValue("SslCertPassword", "");
|
public string SslCertPassword => _serverOptions.SslCertPassword ?? GetValue("SslCertPassword", "");
|
||||||
|
|
||||||
public string UrlBase
|
public string UrlBase
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var urlBase = GetValue("UrlBase", "").Trim('/');
|
var urlBase = _serverOptions.UrlBase ?? GetValue("UrlBase", "").Trim('/');
|
||||||
|
|
||||||
if (urlBase.IsNullOrWhiteSpace())
|
if (urlBase.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
@ -230,19 +251,22 @@ public string UrlBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string UiFolder => BuildInfo.IsDebug ? Path.Combine("..", "UI") : "UI";
|
public string UiFolder => BuildInfo.IsDebug ? Path.Combine("..", "UI") : "UI";
|
||||||
public string InstanceName => GetValue("InstanceName", BuildInfo.AppName);
|
public string InstanceName => _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
|
||||||
|
|
||||||
public bool UpdateAutomatically => GetValueBoolean("UpdateAutomatically", false, false);
|
public bool UpdateAutomatically => _updateOptions.Automatically ?? GetValueBoolean("UpdateAutomatically", false, false);
|
||||||
|
|
||||||
public UpdateMechanism UpdateMechanism => GetValueEnum("UpdateMechanism", UpdateMechanism.BuiltIn, false);
|
public UpdateMechanism UpdateMechanism =>
|
||||||
|
Enum.TryParse<UpdateMechanism>(_updateOptions.Mechanism, out var enumValue)
|
||||||
|
? enumValue
|
||||||
|
: GetValueEnum("UpdateMechanism", UpdateMechanism.BuiltIn, false);
|
||||||
|
|
||||||
public string UpdateScriptPath => GetValue("UpdateScriptPath", "", false);
|
public string UpdateScriptPath => _updateOptions.ScriptPath ?? GetValue("UpdateScriptPath", "", false);
|
||||||
|
|
||||||
public string SyslogServer => GetValue("SyslogServer", "", persist: false);
|
public string SyslogServer => _logOptions.SyslogServer ?? GetValue("SyslogServer", "", persist: false);
|
||||||
|
|
||||||
public int SyslogPort => GetValueInt("SyslogPort", 514, persist: false);
|
public int SyslogPort => _logOptions.SyslogPort ?? GetValueInt("SyslogPort", 514, persist: false);
|
||||||
|
|
||||||
public string SyslogLevel => GetValue("SyslogLevel", LogLevel, false).ToLowerInvariant();
|
public string SyslogLevel => _logOptions.SyslogLevel ?? GetValue("SyslogLevel", LogLevel, persist: false).ToLowerInvariant();
|
||||||
|
|
||||||
public int GetValueInt(string key, int defaultValue, bool persist = true)
|
public int GetValueInt(string key, int defaultValue, bool persist = true)
|
||||||
{
|
{
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
using NzbDrone.Common.Composition.Extensions;
|
using NzbDrone.Common.Composition.Extensions;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Instrumentation.Extensions;
|
using NzbDrone.Common.Instrumentation.Extensions;
|
||||||
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
using NzbDrone.Core.Datastore.Extensions;
|
using NzbDrone.Core.Datastore.Extensions;
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
@ -47,6 +48,11 @@ public void SetUp()
|
|||||||
container.RegisterInstance<IHostLifetime>(new Mock<IHostLifetime>().Object);
|
container.RegisterInstance<IHostLifetime>(new Mock<IHostLifetime>().Object);
|
||||||
container.RegisterInstance<IBroadcastSignalRMessage>(new Mock<IBroadcastSignalRMessage>().Object);
|
container.RegisterInstance<IBroadcastSignalRMessage>(new Mock<IBroadcastSignalRMessage>().Object);
|
||||||
container.RegisterInstance<IOptions<PostgresOptions>>(new Mock<IOptions<PostgresOptions>>().Object);
|
container.RegisterInstance<IOptions<PostgresOptions>>(new Mock<IOptions<PostgresOptions>>().Object);
|
||||||
|
container.RegisterInstance<IOptions<AuthOptions>>(new Mock<IOptions<AuthOptions>>().Object);
|
||||||
|
container.RegisterInstance<IOptions<AppOptions>>(new Mock<IOptions<AppOptions>>().Object);
|
||||||
|
container.RegisterInstance<IOptions<ServerOptions>>(new Mock<IOptions<ServerOptions>>().Object);
|
||||||
|
container.RegisterInstance<IOptions<UpdateOptions>>(new Mock<IOptions<UpdateOptions>>().Object);
|
||||||
|
container.RegisterInstance<IOptions<LogOptions>>(new Mock<IOptions<LogOptions>>().Object);
|
||||||
|
|
||||||
_container = container.GetServiceProvider();
|
_container = container.GetServiceProvider();
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Instrumentation;
|
using NzbDrone.Common.Instrumentation;
|
||||||
using NzbDrone.Common.Instrumentation.Extensions;
|
using NzbDrone.Common.Instrumentation.Extensions;
|
||||||
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Configuration;
|
using NzbDrone.Core.Configuration;
|
||||||
using NzbDrone.Core.Datastore.Extensions;
|
using NzbDrone.Core.Datastore.Extensions;
|
||||||
using PostgresOptions = NzbDrone.Core.Datastore.PostgresOptions;
|
using PostgresOptions = NzbDrone.Core.Datastore.PostgresOptions;
|
||||||
@ -96,6 +97,11 @@ public static void Start(string[] args, Action<IHostBuilder> trayCallback = null
|
|||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<PostgresOptions>(config.GetSection("Radarr:Postgres"));
|
services.Configure<PostgresOptions>(config.GetSection("Radarr:Postgres"));
|
||||||
|
services.Configure<AppOptions>(config.GetSection("Radarr:App"));
|
||||||
|
services.Configure<AuthOptions>(config.GetSection("Radarr:Auth"));
|
||||||
|
services.Configure<ServerOptions>(config.GetSection("Radarr:Server"));
|
||||||
|
services.Configure<LogOptions>(config.GetSection("Radarr:Log"));
|
||||||
|
services.Configure<UpdateOptions>(config.GetSection("Radarr:Update"));
|
||||||
}).Build();
|
}).Build();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -123,12 +129,12 @@ public static IHostBuilder CreateConsoleHostBuilder(string[] args, StartupContex
|
|||||||
{
|
{
|
||||||
var config = GetConfiguration(context);
|
var config = GetConfiguration(context);
|
||||||
|
|
||||||
var bindAddress = config.GetValue(nameof(ConfigFileProvider.BindAddress), "*");
|
var bindAddress = config.GetValue<string>($"Radarr:Server:{nameof(ServerOptions.BindAddress)}") ?? config.GetValue(nameof(ConfigFileProvider.BindAddress), "*");
|
||||||
var port = config.GetValue(nameof(ConfigFileProvider.Port), 7878);
|
var port = config.GetValue<int?>($"Radarr:Server:{nameof(ServerOptions.Port)}") ?? config.GetValue(nameof(ConfigFileProvider.Port), 7878);
|
||||||
var sslPort = config.GetValue(nameof(ConfigFileProvider.SslPort), 8787);
|
var sslPort = config.GetValue<int?>($"Radarr:Server:{nameof(ServerOptions.SslPort)}") ?? config.GetValue(nameof(ConfigFileProvider.SslPort), 8787);
|
||||||
var enableSsl = config.GetValue(nameof(ConfigFileProvider.EnableSsl), false);
|
var enableSsl = config.GetValue<bool?>($"Radarr:Server:{nameof(ServerOptions.EnableSsl)}") ?? config.GetValue(nameof(ConfigFileProvider.EnableSsl), false);
|
||||||
var sslCertPath = config.GetValue<string>(nameof(ConfigFileProvider.SslCertPath));
|
var sslCertPath = config.GetValue<string>($"Radarr:Server:{nameof(ServerOptions.SslCertPath)}") ?? config.GetValue<string>(nameof(ConfigFileProvider.SslCertPath));
|
||||||
var sslCertPassword = config.GetValue<string>(nameof(ConfigFileProvider.SslCertPassword));
|
var sslCertPassword = config.GetValue<string>($"Radarr:Server:{nameof(ServerOptions.SslCertPassword)}") ?? config.GetValue<string>(nameof(ConfigFileProvider.SslCertPassword));
|
||||||
|
|
||||||
var urls = new List<string> { BuildUrl("http", bindAddress, port) };
|
var urls = new List<string> { BuildUrl("http", bindAddress, port) };
|
||||||
|
|
||||||
@ -150,6 +156,12 @@ public static IHostBuilder CreateConsoleHostBuilder(string[] args, StartupContex
|
|||||||
.ConfigureServices(services =>
|
.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.Configure<PostgresOptions>(config.GetSection("Radarr:Postgres"));
|
services.Configure<PostgresOptions>(config.GetSection("Radarr:Postgres"));
|
||||||
|
services.Configure<PostgresOptions>(config.GetSection("Radarr:Postgres"));
|
||||||
|
services.Configure<AppOptions>(config.GetSection("Radarr:App"));
|
||||||
|
services.Configure<AuthOptions>(config.GetSection("Radarr:Auth"));
|
||||||
|
services.Configure<ServerOptions>(config.GetSection("Radarr:Server"));
|
||||||
|
services.Configure<LogOptions>(config.GetSection("Radarr:Log"));
|
||||||
|
services.Configure<UpdateOptions>(config.GetSection("Radarr:Update"));
|
||||||
})
|
})
|
||||||
.ConfigureWebHost(builder =>
|
.ConfigureWebHost(builder =>
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user