Documentation ¶
Index ¶
- Variables
- func AuditRecords(dType string, rcs models.Records) []error
- func ProviderHasCapability(pType string, cap Capability) bool
- func RegisterCustomRecordType(name, provider, realType string)
- func RegisterDomainServiceProviderType(name string, fns DspFuncs, pm ...ProviderMetadata)
- func RegisterRegistrarType(name string, init RegistrarInitializer, pm ...ProviderMetadata)
- type Capability
- type CustomRType
- type DNSServiceProvider
- type DocumentationNote
- type DocumentationNotes
- type DspFuncs
- type DspInitializer
- type None
- func (n None) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error)
- func (n None) GetNameservers(string) ([]*models.Nameserver, error)
- func (n None) GetRegistrarCorrections(dc *models.DomainConfig) ([]*models.Correction, error)
- func (n None) GetZoneRecords(domain string, meta map[string]string) (models.Records, error)
- func (n None) GetZoneRecordsCorrections(dc *models.DomainConfig, records models.Records) ([]*models.Correction, error)
- type ProviderMetadata
- type RecordAuditor
- type Registrar
- type RegistrarInitializer
- type ZoneCreator
- type ZoneLister
Constants ¶
This section is empty.
Variables ¶
var DNSProviderTypes = map[string]DspFuncs{}
DNSProviderTypes stores initializer for each DSP.
var Notes = map[string]DocumentationNotes{}
Notes is a collection of all documentation notes, keyed by provider type
var RegistrarTypes = map[string]RegistrarInitializer{}
RegistrarTypes stores initializer for each registrar.
Functions ¶
func AuditRecords ¶
AuditRecords calls the RecordAudit function for a provider.
func ProviderHasCapability ¶
func ProviderHasCapability(pType string, cap Capability) bool
ProviderHasCapability returns true if provider has capability.
func RegisterCustomRecordType ¶
func RegisterCustomRecordType(name, provider, realType string)
RegisterCustomRecordType registers a record type that is only valid for one provider. provider is the registered type of provider this is valid with name is the record type as it will appear in the js. (should be something like $PROVIDER_FOO) realType is the record type it will be replaced with after validation
func RegisterDomainServiceProviderType ¶
func RegisterDomainServiceProviderType(name string, fns DspFuncs, pm ...ProviderMetadata)
RegisterDomainServiceProviderType adds a dsp to the registry with the given initialization function.
func RegisterRegistrarType ¶
func RegisterRegistrarType(name string, init RegistrarInitializer, pm ...ProviderMetadata)
RegisterRegistrarType adds a registrar type to the registry by providing a suitable initialization function.
Types ¶
type Capability ¶
type Capability uint32
Capability is a bitmasked set of "features" that a provider supports. Only use constants from this package.
const ( // CanAutoDNSSEC indicates that the provider can automatically handle DNSSEC, // so folks can ask for that. CanAutoDNSSEC Capability = iota // CanConcur indicates the provider can be used concurrently. Can() // indicates that it has been tested and shown to work concurrently. // Cannot() indicates it has not been tested OR it has been shown to not // work when used concurrently. The default is Cannot(). CanConcur // CanGetZones indicates the provider supports the get-zones subcommand. CanGetZones // CanUseAKAMAICDN indicates the provider support the specific AKAMAICDN records that only the Akamai EdgeDns provider supports CanUseAKAMAICDN // CanUseAlias indicates the provider support ALIAS records (or flattened CNAMES). Up to the provider to translate them to the appropriate record type. CanUseAlias // CanUseAzureAlias indicates the provider support the specific Azure_ALIAS records that only the Azure provider supports CanUseAzureAlias // CanUseCAA indicates the provider can handle CAA records CanUseCAA // CanUseDHCID indicates the provider can handle DHCID records CanUseDHCID // CanUseDNAME indicates the provider can handle DNAME records CanUseDNAME // CanUseDS indicates that the provider can handle DS record types. This // implies CanUseDSForChildren without specifying the latter explicitly. CanUseDS // CanUseDSForChildren indicates the provider can handle DS record types, but // only for children records, not at the root of the zone. CanUseDSForChildren // CanUseHTTPS indicates the provider can handle HTTPS records CanUseHTTPS // CanUseLOC indicates whether service provider handles LOC records CanUseLOC // CanUseNAPTR indicates the provider can handle NAPTR records CanUseNAPTR // CanUsePTR indicates the provider can handle PTR records CanUsePTR // CanUseRoute53Alias indicates the provider support the specific R53_ALIAS records that only the Route53 provider supports CanUseRoute53Alias // CanUseSOA indicates the provider supports full management of a zone's SOA record CanUseSOA // CanUseSRV indicates the provider can handle SRV records CanUseSRV // CanUseSSHFP indicates the provider can handle SSHFP records CanUseSSHFP // CanUseSVCB indicates the provider can handle SVCB records CanUseSVCB // CanUseTLSA indicates the provider can handle TLSA records CanUseTLSA // CanUseDNSKEY indicates that the provider can handle DNSKEY records CanUseDNSKEY // DocCreateDomains means provider can add domains with the `dnscontrol create-domains` command DocCreateDomains // DocDualHost means provider allows full management of apex NS records, so we can safely dual-host with another provider DocDualHost // DocOfficiallySupported means it is actively used and maintained by stack exchange DocOfficiallySupported )
func (Capability) String ¶
func (i Capability) String() string
type CustomRType ¶
CustomRType stores an rtype that is only valid for this DSP.
func GetCustomRecordType ¶
func GetCustomRecordType(rType string) *CustomRType
GetCustomRecordType returns a registered custom record type, or nil if none
type DNSServiceProvider ¶
type DNSServiceProvider interface { models.DNSProvider }
DNSServiceProvider is able to generate a set of corrections that need to be made to correct records for a domain. Implement this only if the provider is a DNS Service Provider (can update records in a DNS zone).
func CreateDNSProvider ¶
func CreateDNSProvider(providerTypeName string, config map[string]string, meta json.RawMessage) (DNSServiceProvider, error)
CreateDNSProvider initializes a dns provider instance from given credentials.
type DocumentationNote ¶
DocumentationNote is a way for providers to give more detail about what features they support.
func Can ¶
func Can(comments ...string) *DocumentationNote
Can is a small helper for concisely creating Documentation Notes comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
func Cannot ¶
func Cannot(comments ...string) *DocumentationNote
Cannot is a small helper for concisely creating Documentation Notes comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
func Unimplemented ¶
func Unimplemented(comments ...string) *DocumentationNote
Unimplemented is a small helper for concisely creating Documentation Notes comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
type DocumentationNotes ¶
type DocumentationNotes map[Capability]*DocumentationNote
DocumentationNotes is a full list of notes for a single provider
type DspFuncs ¶
type DspFuncs struct { Initializer DspInitializer RecordAuditor RecordAuditor }
DspFuncs lists functions registered with a provider.
type DspInitializer ¶
type DspInitializer func(map[string]string, json.RawMessage) (DNSServiceProvider, error)
DspInitializer is a function to create a DNS service provider. Function will be passed the unprocessed json payload from the configuration file for the given provider.
type None ¶
type None struct{}
None is a basic provider type that does absolutely nothing. Can be useful as a placeholder for third parties or unimplemented providers.
func (None) GetDomainCorrections ¶
func (n None) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error)
GetDomainCorrections returns corrections to update a domain.
func (None) GetNameservers ¶
func (n None) GetNameservers(string) ([]*models.Nameserver, error)
GetNameservers returns the current nameservers for a domain.
func (None) GetRegistrarCorrections ¶
func (n None) GetRegistrarCorrections(dc *models.DomainConfig) ([]*models.Correction, error)
GetRegistrarCorrections returns corrections to update registrars.
func (None) GetZoneRecords ¶
GetZoneRecords gets the records of a zone and returns them in RecordConfig format.
func (None) GetZoneRecordsCorrections ¶
func (n None) GetZoneRecordsCorrections(dc *models.DomainConfig, records models.Records) ([]*models.Correction, error)
GetZoneRecordsCorrections gets the records of a zone and returns them in RecordConfig format.
type ProviderMetadata ¶
type ProviderMetadata interface{}
ProviderMetadata is a common interface for DocumentationNotes and Capability to be used interchangeably
type RecordAuditor ¶
type RecordAuditor func([]*models.RecordConfig) []error
RecordAuditor is a function that verifies that all the records are supportable by this provider. It returns a list of errors detailing records that this provider can not support.
type Registrar ¶
Registrar is an interface for a domain registrar. It can return a list of needed corrections to be applied in the future. Implement this only if the provider is a "registrar" (i.e. can update the NS records of the parent to a domain).
type RegistrarInitializer ¶
RegistrarInitializer is a function to create a registrar. Function will be passed the unprocessed json payload from the configuration file for the given provider.
type ZoneCreator ¶
ZoneCreator should be implemented by providers that have the ability to create zones (used for automatically creating zones if they don't exist)
type ZoneLister ¶
ZoneLister should be implemented by providers that have the ability to list the zones they manage. This facilitates using the "get-zones" command for "all" zones.
Directories ¶
Path | Synopsis |
---|---|
Package all is simply a container to reference all known provider implementations for easy import into other packages
|
Package all is simply a container to reference all known provider implementations for easy import into other packages |
Package hexonet implements a registrar that uses the hexonet api to set name servers.
|
Package hexonet implements a registrar that uses the hexonet api to set name servers. |
Package mythicbeasts provides a provider for managing zones in Mythic Beasts.
|
Package mythicbeasts provides a provider for managing zones in Mythic Beasts. |
Package namedotcom implements a registrar that uses the name.com api to set name servers.
|
Package namedotcom implements a registrar that uses the name.com api to set name servers. |