mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
* maint: sort lists in build/generate/featureMatrix.go * maint: sort lists in docs/byo-secrets.md * maint: sort lists in models/record.go * maint: sort lists in pkg/normalize/validate.go * maint: sort lists in providers/activedir/activedirProvider.go * maint: sort lists in providers/akamaiedgedns/akamaiEdgeDnsProvider.go * maint: sort lists in providers/axfrddns/axfrddnsProvider.go * maint: sort lists in providers/azuredns/azureDnsProvider.go * maint: sort lists in providers/cloudflare/cloudflareProvider.go * maint: sort lists in providers/cloudns/cloudnsProvider.go * maint: sort lists in providers/desec/desecProvider.go * maint: sort lists in providers/digitalocean/digitaloceanProvider.go * maint: sort lists in providers/dnsimple/dnsimpleProvider.go * maint: sort lists in providers/dnsmadeeasy/dnsMadeEasyProvider.go * maint: sort lists in providers/exoscale/exoscaleProvider.go * maint: sort lists in providers/gandiv5/gandi_v5Provider.go * maint: sort lists in providers/hedns/hednsProvider.go * maint: sort lists in providers/hetzner/hetznerProvider.go * maint: sort lists in providers/hexonet/hexonetProvider.go * maint: sort lists in providers/inwx/inwxProvider.go * maint: sort lists in providers/linode/linodeProvider.go * maint: sort lists in providers/namecheap/namecheapProvider.go * maint: sort lists in providers/namedotcom/namedotcomProvider.go * maint: sort lists in providers/netcup/netcupProvider.go * maint: sort lists in providers/ns1/ns1Provider.go * maint: sort lists in providers/octodns/octodnsProvider.go * maint: sort lists in providers/oracle/oracleProvider.go * maint: sort lists in providers/ovh/ovhProvider.go * maint: sort lists in providers/packetframe/packetframeProvider.go * maint: sort lists in providers/powerdns/powerdnsProvider.go * maint: sort lists in providers/route53/route53Provider.go * maint: sort lists in providers/vultr/vultrProvider.go * Update go:build pragmas for windows * More sorting * go generate
73 lines
2.2 KiB
Go
73 lines
2.2 KiB
Go
package activedir
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"runtime"
|
|
|
|
"github.com/StackExchange/dnscontrol/v3/providers"
|
|
)
|
|
|
|
// This is the struct that matches either (or both) of the Registrar and/or DNSProvider interfaces:
|
|
type activedirProvider struct {
|
|
adServer string
|
|
fake bool
|
|
psOut string
|
|
psLog string
|
|
}
|
|
|
|
var features = providers.DocumentationNotes{
|
|
providers.CanGetZones: providers.Unimplemented(),
|
|
providers.CanUseAlias: providers.Cannot(),
|
|
providers.CanUseCAA: providers.Cannot(),
|
|
providers.CanUsePTR: providers.Cannot(),
|
|
providers.CanUseSRV: providers.Cannot(),
|
|
providers.DocCreateDomains: providers.Cannot("AD depends on the zone already existing on the dns server"),
|
|
providers.DocDualHost: providers.Cannot("This driver does not manage NS records, so should not be used for dual-host scenarios"),
|
|
providers.DocOfficiallySupported: providers.Can(),
|
|
}
|
|
|
|
// Register with the dnscontrol system.
|
|
// This establishes the name (all caps), and the function to call to initialize it.
|
|
func init() {
|
|
fns := providers.DspFuncs{
|
|
Initializer: newDNS,
|
|
RecordAuditor: AuditRecords,
|
|
}
|
|
providers.RegisterDomainServiceProviderType("ACTIVEDIRECTORY_PS", fns, features)
|
|
}
|
|
|
|
func newDNS(config map[string]string, metadata json.RawMessage) (providers.DNSServiceProvider, error) {
|
|
fmt.Printf("WARNING: ACTIVEDIRECTORY_PS provider is being replaced by MSDNS. Please convert. Details in https://stackexchange.github.io/dnscontrol/providers/msdns\n")
|
|
|
|
fake := false
|
|
if fVal := config["fakeps"]; fVal == "true" {
|
|
fake = true
|
|
} else if fVal != "" && fVal != "false" {
|
|
return nil, fmt.Errorf("fakeps value must be 'true' or 'false'")
|
|
}
|
|
|
|
psOut, psLog := config["psout"], config["pslog"]
|
|
if psOut == "" {
|
|
psOut = "dns_update_commands.ps1"
|
|
}
|
|
if psLog == "" {
|
|
psLog = "powershell.log"
|
|
}
|
|
|
|
p := &activedirProvider{psLog: psLog, psOut: psOut, fake: fake}
|
|
if fake {
|
|
return p, nil
|
|
}
|
|
if runtime.GOOS == "windows" {
|
|
srv := config["ADServer"]
|
|
if srv == "" {
|
|
return nil, fmt.Errorf("ADServer required for Active Directory provider")
|
|
}
|
|
p.adServer = srv
|
|
return p, nil
|
|
}
|
|
fmt.Printf("WARNING: PowerShell not available. Active Directory will not be updated.\n")
|
|
return providers.None{}, nil
|
|
}
|