dnscontrol: github.com/StackExchange/dnscontrol/providers Index | Files | Directories

package providers

import "github.com/StackExchange/dnscontrol/providers"


Package Files

capabilities.go providers.go


var DNSProviderTypes = map[string]DspInitializer{}

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.

func ProviderHasCabability Uses

func ProviderHasCabability(pType string, cap Capability) bool

ProviderHasCabability returns true if provider has capability.

func RegisterCustomRecordType Uses

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 Uses

func RegisterDomainServiceProviderType(name string, init DspInitializer, pm ...ProviderMetadata)

RegisterDomainServiceProviderType adds a dsp to the registry with the given initialization function.

func RegisterRegistrarType Uses

func RegisterRegistrarType(name string, init RegistrarInitializer, pm ...ProviderMetadata)

RegisterRegistrarType adds a registrar type to the registry by providing a suitable initialization function.

type Capability Uses

type Capability uint32

Capability is a bitmasked set of "features" that a provider supports. Only use constants from this package.

const (

    // CanUseAlias indicates the provider support ALIAS records (or flattened CNAMES). Up to the provider to translate them to the appropriate record type.
    CanUseAlias Capability = iota

    // CanUseCAA indicates the provider can handle CAA records

    // CanUsePTR indicates the provider can handle PTR records

    // CanUseSRV indicates the provider can handle SRV records

    // CanUseTLSA indicates the provider can handle TLSA records

    // CanUseTXTMulti indicates the provider can handle TXT records with multiple strings

    // CantUseNOPURGE indicates NO_PURGE is broken for this provider. To make it
    // work would require complex emulation of an incremental update mechanism,
    // so it is easier to simply mark this feature as not working for this
    // provider.

    // DocOfficiallySupported means it is actively used and maintained by stack exchange
    // DocDualHost means provider allows full management of apex NS records, so we can safely dual-host with anothe provider
    // DocCreateDomains means provider can add domains with the `dnscontrol create-domains` command

    // CanUseRoute53Alias indicates the provider support the specific R53_ALIAS records that only the Route53 provider supports

type CustomRType Uses

type CustomRType struct {
    Name     string
    Provider string
    RealType string

CustomRType stores an rtype that is only valid for this DSP.

func GetCustomRecordType Uses

func GetCustomRecordType(rType string) *CustomRType

GetCustomRecordType returns a registered custom record type, or nil if none

type DNSServiceProvider Uses

type DNSServiceProvider interface {

DNSServiceProvider is able to generate a set of corrections that need to be made to correct records for a domain

func CreateDNSProvider Uses

func CreateDNSProvider(dType string, config map[string]string, meta json.RawMessage) (DNSServiceProvider, error)

CreateDNSProvider initializes a dns provider instance from given credentials.

type DocumentationNote Uses

type DocumentationNote struct {
    HasFeature    bool
    Unimplemented bool
    Comment       string
    Link          string

DocumentationNote is a way for providers to give more detail about what features they support.

func Can Uses

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 Uses

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 Uses

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 Uses

type DocumentationNotes map[Capability]*DocumentationNote

DocumentationNotes is a full list of notes for a single provider

type DomainCreator Uses

type DomainCreator interface {
    EnsureDomainExists(domain string) error

DomainCreator should be implemented by providers that have the ability to add domains to an account. the create-domains command can be run to ensure all domains are present before running preview/push

type DspInitializer Uses

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 Uses

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 Uses

func (n None) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error)

GetDomainCorrections returns corrections to update a domain.

func (None) GetNameservers Uses

func (n None) GetNameservers(string) ([]*models.Nameserver, error)

GetNameservers returns the current nameservers for a domain.

func (None) GetRegistrarCorrections Uses

func (n None) GetRegistrarCorrections(dc *models.DomainConfig) ([]*models.Correction, error)

GetRegistrarCorrections returns corrections to update registrars.

type ProviderMetadata Uses

type ProviderMetadata interface{}

ProviderMetadata is a common interface for DocumentationNotes and Capability to be used interchangably

type Registrar Uses

type Registrar interface {

Registrar is an interface for a domain registrar. It can return a list of needed corrections to be applied in the future.

func CreateRegistrar Uses

func CreateRegistrar(rType string, config map[string]string) (Registrar, error)

CreateRegistrar initializes a registrar instance from given credentials.

type RegistrarInitializer Uses

type RegistrarInitializer func(map[string]string) (Registrar, error)

RegistrarInitializer is a function to create a registrar. Function will be passed the unprocessed json payload from the configuration file for the given provider.


_allPackage all is simply a container to reference all known provider implementations for easy import into other packages
configPackage config provides functions for reading and parsing the provider credentials json file.
namedotcomPackage namedotcom implements a registrar that uses the name.com api to set name servers.

Package providers imports 4 packages (graph) and is imported by 58 packages. Updated 2018-06-26. Refresh now. Tools for package owners.