mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
package schema
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
|
||
|
"npm/internal/dnsproviders"
|
||
|
"npm/internal/util"
|
||
|
)
|
||
|
|
||
|
// CreateDNSProvider is the schema for incoming data validation
|
||
|
func CreateDNSProvider() string {
|
||
|
allProviders := dnsproviders.GetAll()
|
||
|
fmtStr := fmt.Sprintf(`{"oneOf": [%s]}`, strings.TrimRight(strings.Repeat("\n%s,", len(allProviders)), ","))
|
||
|
|
||
|
allSchemasWrapped := make([]string, 0)
|
||
|
for providerName, provider := range allProviders {
|
||
|
allSchemasWrapped = append(allSchemasWrapped, createDNSProviderType(providerName, provider.Schema))
|
||
|
}
|
||
|
|
||
|
return fmt.Sprintf(fmtStr, util.ConvertStringSliceToInterface(allSchemasWrapped)...)
|
||
|
}
|
||
|
|
||
|
func createDNSProviderType(name, metaSchema string) string {
|
||
|
return fmt.Sprintf(`
|
||
|
{
|
||
|
"type": "object",
|
||
|
"additionalProperties": false,
|
||
|
"required": [
|
||
|
"acmesh_name",
|
||
|
"name",
|
||
|
"meta"
|
||
|
],
|
||
|
"properties": {
|
||
|
"acmesh_name": {
|
||
|
"type": "string",
|
||
|
"pattern": "^%s$"
|
||
|
},
|
||
|
"name": {
|
||
|
"type": "string",
|
||
|
"minLength": 1,
|
||
|
"maxLength": 100
|
||
|
},
|
||
|
"dns_sleep": {
|
||
|
"type": "integer"
|
||
|
},
|
||
|
"meta": %s
|
||
|
}
|
||
|
}
|
||
|
`, name, metaSchema)
|
||
|
}
|