mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-11-14 12:15:06 +08:00
50db086278
* New provider * Add support for SRV records * Modify ACTIVEDIRECTORY_PS provider to warn that it is deprecated.
48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
package msdns
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/StackExchange/dnscontrol/v3/models"
|
|
)
|
|
|
|
// DNSAccessor describes a system that can access Microsoft DNS.
|
|
type DNSAccessor interface {
|
|
Exit()
|
|
GetDNSServerZoneAll(dnsserver string) ([]string, error)
|
|
GetDNSZoneRecords(dnsserver, domain string) ([]nativeRecord, error)
|
|
RecordCreate(dnsserver, domain string, rec *models.RecordConfig) error
|
|
RecordDelete(dnsserver, domain string, rec *models.RecordConfig) error
|
|
RecordModify(dnsserver, domain string, old, rec *models.RecordConfig) error
|
|
}
|
|
|
|
// nativeRecord the JSON received from PowerShell when listing all DNS
|
|
// records in a zone.
|
|
type nativeRecord struct {
|
|
//CimClass interface{} `json:"CimClass"`
|
|
//CimInstanceProperties interface{} `json:"CimInstanceProperties"`
|
|
//CimSystemProperties interface{} `json:"CimSystemProperties"`
|
|
//DistinguishedName string `json:"DistinguishedName"`
|
|
//RecordClass string `json:"RecordClass"`
|
|
RecordType string `json:"RecordType"`
|
|
HostName string `json:"HostName"`
|
|
RecordData struct {
|
|
CimInstanceProperties []ciProperty `json:"CimInstanceProperties"`
|
|
} `json:"RecordData"`
|
|
TimeToLive struct {
|
|
TotalSeconds float64 `json:"TotalSeconds"`
|
|
} `json:"TimeToLive"`
|
|
}
|
|
|
|
type ciProperty struct {
|
|
Name string `json:"Name"`
|
|
Value json.RawMessage `json:"Value,omitempty"`
|
|
}
|
|
|
|
type ciValueDuration struct {
|
|
TotalSeconds float64 `json:"TotalSeconds"`
|
|
}
|
|
|
|
// NB(tlim): The above structs were created using the help of:
|
|
// Get-DnsServerResourceRecord -ZoneName example.com | where { $_.RecordType -eq "SOA" } | select $_.RecordData | ConvertTo-Json -depth 10
|
|
// and pass it to https://mholt.github.io/json-to-go/
|