mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-02-24 07:33:03 +08:00
98 lines
2.4 KiB
Go
98 lines
2.4 KiB
Go
package namecheap
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
)
|
|
|
|
const (
|
|
domainsDNSGetHosts = "namecheap.domains.dns.getHosts"
|
|
domainsDNSSetHosts = "namecheap.domains.dns.setHosts"
|
|
domainsDNSSetCustom = "namecheap.domains.dns.setCustom"
|
|
)
|
|
|
|
type DomainDNSGetHostsResult struct {
|
|
Domain string `xml:"Domain,attr"`
|
|
IsUsingOurDNS bool `xml:"IsUsingOurDNS,attr"`
|
|
Hosts []DomainDNSHost `xml:"host"`
|
|
}
|
|
|
|
type DomainDNSHost struct {
|
|
ID int `xml:"HostId,attr"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
Address string `xml:"Address,attr"`
|
|
MXPref int `xml:"MXPref,attr"`
|
|
TTL int `xml:"TTL,attr"`
|
|
}
|
|
|
|
type DomainDNSSetHostsResult struct {
|
|
Domain string `xml:"Domain,attr"`
|
|
IsSuccess bool `xml:"IsSuccess,attr"`
|
|
}
|
|
|
|
func (client *Client) DomainsDNSGetHosts(sld, tld string) (*DomainDNSGetHostsResult, error) {
|
|
requestInfo := &ApiRequest{
|
|
command: domainsDNSGetHosts,
|
|
method: "GET",
|
|
params: url.Values{},
|
|
}
|
|
requestInfo.params.Set("SLD", sld)
|
|
requestInfo.params.Set("TLD", tld)
|
|
|
|
resp, err := client.do(requestInfo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return resp.DomainDNSHosts, nil
|
|
}
|
|
|
|
func (client *Client) DomainDNSSetHosts(
|
|
sld, tld string, hosts []DomainDNSHost,
|
|
) (*DomainDNSSetHostsResult, error) {
|
|
requestInfo := &ApiRequest{
|
|
command: domainsDNSSetHosts,
|
|
method: "GET",
|
|
params: url.Values{},
|
|
}
|
|
requestInfo.params.Set("SLD", sld)
|
|
requestInfo.params.Set("TLD", tld)
|
|
|
|
for i := range hosts {
|
|
requestInfo.params.Set(fmt.Sprintf("HostName%v", i+1), hosts[i].Name)
|
|
requestInfo.params.Set(fmt.Sprintf("RecordType%v", i+1), hosts[i].Type)
|
|
requestInfo.params.Set(fmt.Sprintf("Address%v", i+1), hosts[i].Address)
|
|
requestInfo.params.Set(fmt.Sprintf("TTL%v", i+1), strconv.Itoa(hosts[i].TTL))
|
|
|
|
}
|
|
|
|
resp, err := client.do(requestInfo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return resp.DomainDNSSetHosts, nil
|
|
}
|
|
|
|
type DomainDNSSetCustomResult struct {
|
|
Domain string `xml:"Domain,attr"`
|
|
Update bool `xml:"Update,attr"`
|
|
}
|
|
|
|
func (client *Client) DomainDNSSetCustom(sld, tld, nameservers string) (*DomainDNSSetCustomResult, error) {
|
|
requestInfo := &ApiRequest{
|
|
command: domainsDNSSetCustom,
|
|
method: "GET",
|
|
params: url.Values{},
|
|
}
|
|
requestInfo.params.Set("SLD", sld)
|
|
requestInfo.params.Set("TLD", tld)
|
|
requestInfo.params.Set("Nameservers", nameservers)
|
|
|
|
resp, err := client.do(requestInfo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return resp.DomainDNSSetCustom, nil
|
|
}
|