1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-25 12:45:18 +01:00

[PM-1675] Timeout or transient error when verifying domains (#2835)

* Increased timeout of the dns resolve method and changed the lifetime of the dnsResolverService to scoped

* Reverted to using singleton as this was recommneded on the docs and also registered lookup client as a singleton

* Registerered a singleton service of ILookupClient

* replaced unused serviceProvider with a discard
This commit is contained in:
SmithThe4th 2023-04-06 15:31:45 -04:00 committed by GitHub
parent 49f15d8cc1
commit 53b9d52125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 3 deletions

View File

@ -60,7 +60,8 @@ public class VerifyOrganizationDomainCommand : IVerifyOrganizationDomainCommand
}
catch (Exception e)
{
_logger.LogError("Error verifying Organization domain. {errorMessage}", e.Message);
_logger.LogError("Error verifying Organization domain: {domain}. {errorMessage}",
domain.DomainName, e.Message);
}
domain.SetLastCheckedDate();

View File

@ -5,10 +5,15 @@ namespace Bit.Core.Services;
public class DnsResolverService : IDnsResolverService
{
private readonly ILookupClient _client;
public DnsResolverService(ILookupClient client)
{
_client = client;
}
public async Task<bool> ResolveAsync(string domain, string txtRecord, CancellationToken cancellationToken = default)
{
var lookup = new LookupClient();
var result = await lookup.QueryAsync(new DnsQuestion(domain, QueryType.TXT), cancellationToken);
var result = await _client.QueryAsync(new DnsQuestion(domain, QueryType.TXT), cancellationToken);
if (!result.HasError)
{
return result.Answers.TxtRecords()

View File

@ -19,6 +19,7 @@ using Bit.Core.Utilities;
using Bit.Core.Vault.Services;
using Bit.Infrastructure.Dapper;
using Bit.Infrastructure.EntityFramework;
using DnsClient;
using IdentityModel;
using IdentityServer4.AccessTokenValidation;
using IdentityServer4.Configuration;
@ -176,6 +177,11 @@ public static class ServiceCollectionExtensions
services.AddSingleton<IStripeSyncService, StripeSyncService>();
services.AddSingleton<IMailService, HandlebarsMailService>();
services.AddSingleton<ILicensingService, LicensingService>();
services.AddSingleton<ILookupClient>(_ =>
{
var options = new LookupClientOptions { Timeout = TimeSpan.FromSeconds(15) };
return new LookupClient(options);
});
services.AddSingleton<IDnsResolverService, DnsResolverService>();
services.AddSingleton<IFeatureService, LaunchDarklyFeatureService>();
services.AddTokenizers();