parent
be46b708a5
commit
31fa304983
@ -1,37 +0,0 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Net.Security;
|
||||
using Flurl.Http.Configuration;
|
||||
using Recyclarr.Json;
|
||||
using Recyclarr.Settings;
|
||||
using Serilog;
|
||||
|
||||
namespace Recyclarr.ServarrApi.Http;
|
||||
|
||||
public class FlurlConfigurator(ILogger log, ISettingsProvider settingsProvider)
|
||||
{
|
||||
[SuppressMessage("SonarCloud", "S4830:Server certificates should be verified during SSL/TLS connections")]
|
||||
[SuppressMessage("Security", "CA5359:Do Not Disable Certificate Validation")]
|
||||
public void Configure(IFlurlClientBuilder builder)
|
||||
{
|
||||
builder.WithSettings(settings =>
|
||||
{
|
||||
settings.JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services);
|
||||
FlurlLogging.SetupLogging(settings, log);
|
||||
});
|
||||
|
||||
builder.ConfigureInnerHandler(handler =>
|
||||
{
|
||||
if (!settingsProvider.Settings.EnableSslCertificateValidation)
|
||||
{
|
||||
log.Warning(
|
||||
"Security Risk: Certificate validation is being DISABLED because setting " +
|
||||
"`enable_ssl_certificate_validation` is set to `false`");
|
||||
|
||||
handler.SslOptions = new SslClientAuthenticationOptions
|
||||
{
|
||||
RemoteCertificateValidationCallback = (_, _, _, _) => true
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,17 +1,51 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Flurl;
|
||||
using Flurl.Http;
|
||||
using Flurl.Http.Configuration;
|
||||
using Recyclarr.Config.Models;
|
||||
using Recyclarr.Json;
|
||||
using Recyclarr.Settings;
|
||||
using Serilog;
|
||||
|
||||
namespace Recyclarr.ServarrApi.Http;
|
||||
|
||||
public class ServarrRequestBuilder(IFlurlClientCache clientCache) : IServarrRequestBuilder
|
||||
public class ServarrRequestBuilder(
|
||||
ILogger log,
|
||||
IFlurlClientCache clientCache,
|
||||
ISettingsProvider settingsProvider)
|
||||
: IServarrRequestBuilder
|
||||
{
|
||||
public IFlurlRequest Request(IServiceConfiguration config, params object[] path)
|
||||
{
|
||||
var client = clientCache.Get(config.InstanceName);
|
||||
client.BaseUrl ??= config.BaseUrl.AppendPathSegments("api", "v3");
|
||||
var client = clientCache.GetOrAdd(
|
||||
config.InstanceName,
|
||||
config.BaseUrl.AppendPathSegments("api", "v3"),
|
||||
Configure);
|
||||
|
||||
return client.Request(path)
|
||||
.WithHeader("X-Api-Key", config.ApiKey);
|
||||
}
|
||||
|
||||
[SuppressMessage("SonarCloud", "S4830:Server certificates should be verified during SSL/TLS connections")]
|
||||
[SuppressMessage("Security", "CA5359:Do Not Disable Certificate Validation")]
|
||||
private void Configure(IFlurlClientBuilder builder)
|
||||
{
|
||||
builder.WithSettings(settings =>
|
||||
{
|
||||
settings.JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services);
|
||||
FlurlLogging.SetupLogging(settings, log);
|
||||
});
|
||||
|
||||
builder.ConfigureInnerHandler(handler =>
|
||||
{
|
||||
if (!settingsProvider.Settings.EnableSslCertificateValidation)
|
||||
{
|
||||
log.Warning(
|
||||
"Security Risk: Certificate validation is being DISABLED because setting " +
|
||||
"`enable_ssl_certificate_validation` is set to `false`");
|
||||
|
||||
handler.ServerCertificateCustomValidationCallback = (_, _, _, _) => true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in new issue