DomainProviderOptions
Dyndns provider options for the dns VM (ddns-updater A-record sync). SEPARATE from DnsProviderOptions on purpose: dyndns != ACME registrar. dyndns works standalone (no Let’s Encrypt, no DNS-01). Provider name MUST match a string supported by services.ddns-updater (qdm12). Examples: noip, duckdns, dyn, cloudflare, namecheap, godaddy.
The secret (token or password) is NOT stored here - it rides on the DomainProvider-tagged User (config-driven-credentials rule) and is materialised at template-render time. The public IP is learned by curl echo on the dns VM (api.ipify.org primary, icanhazip.com fallback); when the customer sets a static DirectoryService.PublicIP the dyndns updater is skipped entirely (static A record needs no updater).
public sealed record DomainProviderOptions : IEquatable<DomainProviderOptions>
1. Properties
1.1. Domain
The dyndns TARGET zone the updater writes - i.e. the dynamic-DNS hostname’s zone, NOT the customer domain. In the "hosting → CNAME → dyndns" topology this is the No-IP zone (e.g. "no-ip.com", "ddns.net"); Hosts are the labels under it (e.g. "osisaftp"). Null/empty ⇒ fall back to CustomerDomain (the "provider runs your own zone" topology).
public string Domain { get; init; }
1.2. Hosts
Hosts/subdomains to update under the zone. "@" = root domain; "mail"/"nextcloud"/… = subdomains. Empty ⇒ dns.nix falls back to the public-service record keys.
public IReadOnlyList<string> Hosts { get; init; }
1.3. Provider
ddns-updater provider identifier (e.g. noip, duckdns, dyn, cloudflare).
public string Provider { get; init; }
1.4. SecretKey
ddns-updater settings key the secret lands under. "password" for user+password providers (noip, dyn), "token" for token providers (duckdns, cloudflare). Default "password".
public string SecretKey { get; init; }
1.5. Username
Optional provider login username. Null/empty for token-only providers (duckdns).
public string Username { get; init; }
2. Operators
2.1. operator !=(DomainProviderOptions, DomainProviderOptions)
public static bool operator !=(DomainProviderOptions left, DomainProviderOptions right)
| Name | Type | Description |
|---|---|---|
left |
DomainProviderOptions |
|
right |
DomainProviderOptions |
Returns: bool
2.2. operator ==(DomainProviderOptions, DomainProviderOptions)
public static bool operator ==(DomainProviderOptions left, DomainProviderOptions right)
| Name | Type | Description |
|---|---|---|
left |
DomainProviderOptions |
|
right |
DomainProviderOptions |
Returns: bool