mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-11 18:08:57 +08:00
50 lines
1.8 KiB
Go
50 lines
1.8 KiB
Go
|
package rwth
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"github.com/StackExchange/dnscontrol/v3/providers"
|
||
|
)
|
||
|
|
||
|
type rwthProvider struct {
|
||
|
apiToken string
|
||
|
zones map[string]zone
|
||
|
}
|
||
|
|
||
|
// features is used to let dnscontrol know which features are supported by the RWTH DNS Admin.
|
||
|
var features = providers.DocumentationNotes{
|
||
|
providers.CanAutoDNSSEC: providers.Unimplemented("Supported by RWTH but not implemented yet."),
|
||
|
providers.CanGetZones: providers.Can(),
|
||
|
providers.CanUseAlias: providers.Cannot(),
|
||
|
providers.CanUseAzureAlias: providers.Cannot(),
|
||
|
providers.CanUseCAA: providers.Can(),
|
||
|
providers.CanUseDS: providers.Unimplemented("DS records are only supported at the apex and require a different API call that hasn't been implemented yet."),
|
||
|
providers.CanUseNAPTR: providers.Cannot(),
|
||
|
providers.CanUsePTR: providers.Can("PTR records with empty targets are not supported"),
|
||
|
providers.CanUseSRV: providers.Can("SRV records with empty targets are not supported."),
|
||
|
providers.CanUseSSHFP: providers.Can(),
|
||
|
providers.CanUseTLSA: providers.Cannot(),
|
||
|
providers.DocCreateDomains: providers.Cannot(),
|
||
|
providers.DocDualHost: providers.Cannot(),
|
||
|
providers.DocOfficiallySupported: providers.Cannot(),
|
||
|
}
|
||
|
|
||
|
// init registers the registrar and the domain service provider with dnscontrol.
|
||
|
func init() {
|
||
|
fns := providers.DspFuncs{
|
||
|
Initializer: New,
|
||
|
RecordAuditor: AuditRecords,
|
||
|
}
|
||
|
providers.RegisterDomainServiceProviderType("RWTH", fns, features)
|
||
|
}
|
||
|
|
||
|
func New(settings map[string]string, _ json.RawMessage) (providers.DNSServiceProvider, error) {
|
||
|
if settings["api_token"] == "" {
|
||
|
return nil, fmt.Errorf("missing RWTH api_token")
|
||
|
}
|
||
|
|
||
|
api := &rwthProvider{apiToken: settings["api_token"]}
|
||
|
|
||
|
return api, nil
|
||
|
}
|