Skip to content

Dnsplugins#17

Closed
bhillkeyfactor wants to merge 32 commits into
release-1.4from
dnsplugins
Closed

Dnsplugins#17
bhillkeyfactor wants to merge 32 commits into
release-1.4from
dnsplugins

Conversation

@bhillkeyfactor

Copy link
Copy Markdown
Collaborator

No description provided.

bhillkeyfactor and others added 30 commits January 15, 2026 14:55
Brings in upstream fixes from main while preserving the dnsplugins
branch architecture (inline DNS providers removed in favor of external
plugins resolved via IDomainValidatorFactory).

Resolutions:
- Kept deletion of inline Cloudflare/Google/Factory providers (moved to
  plugin projects on this branch).
- Dropped provider-specific config fields/annotations re-added by main;
  those configs now belong to each DNS plugin.
- Added main's new Enabled disable-switch: cached AcmeClientConfig in
  Initialize, early-return in Initialize, and FAILED enrollment when
  the connector is disabled.
- Added main's DnsVerificationServer config (with annotation) for
  private DNS zones, and wired it into the DnsVerificationHelper
  constructor call in Enroll.
- Kept dnsplugins' AcmeCaPlugin.csproj state (newer IAnyCAPlugin
  prerelease, Google package removed, other provider packages pending
  cleanup).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Ports the FlowLogger pattern from Keyfactor/barracuda-wafasaas-orchestrator
and adapts it for an IAnyCAPlugin. The accumulated step breadcrumb is
appended to EnrollmentResult.StatusMessage on both success and failure,
so operators see a scannable per-step summary in the Command UI instead
of just a single exception message.

Changes:
- FlowLogger.cs: ported verbatim from barracuda with namespace changed
  to Keyfactor.Extensions.CAPlugin.Acme. Added StepAsync<T> overload
  for async methods that return a value.
- Enroll: wraps each stage (ValidateInput, FormatCsr, LoadConfig,
  CreateHttpClient, InitAcmeAccount, CreateAcmeClient, DecodeCsr,
  ExtractDomainsFromCsr, CreateOrder, ExtractOrderIdentifier,
  FinalizeOrder, DownloadCertificate, EncodeCertificateToPem) as a
  timed flow.Step. Success returns include flow.GetSummary(); failure
  paths include DescribeException(ex) + flow.GetSummary().
- ProcessAuthorizations: takes the flow and records per-domain work in
  three branches (StageDnsRecords / VerifyAndSubmit / CleanupDnsRecords),
  so the breadcrumb shows which specific domain failed when a challenge
  breaks.
- DescribeException helper: unwraps AggregateException/TargetInvocation
  wrappers, surfaces HttpRequestException context, and truncates
  overlong messages so the summary stays readable.
- Initialize: added ValidateConfigForEnrollment — fails fast (at save
  time, not first enroll) on missing DirectoryUrl/Email, non-absolute
  or non-http(s) DirectoryUrl, mismatched EAB key pair, or negative
  DnsPropagationDelaySeconds.

Build: net6.0 / net8.0 / net10.0 — 0 errors, pre-existing warnings only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removed specific root/intermediate names (ISRG Root X1, R3) that go stale
when Let's Encrypt rotates their chain. Users are now directed to the
official Let's Encrypt certificates page to identify the currently active
root and intermediate certificates.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Resolve the ACME challenge record name through any chain of CNAME
delegations to its terminal target before staging validation. The
resolved name now drives DNS provider plugin selection, record
creation, propagation verification, and cleanup, so challenges
delegated into a zone on a different provider are routed to the
plugin that owns that zone. Non-delegated domains are unaffected.
Add multi-level CNAME delegation support for DNS-01 challenges
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant