mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-06-03 06:07:20 +02:00
Added tools folder
- Moved providers scrapper by @Teifun2 into tool folder - Added code generator for avoid the use of env variables (wip)
This commit is contained in:
parent
3df96350a3
commit
1d63b679dc
38
tools/dns_challenge_update/code-gen/README.md
Normal file
38
tools/dns_challenge_update/code-gen/README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
### DNS Challenge Update Data Structure Code Generator
|
||||||
|
|
||||||
|
This script is designed to automatically pull lego, update the providersdef module with new json file and create a function for automatically create a provider based on the given providers name and config json.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
To update the module, simply run update.sh
|
||||||
|
|
||||||
|
```
|
||||||
|
./update.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The updated files will be written into the providersdef folder. Then, you can copy it to the ACME module folder (or later-on a CICD pipeline will be made to do this automatically, but for now you have to manually copy it into the module under `src/mod/`)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Module Usage
|
||||||
|
|
||||||
|
To use the module, you can call to the following function inside the providersdef
|
||||||
|
|
||||||
|
```go
|
||||||
|
func GetDNSProviderByJsonConfig(name string, js string)(challenge.Provider, error)
|
||||||
|
|
||||||
|
//For example
|
||||||
|
providersdef.GetDNSProviderByJsonConfig("gandi", "{\"Username\":\"far\",\"Password\":\"boo\"}")
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This should be able to replace the default lego v4 build in one (the one attached below) that requires the use of environment variables
|
||||||
|
|
||||||
|
```go
|
||||||
|
// NewDNSChallengeProviderByName Factory for DNS providers.
|
||||||
|
func NewDNSChallengeProviderByName(name string) (challenge.Provider, error)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
235
tools/dns_challenge_update/code-gen/extract.go
Normal file
235
tools/dns_challenge_update/code-gen/extract.go
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var legoProvidersSourceFolder string = "./lego/providers/dns/"
|
||||||
|
var outputDir string = "./providersdef"
|
||||||
|
var defTemplate string = `package providerdef
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/go-acme/lego/v4/challenge"
|
||||||
|
{{imports}}
|
||||||
|
)
|
||||||
|
|
||||||
|
//name is the DNS provider name, e.g. cloudflare or gandi
|
||||||
|
//JSON (js) must be in key-value string, e.g. {"Username":"far","Password":"boo"}
|
||||||
|
func GetDNSProviderByJsonConfig(name string, js string)(challenge.Provider, error){
|
||||||
|
switch name {
|
||||||
|
{{magic}}
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unrecognized DNS provider: %s", name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
type Field struct {
|
||||||
|
Title string
|
||||||
|
Datatype string
|
||||||
|
}
|
||||||
|
type ProviderInfo struct {
|
||||||
|
Name string //Name of this provider
|
||||||
|
ConfigableFields []*Field //Field that shd be expose to user for filling in
|
||||||
|
HiddenFields []*Field //Fields that is usable but shd be hidden from user
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileExists(filePath string) bool {
|
||||||
|
_, err := os.Stat(filePath)
|
||||||
|
if err == nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// For other errors, you may handle them differently
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function define the DNS not supported by zoraxy
|
||||||
|
func getExcludedDNSProviders() []string {
|
||||||
|
return []string{
|
||||||
|
"edgedns", //Too complex data structure
|
||||||
|
"exec", //Not a DNS provider
|
||||||
|
"httpreq", //Not a DNS provider
|
||||||
|
"hurricane", //Multi-credentials arch
|
||||||
|
"oraclecloud", //Evil company
|
||||||
|
"acmedns", //Not a DNS provider
|
||||||
|
"selectelv2", //Not sure why not working with our code generator
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func isInSlice(str string, slice []string) bool {
|
||||||
|
for _, s := range slice {
|
||||||
|
if s == str {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func isExcludedDNSProvider(providerName string) bool {
|
||||||
|
return isInSlice(providerName, getExcludedDNSProviders())
|
||||||
|
}
|
||||||
|
|
||||||
|
// extractConfigStruct extracts the name of the config struct and its content as plain text from a given source code.
|
||||||
|
func extractConfigStruct(sourceCode string) (string, string) {
|
||||||
|
// Regular expression to match the struct declaration.
|
||||||
|
structRegex := regexp.MustCompile(`type\s+([A-Za-z0-9_]+)\s+struct\s*{([^{}]*)}`)
|
||||||
|
|
||||||
|
// Find the first match of the struct declaration.
|
||||||
|
match := structRegex.FindStringSubmatch(sourceCode)
|
||||||
|
if len(match) < 3 {
|
||||||
|
return "", "" // No match found
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract the struct name and its content.
|
||||||
|
structName := match[1]
|
||||||
|
structContent := match[2]
|
||||||
|
|
||||||
|
return structName, structContent
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// A map of provider name to information on what can be filled
|
||||||
|
extractedProviderList := map[string]*ProviderInfo{}
|
||||||
|
|
||||||
|
//Search all providers
|
||||||
|
providers, err := filepath.Glob(filepath.Join(legoProvidersSourceFolder, "/*"))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create output folder if not exists
|
||||||
|
err = os.MkdirAll(outputDir, 0775)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
generatedConvertcode := ""
|
||||||
|
importList := ""
|
||||||
|
for _, provider := range providers {
|
||||||
|
providerName := filepath.Base(provider)
|
||||||
|
if isExcludedDNSProvider(providerName) {
|
||||||
|
//Ignore this provider
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
//Check if {provider_name}.go exists
|
||||||
|
providerDef := filepath.Join(provider, providerName+".go")
|
||||||
|
if !fileExists(providerDef) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Extracting config structure for: " + providerDef)
|
||||||
|
providerSrc, err := os.ReadFile(providerDef)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, strctContent := extractConfigStruct(string(providerSrc))
|
||||||
|
|
||||||
|
//Filter and write the content to json
|
||||||
|
/*
|
||||||
|
Example of stctContent (Note the tab prefix)
|
||||||
|
|
||||||
|
Token string
|
||||||
|
PropagationTimeout time.Duration
|
||||||
|
PollingInterval time.Duration
|
||||||
|
SequenceInterval time.Duration
|
||||||
|
HTTPClient *http.Client
|
||||||
|
*/
|
||||||
|
strctContentLines := strings.Split(strctContent, "\n")
|
||||||
|
configKeys := []*Field{}
|
||||||
|
hiddenKeys := []*Field{}
|
||||||
|
for _, lineDef := range strctContentLines {
|
||||||
|
fields := strings.Fields(lineDef)
|
||||||
|
if len(fields) < 2 || strings.HasPrefix(fields[0], "//") {
|
||||||
|
//Ignore this line
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
//Filter out the fields that is not user-filled
|
||||||
|
switch fields[1] {
|
||||||
|
case "*url.URL":
|
||||||
|
fallthrough
|
||||||
|
case "string":
|
||||||
|
configKeys = append(configKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
case "int":
|
||||||
|
if fields[0] != "TTL" {
|
||||||
|
configKeys = append(configKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
hiddenKeys = append(hiddenKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
case "bool":
|
||||||
|
if fields[0] == "InsecureSkipVerify" || fields[0] == "SSLVerify" || fields[0] == "Debug" {
|
||||||
|
configKeys = append(configKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
hiddenKeys = append(hiddenKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
//Not used fields
|
||||||
|
hiddenKeys = append(hiddenKeys, &Field{
|
||||||
|
Title: fields[0],
|
||||||
|
Datatype: fields[1],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(strctContent)
|
||||||
|
|
||||||
|
extractedProviderList[providerName] = &ProviderInfo{
|
||||||
|
Name: providerName,
|
||||||
|
ConfigableFields: configKeys,
|
||||||
|
HiddenFields: hiddenKeys,
|
||||||
|
}
|
||||||
|
|
||||||
|
//Generate the code for it
|
||||||
|
|
||||||
|
//Generate the code for converting incoming json into target config
|
||||||
|
codeSegment := `
|
||||||
|
case "` + providerName + `":
|
||||||
|
cfg := ` + providerName + `.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ` + providerName + `.NewDNSProviderConfig(&cfg)`
|
||||||
|
|
||||||
|
generatedConvertcode += codeSegment
|
||||||
|
importList += ` "github.com/go-acme/lego/v4/providers/dns/` + providerName + "\"\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
js, err := json.MarshalIndent(extractedProviderList, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
os.WriteFile(filepath.Join(outputDir, "providers.json"), js, 0775)
|
||||||
|
|
||||||
|
fullCodeSnippet := strings.ReplaceAll(defTemplate, "{{magic}}", generatedConvertcode)
|
||||||
|
fullCodeSnippet = strings.ReplaceAll(fullCodeSnippet, "{{imports}}", importList)
|
||||||
|
|
||||||
|
os.WriteFile(filepath.Join(outputDir, "providersdef.go"), []byte(fullCodeSnippet), 0775)
|
||||||
|
fmt.Println("Output written to file")
|
||||||
|
}
|
3950
tools/dns_challenge_update/code-gen/providersdef/providers.json
Normal file
3950
tools/dns_challenge_update/code-gen/providersdef/providers.json
Normal file
File diff suppressed because it is too large
Load Diff
995
tools/dns_challenge_update/code-gen/providersdef/providersdef.go
Normal file
995
tools/dns_challenge_update/code-gen/providersdef/providersdef.go
Normal file
@ -0,0 +1,995 @@
|
|||||||
|
package providerdef
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/go-acme/lego/v4/challenge"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/alidns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/allinkl"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/arvancloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/auroradns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/autodns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/azure"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/azuredns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/bindman"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/bluecat"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/brandit"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/bunny"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/checkdomain"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/civo"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/clouddns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/cloudflare"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/cloudns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/cloudru"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/cloudxns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/conoha"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/constellix"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/cpanel"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/derak"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/desec"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/designate"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/digitalocean"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dnshomede"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dnsimple"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dnsmadeeasy"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dnspod"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dode"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/domeneshop"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dreamhost"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/duckdns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dyn"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/dynu"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/easydns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/efficientip"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/epik"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/exoscale"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/freemyip"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/gandi"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/gandiv5"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/gcore"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/glesys"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/godaddy"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/googledomains"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/hetzner"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/hostingde"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/hosttech"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/httpnet"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/hyperone"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ibmcloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/iij"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/iijdpf"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/infoblox"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/infomaniak"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/internetbs"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/inwx"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ionos"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ipv64"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/iwantmyname"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/joker"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/liara"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/lightsail"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/linode"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/liquidweb"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/loopia"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/luadns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/mailinabox"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/metaname"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/mydnsjp"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/mythicbeasts"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/namecheap"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/namedotcom"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/namesilo"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/nearlyfreespeech"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/netcup"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/netlify"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/nicmanager"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/nifcloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/njalla"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/nodion"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ns1"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/otc"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ovh"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/pdns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/plesk"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/porkbun"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/rackspace"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/rcodezero"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/regru"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/rfc2136"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/rimuhosting"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/route53"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/safedns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/sakuracloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/scaleway"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/selectel"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/servercow"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/shellrent"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/simply"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/sonic"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/stackpath"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/transip"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/ultradns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/variomedia"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vegadns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vercel"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/versio"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vinyldns"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vkcloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vscale"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/vultr"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/webnames"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/websupport"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/wedos"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/yandex"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/yandex360"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/yandexcloud"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/zoneee"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/zonomi"
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
//name is the DNS provider name, e.g. cloudflare or gandi
|
||||||
|
//JSON (js) must be in key-value string that match ConfigableFields Title in providers.json, e.g. {"Username":"far","Password":"boo"}
|
||||||
|
func GetDNSProviderByJsonConfig(name string, js string)(challenge.Provider, error){
|
||||||
|
switch name {
|
||||||
|
|
||||||
|
case "alidns":
|
||||||
|
cfg := alidns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return alidns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "allinkl":
|
||||||
|
cfg := allinkl.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return allinkl.NewDNSProviderConfig(&cfg)
|
||||||
|
case "arvancloud":
|
||||||
|
cfg := arvancloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return arvancloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "auroradns":
|
||||||
|
cfg := auroradns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return auroradns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "autodns":
|
||||||
|
cfg := autodns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return autodns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "azure":
|
||||||
|
cfg := azure.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return azure.NewDNSProviderConfig(&cfg)
|
||||||
|
case "azuredns":
|
||||||
|
cfg := azuredns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return azuredns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "bindman":
|
||||||
|
cfg := bindman.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return bindman.NewDNSProviderConfig(&cfg)
|
||||||
|
case "bluecat":
|
||||||
|
cfg := bluecat.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return bluecat.NewDNSProviderConfig(&cfg)
|
||||||
|
case "brandit":
|
||||||
|
cfg := brandit.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return brandit.NewDNSProviderConfig(&cfg)
|
||||||
|
case "bunny":
|
||||||
|
cfg := bunny.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return bunny.NewDNSProviderConfig(&cfg)
|
||||||
|
case "checkdomain":
|
||||||
|
cfg := checkdomain.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return checkdomain.NewDNSProviderConfig(&cfg)
|
||||||
|
case "civo":
|
||||||
|
cfg := civo.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return civo.NewDNSProviderConfig(&cfg)
|
||||||
|
case "clouddns":
|
||||||
|
cfg := clouddns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return clouddns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "cloudflare":
|
||||||
|
cfg := cloudflare.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cloudflare.NewDNSProviderConfig(&cfg)
|
||||||
|
case "cloudns":
|
||||||
|
cfg := cloudns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cloudns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "cloudru":
|
||||||
|
cfg := cloudru.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cloudru.NewDNSProviderConfig(&cfg)
|
||||||
|
case "cloudxns":
|
||||||
|
cfg := cloudxns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cloudxns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "conoha":
|
||||||
|
cfg := conoha.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return conoha.NewDNSProviderConfig(&cfg)
|
||||||
|
case "constellix":
|
||||||
|
cfg := constellix.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return constellix.NewDNSProviderConfig(&cfg)
|
||||||
|
case "cpanel":
|
||||||
|
cfg := cpanel.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cpanel.NewDNSProviderConfig(&cfg)
|
||||||
|
case "derak":
|
||||||
|
cfg := derak.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return derak.NewDNSProviderConfig(&cfg)
|
||||||
|
case "desec":
|
||||||
|
cfg := desec.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return desec.NewDNSProviderConfig(&cfg)
|
||||||
|
case "designate":
|
||||||
|
cfg := designate.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return designate.NewDNSProviderConfig(&cfg)
|
||||||
|
case "digitalocean":
|
||||||
|
cfg := digitalocean.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return digitalocean.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dnshomede":
|
||||||
|
cfg := dnshomede.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dnshomede.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dnsimple":
|
||||||
|
cfg := dnsimple.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dnsimple.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dnsmadeeasy":
|
||||||
|
cfg := dnsmadeeasy.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dnsmadeeasy.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dnspod":
|
||||||
|
cfg := dnspod.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dnspod.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dode":
|
||||||
|
cfg := dode.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dode.NewDNSProviderConfig(&cfg)
|
||||||
|
case "domeneshop":
|
||||||
|
cfg := domeneshop.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return domeneshop.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dreamhost":
|
||||||
|
cfg := dreamhost.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dreamhost.NewDNSProviderConfig(&cfg)
|
||||||
|
case "duckdns":
|
||||||
|
cfg := duckdns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return duckdns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dyn":
|
||||||
|
cfg := dyn.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dyn.NewDNSProviderConfig(&cfg)
|
||||||
|
case "dynu":
|
||||||
|
cfg := dynu.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dynu.NewDNSProviderConfig(&cfg)
|
||||||
|
case "easydns":
|
||||||
|
cfg := easydns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return easydns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "efficientip":
|
||||||
|
cfg := efficientip.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return efficientip.NewDNSProviderConfig(&cfg)
|
||||||
|
case "epik":
|
||||||
|
cfg := epik.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return epik.NewDNSProviderConfig(&cfg)
|
||||||
|
case "exoscale":
|
||||||
|
cfg := exoscale.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return exoscale.NewDNSProviderConfig(&cfg)
|
||||||
|
case "freemyip":
|
||||||
|
cfg := freemyip.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return freemyip.NewDNSProviderConfig(&cfg)
|
||||||
|
case "gandi":
|
||||||
|
cfg := gandi.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return gandi.NewDNSProviderConfig(&cfg)
|
||||||
|
case "gandiv5":
|
||||||
|
cfg := gandiv5.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return gandiv5.NewDNSProviderConfig(&cfg)
|
||||||
|
case "gcore":
|
||||||
|
cfg := gcore.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return gcore.NewDNSProviderConfig(&cfg)
|
||||||
|
case "glesys":
|
||||||
|
cfg := glesys.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return glesys.NewDNSProviderConfig(&cfg)
|
||||||
|
case "godaddy":
|
||||||
|
cfg := godaddy.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return godaddy.NewDNSProviderConfig(&cfg)
|
||||||
|
case "googledomains":
|
||||||
|
cfg := googledomains.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return googledomains.NewDNSProviderConfig(&cfg)
|
||||||
|
case "hetzner":
|
||||||
|
cfg := hetzner.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return hetzner.NewDNSProviderConfig(&cfg)
|
||||||
|
case "hostingde":
|
||||||
|
cfg := hostingde.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return hostingde.NewDNSProviderConfig(&cfg)
|
||||||
|
case "hosttech":
|
||||||
|
cfg := hosttech.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return hosttech.NewDNSProviderConfig(&cfg)
|
||||||
|
case "httpnet":
|
||||||
|
cfg := httpnet.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return httpnet.NewDNSProviderConfig(&cfg)
|
||||||
|
case "hyperone":
|
||||||
|
cfg := hyperone.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return hyperone.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ibmcloud":
|
||||||
|
cfg := ibmcloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ibmcloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "iij":
|
||||||
|
cfg := iij.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return iij.NewDNSProviderConfig(&cfg)
|
||||||
|
case "iijdpf":
|
||||||
|
cfg := iijdpf.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return iijdpf.NewDNSProviderConfig(&cfg)
|
||||||
|
case "infoblox":
|
||||||
|
cfg := infoblox.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return infoblox.NewDNSProviderConfig(&cfg)
|
||||||
|
case "infomaniak":
|
||||||
|
cfg := infomaniak.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return infomaniak.NewDNSProviderConfig(&cfg)
|
||||||
|
case "internetbs":
|
||||||
|
cfg := internetbs.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return internetbs.NewDNSProviderConfig(&cfg)
|
||||||
|
case "inwx":
|
||||||
|
cfg := inwx.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return inwx.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ionos":
|
||||||
|
cfg := ionos.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ionos.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ipv64":
|
||||||
|
cfg := ipv64.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ipv64.NewDNSProviderConfig(&cfg)
|
||||||
|
case "iwantmyname":
|
||||||
|
cfg := iwantmyname.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return iwantmyname.NewDNSProviderConfig(&cfg)
|
||||||
|
case "joker":
|
||||||
|
cfg := joker.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return joker.NewDNSProviderConfig(&cfg)
|
||||||
|
case "liara":
|
||||||
|
cfg := liara.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return liara.NewDNSProviderConfig(&cfg)
|
||||||
|
case "lightsail":
|
||||||
|
cfg := lightsail.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return lightsail.NewDNSProviderConfig(&cfg)
|
||||||
|
case "linode":
|
||||||
|
cfg := linode.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return linode.NewDNSProviderConfig(&cfg)
|
||||||
|
case "liquidweb":
|
||||||
|
cfg := liquidweb.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return liquidweb.NewDNSProviderConfig(&cfg)
|
||||||
|
case "loopia":
|
||||||
|
cfg := loopia.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return loopia.NewDNSProviderConfig(&cfg)
|
||||||
|
case "luadns":
|
||||||
|
cfg := luadns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return luadns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "mailinabox":
|
||||||
|
cfg := mailinabox.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return mailinabox.NewDNSProviderConfig(&cfg)
|
||||||
|
case "metaname":
|
||||||
|
cfg := metaname.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return metaname.NewDNSProviderConfig(&cfg)
|
||||||
|
case "mydnsjp":
|
||||||
|
cfg := mydnsjp.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return mydnsjp.NewDNSProviderConfig(&cfg)
|
||||||
|
case "mythicbeasts":
|
||||||
|
cfg := mythicbeasts.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return mythicbeasts.NewDNSProviderConfig(&cfg)
|
||||||
|
case "namecheap":
|
||||||
|
cfg := namecheap.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return namecheap.NewDNSProviderConfig(&cfg)
|
||||||
|
case "namedotcom":
|
||||||
|
cfg := namedotcom.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return namedotcom.NewDNSProviderConfig(&cfg)
|
||||||
|
case "namesilo":
|
||||||
|
cfg := namesilo.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return namesilo.NewDNSProviderConfig(&cfg)
|
||||||
|
case "nearlyfreespeech":
|
||||||
|
cfg := nearlyfreespeech.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nearlyfreespeech.NewDNSProviderConfig(&cfg)
|
||||||
|
case "netcup":
|
||||||
|
cfg := netcup.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return netcup.NewDNSProviderConfig(&cfg)
|
||||||
|
case "netlify":
|
||||||
|
cfg := netlify.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return netlify.NewDNSProviderConfig(&cfg)
|
||||||
|
case "nicmanager":
|
||||||
|
cfg := nicmanager.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nicmanager.NewDNSProviderConfig(&cfg)
|
||||||
|
case "nifcloud":
|
||||||
|
cfg := nifcloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nifcloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "njalla":
|
||||||
|
cfg := njalla.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return njalla.NewDNSProviderConfig(&cfg)
|
||||||
|
case "nodion":
|
||||||
|
cfg := nodion.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nodion.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ns1":
|
||||||
|
cfg := ns1.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ns1.NewDNSProviderConfig(&cfg)
|
||||||
|
case "otc":
|
||||||
|
cfg := otc.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return otc.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ovh":
|
||||||
|
cfg := ovh.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ovh.NewDNSProviderConfig(&cfg)
|
||||||
|
case "pdns":
|
||||||
|
cfg := pdns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return pdns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "plesk":
|
||||||
|
cfg := plesk.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return plesk.NewDNSProviderConfig(&cfg)
|
||||||
|
case "porkbun":
|
||||||
|
cfg := porkbun.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return porkbun.NewDNSProviderConfig(&cfg)
|
||||||
|
case "rackspace":
|
||||||
|
cfg := rackspace.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return rackspace.NewDNSProviderConfig(&cfg)
|
||||||
|
case "rcodezero":
|
||||||
|
cfg := rcodezero.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return rcodezero.NewDNSProviderConfig(&cfg)
|
||||||
|
case "regru":
|
||||||
|
cfg := regru.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return regru.NewDNSProviderConfig(&cfg)
|
||||||
|
case "rfc2136":
|
||||||
|
cfg := rfc2136.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return rfc2136.NewDNSProviderConfig(&cfg)
|
||||||
|
case "rimuhosting":
|
||||||
|
cfg := rimuhosting.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return rimuhosting.NewDNSProviderConfig(&cfg)
|
||||||
|
case "route53":
|
||||||
|
cfg := route53.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return route53.NewDNSProviderConfig(&cfg)
|
||||||
|
case "safedns":
|
||||||
|
cfg := safedns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return safedns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "sakuracloud":
|
||||||
|
cfg := sakuracloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return sakuracloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "scaleway":
|
||||||
|
cfg := scaleway.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return scaleway.NewDNSProviderConfig(&cfg)
|
||||||
|
case "selectel":
|
||||||
|
cfg := selectel.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return selectel.NewDNSProviderConfig(&cfg)
|
||||||
|
case "servercow":
|
||||||
|
cfg := servercow.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return servercow.NewDNSProviderConfig(&cfg)
|
||||||
|
case "shellrent":
|
||||||
|
cfg := shellrent.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return shellrent.NewDNSProviderConfig(&cfg)
|
||||||
|
case "simply":
|
||||||
|
cfg := simply.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return simply.NewDNSProviderConfig(&cfg)
|
||||||
|
case "sonic":
|
||||||
|
cfg := sonic.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return sonic.NewDNSProviderConfig(&cfg)
|
||||||
|
case "stackpath":
|
||||||
|
cfg := stackpath.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return stackpath.NewDNSProviderConfig(&cfg)
|
||||||
|
case "tencentcloud":
|
||||||
|
cfg := tencentcloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return tencentcloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "transip":
|
||||||
|
cfg := transip.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return transip.NewDNSProviderConfig(&cfg)
|
||||||
|
case "ultradns":
|
||||||
|
cfg := ultradns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ultradns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "variomedia":
|
||||||
|
cfg := variomedia.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return variomedia.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vegadns":
|
||||||
|
cfg := vegadns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vegadns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vercel":
|
||||||
|
cfg := vercel.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vercel.NewDNSProviderConfig(&cfg)
|
||||||
|
case "versio":
|
||||||
|
cfg := versio.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return versio.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vinyldns":
|
||||||
|
cfg := vinyldns.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vinyldns.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vkcloud":
|
||||||
|
cfg := vkcloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vkcloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vscale":
|
||||||
|
cfg := vscale.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vscale.NewDNSProviderConfig(&cfg)
|
||||||
|
case "vultr":
|
||||||
|
cfg := vultr.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return vultr.NewDNSProviderConfig(&cfg)
|
||||||
|
case "webnames":
|
||||||
|
cfg := webnames.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return webnames.NewDNSProviderConfig(&cfg)
|
||||||
|
case "websupport":
|
||||||
|
cfg := websupport.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return websupport.NewDNSProviderConfig(&cfg)
|
||||||
|
case "wedos":
|
||||||
|
cfg := wedos.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return wedos.NewDNSProviderConfig(&cfg)
|
||||||
|
case "yandex":
|
||||||
|
cfg := yandex.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return yandex.NewDNSProviderConfig(&cfg)
|
||||||
|
case "yandex360":
|
||||||
|
cfg := yandex360.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return yandex360.NewDNSProviderConfig(&cfg)
|
||||||
|
case "yandexcloud":
|
||||||
|
cfg := yandexcloud.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return yandexcloud.NewDNSProviderConfig(&cfg)
|
||||||
|
case "zoneee":
|
||||||
|
cfg := zoneee.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return zoneee.NewDNSProviderConfig(&cfg)
|
||||||
|
case "zonomi":
|
||||||
|
cfg := zonomi.Config{}
|
||||||
|
err := json.Unmarshal([]byte(js), &cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return zonomi.NewDNSProviderConfig(&cfg)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unrecognized DNS provider: %s", name)
|
||||||
|
}
|
||||||
|
}
|
21
tools/dns_challenge_update/code-gen/update.sh
Normal file
21
tools/dns_challenge_update/code-gen/update.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#/bin/bash
|
||||||
|
|
||||||
|
repo_url="https://github.com/go-acme/lego"
|
||||||
|
|
||||||
|
# Check if the folder "./lego" exists
|
||||||
|
if [ -d "./lego" ]; then
|
||||||
|
# If the folder exists, change into it and perform a git pull
|
||||||
|
echo "Folder './lego' exists. Pulling updates..."
|
||||||
|
cd "./lego" || exit
|
||||||
|
git pull
|
||||||
|
cd ../
|
||||||
|
else
|
||||||
|
# If the folder doesn't exist, clone the repository
|
||||||
|
echo "Folder './lego' does not exist. Cloning the repository..."
|
||||||
|
git clone "$repo_url" "./lego" || exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run the extract.go to get all the config from lego source code
|
||||||
|
go run ./extract.go
|
||||||
|
|
||||||
|
echo "Config generated"
|
Loading…
x
Reference in New Issue
Block a user