mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Process settings before creating WebHost
This commit is contained in:
@@ -1,17 +1,11 @@
|
|||||||
using Autofac;
|
using Autofac;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Jackett.Common;
|
|
||||||
using Jackett.Common.Models;
|
using Jackett.Common.Models;
|
||||||
using Jackett.Common.Models.Config;
|
using Jackett.Common.Models.Config;
|
||||||
using Jackett.Common.Services;
|
|
||||||
using Jackett.Common.Services.Interfaces;
|
using Jackett.Common.Services.Interfaces;
|
||||||
using Jackett.Common.Utils.Clients;
|
using Jackett.Common.Utils.Clients;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Config;
|
|
||||||
using NLog.Targets;
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@@ -22,8 +16,6 @@ namespace Jackett.Server
|
|||||||
public static IContainer ApplicationContainer { get; set; }
|
public static IContainer ApplicationContainer { get; set; }
|
||||||
public static IApplicationLifetime applicationLifetime;
|
public static IApplicationLifetime applicationLifetime;
|
||||||
private static bool _automapperInitialised = false;
|
private static bool _automapperInitialised = false;
|
||||||
public static ConsoleOptions ConsoleOptions { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public static void Initialize()
|
public static void Initialize()
|
||||||
{
|
{
|
||||||
@@ -35,8 +27,6 @@ namespace Jackett.Server
|
|||||||
_automapperInitialised = true;
|
_automapperInitialised = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessSettings();
|
|
||||||
|
|
||||||
//Load the indexers
|
//Load the indexers
|
||||||
ServerService.Initalize();
|
ServerService.Initalize();
|
||||||
|
|
||||||
@@ -44,48 +34,6 @@ namespace Jackett.Server
|
|||||||
ServerService.Start();
|
ServerService.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ProcessSettings()
|
|
||||||
{
|
|
||||||
RuntimeSettings runtimeSettings = ServerConfiguration.RuntimeSettings;
|
|
||||||
|
|
||||||
if (runtimeSettings.ClientOverride != "httpclient" && runtimeSettings.ClientOverride != "httpclient2")
|
|
||||||
{
|
|
||||||
Logger.Error($"Client override ({runtimeSettings.ClientOverride}) has been deprecated, please remove it from your start arguments");
|
|
||||||
Environment.Exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runtimeSettings.DoSSLFix != null)
|
|
||||||
{
|
|
||||||
Logger.Error("SSLFix has been deprecated, please remove it from your start arguments");
|
|
||||||
Environment.Exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runtimeSettings.LogRequests)
|
|
||||||
{
|
|
||||||
Logger.Info("Logging enabled.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runtimeSettings.TracingEnabled)
|
|
||||||
{
|
|
||||||
Logger.Info("Tracing enabled.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runtimeSettings.IgnoreSslErrors == true)
|
|
||||||
{
|
|
||||||
Logger.Info("Jackett will ignore SSL certificate errors.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(runtimeSettings.CustomDataFolder))
|
|
||||||
{
|
|
||||||
Logger.Info("Jackett Data will be stored in: " + runtimeSettings.CustomDataFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runtimeSettings.ProxyConnection != null)
|
|
||||||
{
|
|
||||||
Logger.Info("Proxy enabled. " + runtimeSettings.ProxyConnection);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void RestartWebHost()
|
public static void RestartWebHost()
|
||||||
{
|
{
|
||||||
Logger.Info("Restart of the web application host (not process) initiated");
|
Logger.Info("Restart of the web application host (not process) initiated");
|
||||||
@@ -185,6 +133,5 @@ namespace Jackett.Server
|
|||||||
builder.RegisterInstance(logger).SingleInstance();
|
builder.RegisterInstance(logger).SingleInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -14,62 +14,45 @@ namespace Jackett.Server
|
|||||||
{
|
{
|
||||||
public static class Initialisation
|
public static class Initialisation
|
||||||
{
|
{
|
||||||
public static LoggingConfiguration SetupLogging(RuntimeSettings settings)
|
|
||||||
|
public static void ProcessSettings(RuntimeSettings runtimeSettings, Logger logger)
|
||||||
{
|
{
|
||||||
var logFileName = settings.CustomLogFileName ?? "log.txt";
|
if (runtimeSettings.ClientOverride != "httpclient" && runtimeSettings.ClientOverride != "httpclient2")
|
||||||
var logLevel = settings.TracingEnabled ? NLog.LogLevel.Debug : NLog.LogLevel.Info;
|
{
|
||||||
// Add custom date time format renderer as the default is too long
|
logger.Error($"Client override ({runtimeSettings.ClientOverride}) has been deprecated, please remove it from your start arguments");
|
||||||
ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("simpledatetime", typeof(SimpleDateTimeRenderer));
|
Environment.Exit(1);
|
||||||
|
|
||||||
var logConfig = new LoggingConfiguration();
|
|
||||||
var logFile = new FileTarget();
|
|
||||||
logConfig.AddTarget("file", logFile);
|
|
||||||
logFile.Layout = "${longdate} ${level} ${message} ${exception:format=ToString}";
|
|
||||||
logFile.FileName = Path.Combine(settings.DataFolder, logFileName);
|
|
||||||
logFile.ArchiveFileName = "log.{#####}.txt";
|
|
||||||
logFile.ArchiveAboveSize = 500000;
|
|
||||||
logFile.MaxArchiveFiles = 5;
|
|
||||||
logFile.KeepFileOpen = false;
|
|
||||||
logFile.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
|
||||||
var logFileRule = new LoggingRule("*", logLevel, logFile);
|
|
||||||
logConfig.LoggingRules.Add(logFileRule);
|
|
||||||
|
|
||||||
var logConsole = new ColoredConsoleTarget();
|
|
||||||
logConfig.AddTarget("console", logConsole);
|
|
||||||
|
|
||||||
logConsole.Layout = "${simpledatetime} ${level} ${message} ${exception:format=ToString}";
|
|
||||||
var logConsoleRule = new LoggingRule("*", logLevel, logConsole);
|
|
||||||
logConfig.LoggingRules.Add(logConsoleRule);
|
|
||||||
|
|
||||||
var logService = new LogCacheService();
|
|
||||||
logConfig.AddTarget("service", logService);
|
|
||||||
var serviceRule = new LoggingRule("*", logLevel, logService);
|
|
||||||
logConfig.LoggingRules.Add(serviceRule);
|
|
||||||
|
|
||||||
return logConfig;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetLogLevel(LogLevel level)
|
if (runtimeSettings.DoSSLFix != null)
|
||||||
{
|
{
|
||||||
foreach (var rule in LogManager.Configuration.LoggingRules)
|
logger.Error("SSLFix has been deprecated, please remove it from your start arguments");
|
||||||
{
|
Environment.Exit(1);
|
||||||
if (level == LogLevel.Debug)
|
|
||||||
{
|
|
||||||
if (!rule.Levels.Contains(LogLevel.Debug))
|
|
||||||
{
|
|
||||||
rule.EnableLoggingForLevel(LogLevel.Debug);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (rule.Levels.Contains(LogLevel.Debug))
|
|
||||||
{
|
|
||||||
rule.DisableLoggingForLevel(LogLevel.Debug);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogManager.ReconfigExistingLoggers();
|
if (runtimeSettings.LogRequests)
|
||||||
|
{
|
||||||
|
logger.Info("Logging enabled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (runtimeSettings.TracingEnabled)
|
||||||
|
{
|
||||||
|
logger.Info("Tracing enabled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (runtimeSettings.IgnoreSslErrors == true)
|
||||||
|
{
|
||||||
|
logger.Info("Jackett will ignore SSL certificate errors.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(runtimeSettings.CustomDataFolder))
|
||||||
|
{
|
||||||
|
logger.Info("Jackett Data will be stored in: " + runtimeSettings.CustomDataFolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (runtimeSettings.ProxyConnection != null)
|
||||||
|
{
|
||||||
|
logger.Info("Proxy enabled. " + runtimeSettings.ProxyConnection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ProcessWindowsSpecificArgs(ConsoleOptions consoleOptions, IProcessService processService, ServerConfig serverConfig, Logger logger)
|
public static void ProcessWindowsSpecificArgs(ConsoleOptions consoleOptions, IProcessService processService, ServerConfig serverConfig, Logger logger)
|
||||||
@@ -143,5 +126,63 @@ namespace Jackett.Server
|
|||||||
{
|
{
|
||||||
processService.StartProcessAndLog("netsh.exe", args);
|
processService.StartProcessAndLog("netsh.exe", args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LoggingConfiguration SetupLogging(RuntimeSettings settings)
|
||||||
|
{
|
||||||
|
var logFileName = settings.CustomLogFileName ?? "log.txt";
|
||||||
|
var logLevel = settings.TracingEnabled ? NLog.LogLevel.Debug : NLog.LogLevel.Info;
|
||||||
|
// Add custom date time format renderer as the default is too long
|
||||||
|
ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("simpledatetime", typeof(SimpleDateTimeRenderer));
|
||||||
|
|
||||||
|
var logConfig = new LoggingConfiguration();
|
||||||
|
var logFile = new FileTarget();
|
||||||
|
logConfig.AddTarget("file", logFile);
|
||||||
|
logFile.Layout = "${longdate} ${level} ${message} ${exception:format=ToString}";
|
||||||
|
logFile.FileName = Path.Combine(settings.DataFolder, logFileName);
|
||||||
|
logFile.ArchiveFileName = "log.{#####}.txt";
|
||||||
|
logFile.ArchiveAboveSize = 500000;
|
||||||
|
logFile.MaxArchiveFiles = 5;
|
||||||
|
logFile.KeepFileOpen = false;
|
||||||
|
logFile.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
||||||
|
var logFileRule = new LoggingRule("*", logLevel, logFile);
|
||||||
|
logConfig.LoggingRules.Add(logFileRule);
|
||||||
|
|
||||||
|
var logConsole = new ColoredConsoleTarget();
|
||||||
|
logConfig.AddTarget("console", logConsole);
|
||||||
|
|
||||||
|
logConsole.Layout = "${simpledatetime} ${level} ${message} ${exception:format=ToString}";
|
||||||
|
var logConsoleRule = new LoggingRule("*", logLevel, logConsole);
|
||||||
|
logConfig.LoggingRules.Add(logConsoleRule);
|
||||||
|
|
||||||
|
var logService = new LogCacheService();
|
||||||
|
logConfig.AddTarget("service", logService);
|
||||||
|
var serviceRule = new LoggingRule("*", logLevel, logService);
|
||||||
|
logConfig.LoggingRules.Add(serviceRule);
|
||||||
|
|
||||||
|
return logConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetLogLevel(LogLevel level)
|
||||||
|
{
|
||||||
|
foreach (var rule in LogManager.Configuration.LoggingRules)
|
||||||
|
{
|
||||||
|
if (level == LogLevel.Debug)
|
||||||
|
{
|
||||||
|
if (!rule.Levels.Contains(LogLevel.Debug))
|
||||||
|
{
|
||||||
|
rule.EnableLoggingForLevel(LogLevel.Debug);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rule.Levels.Contains(LogLevel.Debug))
|
||||||
|
{
|
||||||
|
rule.DisableLoggingForLevel(LogLevel.Debug);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LogManager.ReconfigExistingLoggers();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -55,8 +55,6 @@ namespace Jackett.Server
|
|||||||
runtimeDictionary = GetValues(Settings);
|
runtimeDictionary = GetValues(Settings);
|
||||||
});
|
});
|
||||||
|
|
||||||
Helper.ConsoleOptions = consoleOptions;
|
|
||||||
|
|
||||||
LogManager.Configuration = Initialisation.SetupLogging(Settings);
|
LogManager.Configuration = Initialisation.SetupLogging(Settings);
|
||||||
Logger logger = LogManager.GetCurrentClassLogger();
|
Logger logger = LogManager.GetCurrentClassLogger();
|
||||||
logger.Info("Starting Jackett v" + EnvironmentUtil.JackettVersion);
|
logger.Info("Starting Jackett v" + EnvironmentUtil.JackettVersion);
|
||||||
@@ -75,6 +73,8 @@ namespace Jackett.Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Initialisation.ProcessSettings(Settings, logger);
|
||||||
|
|
||||||
ISerializeService serializeService = new SerializeService();
|
ISerializeService serializeService = new SerializeService();
|
||||||
IProcessService processService = new ProcessService(logger);
|
IProcessService processService = new ProcessService(logger);
|
||||||
IConfigurationService configurationService = new ConfigurationService(serializeService, processService, logger, Settings);
|
IConfigurationService configurationService = new ConfigurationService(serializeService, processService, logger, Settings);
|
||||||
|
Reference in New Issue
Block a user