forked from xiongyuxing/tiku-backend.net
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
namespace Tiku.Application.Tenancy;
|
|
|
|
public sealed class DomainLifecycleOptions
|
|
{
|
|
public bool Enabled { get; set; } = true;
|
|
public int PollSeconds { get; set; } = 60;
|
|
public int BatchSize { get; set; } = 50;
|
|
public string DnsJsonEndpoint { get; set; } = "https://cloudflare-dns.com/dns-query";
|
|
public string VerificationRecordPrefix { get; set; } = "_tiku-verification";
|
|
public string[] AllowedCnameTargets { get; set; } = [];
|
|
public string? GatewayBaseUrl { get; set; }
|
|
public string? GatewayApiKey { get; set; }
|
|
}
|
|
|
|
public sealed record DomainOwnershipResult(bool Verified, bool Configured, string? FailureReason);
|
|
public sealed record DomainGatewayResult(bool TlsReady, bool Configured, string? FailureReason);
|
|
|
|
public interface IDomainOwnershipVerifier
|
|
{
|
|
Task<DomainOwnershipResult> VerifyAsync(
|
|
string host,
|
|
string verificationToken,
|
|
CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
public interface IDomainGatewayProvisioner
|
|
{
|
|
Task<DomainGatewayResult> EnsureTlsAsync(string host, CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
public interface ITenantDomainLifecycleService
|
|
{
|
|
Task<int> ProcessPendingAsync(CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
public interface ITenantRuntimeCacheInvalidator
|
|
{
|
|
Task InvalidateAsync(Guid tenantId, CancellationToken cancellationToken = default);
|
|
}
|