mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
116 lines
2.9 KiB
Go
116 lines
2.9 KiB
Go
package dnsproviders
|
|
|
|
import (
|
|
"encoding/json"
|
|
"npm/internal/errors"
|
|
)
|
|
|
|
// providerField should mimick jsonschema, so that
|
|
// the ui can render a field and validate it
|
|
// before we do.
|
|
// See: https://json-schema.org/draft/2020-12/json-schema-validation.html
|
|
type providerField struct {
|
|
Title string `json:"title"`
|
|
Type string `json:"type"`
|
|
AdditionalProperties bool `json:"additionalProperties"`
|
|
Minimum int `json:"minimum,omitempty"`
|
|
Maximum int `json:"maximum,omitempty"`
|
|
MinLength int `json:"minLength,omitempty"`
|
|
MaxLength int `json:"maxLength,omitempty"`
|
|
Pattern string `json:"pattern,omitempty"`
|
|
IsSecret bool `json:"-"` // Not valid jsonschema
|
|
}
|
|
|
|
// Provider is a simple struct
|
|
type Provider struct {
|
|
Title string `json:"title"`
|
|
Type string `json:"type"` // Should always be "object"
|
|
AdditionalProperties bool `json:"additionalProperties"`
|
|
MinProperties int `json:"minProperties,omitempty"`
|
|
Required []string `json:"required,omitempty"`
|
|
Properties map[string]providerField `json:"properties"`
|
|
}
|
|
|
|
// GetJsonSchema encodes this object as JSON string
|
|
func (p *Provider) GetJsonSchema() (string, error) {
|
|
b, err := json.Marshal(p)
|
|
return string(b), err
|
|
}
|
|
|
|
// ConvertToUpdatable will manipulate this object so that it returns
|
|
// an updatable json schema
|
|
func (p *Provider) ConvertToUpdatable() {
|
|
p.MinProperties = 1
|
|
p.Required = nil
|
|
}
|
|
|
|
// List returns an array of providers
|
|
func List() []Provider {
|
|
return []Provider{
|
|
getDNSAcmeDNS(),
|
|
getDNSAd(),
|
|
getDNSAli(),
|
|
getDNSAws(),
|
|
getDNSAutoDNS(),
|
|
getDNSAzure(),
|
|
getDNSCf(),
|
|
getDNSCloudns(),
|
|
getDNSConoha(),
|
|
getDNSCx(),
|
|
getDNSCyon(),
|
|
getDNSDgon(),
|
|
getDNSMe(),
|
|
getDNSDNSimple(),
|
|
getDNSDa(),
|
|
getDNSDp(),
|
|
getDNSDpi(),
|
|
getDNSDreamhost(),
|
|
getDNSDuckDNS(),
|
|
getDNSDyn(),
|
|
getDNSDynu(),
|
|
getDNSEuserv(),
|
|
getDNSFreeDNS(),
|
|
getDNSGandiLiveDNS(),
|
|
getDNSGd(),
|
|
getDNSHe(),
|
|
getDNSInfoblox(),
|
|
getDNSInwx(),
|
|
getDNSIspconfig(),
|
|
getDNSKinghost(),
|
|
getDNSLinodeV4(),
|
|
getDNSLoopia(),
|
|
getDNSLua(),
|
|
getDNSNamecom(),
|
|
getDNSNamesilo(),
|
|
getDNSOne(),
|
|
getDNSYandex(),
|
|
getDNSSelectel(),
|
|
getDNSServercow(),
|
|
getDNSTele3(),
|
|
getDNSPDNS(),
|
|
getDNSUnoeuro(),
|
|
getDNSVscale(),
|
|
getDNSDNZilore(),
|
|
getDNSZonomi(),
|
|
}
|
|
}
|
|
|
|
// GetAll returns all the configured providers
|
|
func GetAll() map[string]Provider {
|
|
mp := make(map[string]Provider)
|
|
items := List()
|
|
for _, item := range items {
|
|
mp[item.Title] = item
|
|
}
|
|
return mp
|
|
}
|
|
|
|
// Get returns a single provider by name
|
|
func Get(provider string) (Provider, error) {
|
|
all := GetAll()
|
|
if item, found := all[provider]; found {
|
|
return item, nil
|
|
}
|
|
return Provider{}, errors.ErrProviderNotFound
|
|
}
|