Merge pull request 'add support for multiple records.' (#2) from wangjiacai/alidns:dev01 into master
Reviewed-on: https://gitea.wq520.cloud:4435/jiacai_wang/alidns/pulls/2
This commit is contained in:
commit
28178f54b9
46
alidns.go
46
alidns.go
@ -11,13 +11,17 @@ import (
|
||||
"github.com/aliyun/alibaba-cloud-sdk-go/services/alidns"
|
||||
)
|
||||
|
||||
type Record struct {
|
||||
Type string `json:"type"`
|
||||
RR string `json:"RR"`
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
RegionId string `json:"regionId"`
|
||||
AccessKeyId string `json:"accessKeyId"`
|
||||
AccessSecret string `json:"accessSecret"`
|
||||
DomainName string `json:"domainName"`
|
||||
Type string `json:"Type"`
|
||||
RR string `json:"RR"`
|
||||
Records []Record `json:"records"`
|
||||
}
|
||||
|
||||
type IpJson struct {
|
||||
@ -79,23 +83,26 @@ func main() {
|
||||
fmt.Println(err.Error())
|
||||
}
|
||||
|
||||
var i int64 = 0
|
||||
var found bool = false
|
||||
|
||||
// find subdomain
|
||||
for i = 0; i < domainRecords.TotalCount; i++ {
|
||||
if config.RR == domainRecords.DomainRecords.Record[i].RR && config.Type == domainRecords.DomainRecords.Record[i].Type {
|
||||
for _, record := range config.Records {
|
||||
for _, record_ := range domainRecords.DomainRecords.Record {
|
||||
|
||||
if record.Type == record_.Type &&
|
||||
record.RR == record_.RR {
|
||||
found = true //found subdomain record
|
||||
if ip == domainRecords.DomainRecords.Record[i].Value { // ip not changed
|
||||
fmt.Println("ip", ip, "not changed!")
|
||||
if ip == record_.Value { // ip not changed
|
||||
fmt.Println(record.RR+"."+config.DomainName, "unchanged:", ip)
|
||||
} else {
|
||||
fmt.Printf("ip changed from %s to %s\n", domainRecords.DomainRecords.Record[i].Value, ip)
|
||||
fmt.Printf("---> update %s record to %s ...\n", config.RR+"."+config.DomainName, ip)
|
||||
fmt.Println(record.RR+"."+config.DomainName, "changed:", record_.Value, "->", ip)
|
||||
fmt.Println("updating record...")
|
||||
|
||||
updateDomainRecordRequest := alidns.CreateUpdateDomainRecordRequest()
|
||||
updateDomainRecordRequest.Scheme = "https"
|
||||
updateDomainRecordRequest.RecordId = domainRecords.DomainRecords.Record[i].RecordId
|
||||
updateDomainRecordRequest.RR = config.RR
|
||||
updateDomainRecordRequest.Type = config.Type
|
||||
updateDomainRecordRequest.RecordId = record_.RecordId
|
||||
updateDomainRecordRequest.RR = record.RR
|
||||
updateDomainRecordRequest.Type = record.Type
|
||||
updateDomainRecordRequest.Value = ip
|
||||
response, err := client.UpdateDomainRecord(updateDomainRecordRequest)
|
||||
if err != nil {
|
||||
@ -104,23 +111,22 @@ func main() {
|
||||
if response.IsSuccess() {
|
||||
fmt.Println("success")
|
||||
} else {
|
||||
fmt.Printf("failed.\n%s\n", response.GetHttpContentString())
|
||||
fmt.Println("failed.", response.GetHttpContentString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if !found {
|
||||
fmt.Printf("ip is %s, but no domain record found.\n", ip)
|
||||
fmt.Printf("---> add %s record to %s ...\n", config.RR+"."+config.DomainName, ip)
|
||||
fmt.Println(record.RR+"."+config.DomainName, "not found in records.")
|
||||
fmt.Println("adding record:", record.RR+"."+config.DomainName, "->", ip)
|
||||
|
||||
addDomainRequest := alidns.CreateAddDomainRecordRequest()
|
||||
addDomainRequest.Scheme = "https"
|
||||
|
||||
addDomainRequest.DomainName = config.DomainName
|
||||
addDomainRequest.RR = config.RR
|
||||
addDomainRequest.Type = config.Type
|
||||
addDomainRequest.RR = record.RR
|
||||
addDomainRequest.Type = record.Type
|
||||
addDomainRequest.Value = ip
|
||||
|
||||
response, err := client.AddDomainRecord(addDomainRequest)
|
||||
@ -130,8 +136,10 @@ func main() {
|
||||
if response.IsSuccess() {
|
||||
fmt.Println("success")
|
||||
} else {
|
||||
fmt.Printf("failed.\n%s\n", response.GetHttpContentString())
|
||||
fmt.Println("failed.", response.GetHttpContentString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
}
|
||||
|
@ -3,6 +3,8 @@
|
||||
"accessKeyId": "YOUR_ACCESS_KEY_ID",
|
||||
"accessSecret": "YOUR_ACCESS_SECRET",
|
||||
"domainName": "YOUR_DOMAIN_NAME",
|
||||
"Type": "A",
|
||||
"RR": "@"
|
||||
"records": [
|
||||
{ "type": "A", "RR": "www1"},
|
||||
{ "type": "A", "RR": "www2"}
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user