mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-09-08 14:15:30 +08:00
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package cnr
|
|
|
|
// EnsureZoneExists returns an error
|
|
// * if access to dnszone is not allowed (not authorized) or
|
|
// * if it doesn't exist and creating it fails
|
|
func (n *Client) EnsureZoneExists(domain string) error {
|
|
command := map[string]interface{}{
|
|
"COMMAND": "AddDNSZone",
|
|
"DNSZONE": domain,
|
|
}
|
|
if n.APIEntity == "OTE" {
|
|
command["SOATTL"] = "33200"
|
|
command["SOASERIAL"] = "0000000000"
|
|
}
|
|
// Create the zone
|
|
r := n.client.Request(command)
|
|
if r.GetCode() == 549 || r.IsSuccess() {
|
|
return nil
|
|
}
|
|
return n.GetAPIError("Failed to create not existing zone ", domain, r)
|
|
}
|
|
|
|
// ListZones lists all the
|
|
func (n *Client) ListZones() ([]string, error) {
|
|
var zones []string
|
|
|
|
// Basic
|
|
|
|
rs := n.client.RequestAllResponsePages(map[string]string{
|
|
"COMMAND": "QueryDNSZoneList",
|
|
})
|
|
for _, r := range rs {
|
|
if r.IsError() {
|
|
return nil, n.GetAPIError("Error while QueryDNSZoneList", "Basic", &r)
|
|
}
|
|
zoneColumn := r.GetColumn("DNSZONE")
|
|
if zoneColumn != nil {
|
|
// return nil, fmt.Errorf("failed getting DNSZONE BASIC column")
|
|
zones = append(zones, zoneColumn.GetData()...)
|
|
}
|
|
}
|
|
|
|
return zones, nil
|
|
}
|