mirror of
https://github.com/taigrr/godns
synced 2025-01-18 04:03:25 -08:00
Linter fixes
This commit is contained in:
parent
fa5fdc7c8c
commit
46738d5bc6
@ -32,17 +32,19 @@ type DNSRecordUpdateResponse struct {
|
|||||||
Success bool `json:"success"`
|
Success bool `json:"success"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DNSRecord for Cloudflare API
|
||||||
type DNSRecord struct {
|
type DNSRecord struct {
|
||||||
Id string `json:"id"`
|
ID string `json:"id"`
|
||||||
Ip string `json:"content"`
|
IP string `json:"content"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Proxied bool `json:"proxied"`
|
Proxied bool `json:"proxied"`
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
ZoneId string `json:"zone_id"`
|
ZoneID string `json:"zone_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *DNSRecord) SetIp(ip string) {
|
// Update DNSRecord IP
|
||||||
r.Ip = ip
|
func (r *DNSRecord) SetIP(ip string) {
|
||||||
|
r.IP = ip
|
||||||
}
|
}
|
||||||
|
|
||||||
// response from zone api request
|
// response from zone api request
|
||||||
@ -53,7 +55,7 @@ type ZoneResponse struct {
|
|||||||
|
|
||||||
// nested results, only care about name and id
|
// nested results, only care about name and id
|
||||||
type Zone struct {
|
type Zone struct {
|
||||||
Id string `json:"id"`
|
ID string `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,18 +75,18 @@ func (handler *CloudflareHandler) DomainLoop(domain *godns.Domain, panicChan cha
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
currentIp, err := godns.GetCurrentIP(handler.Configuration)
|
currentIP, err := godns.GetCurrentIP(handler.Configuration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error in GetCurrentIP:", err)
|
log.Println("Error in GetCurrentIP:", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Println("Current IP is:", currentIp)
|
log.Println("Current IP is:", currentIP)
|
||||||
// TODO: check against locally cached IP, if no change, skip update
|
// TODO: check against locally cached IP, if no change, skip update
|
||||||
|
|
||||||
log.Println("Checking IP for domain", domain.DomainName)
|
log.Println("Checking IP for domain", domain.DomainName)
|
||||||
zoneId := handler.getZone(domain.DomainName)
|
zoneID := handler.getZone(domain.DomainName)
|
||||||
if zoneId != "" {
|
if zoneID != "" {
|
||||||
records := handler.getDNSRecords(zoneId)
|
records := handler.getDNSRecords(zoneID)
|
||||||
|
|
||||||
// update records
|
// update records
|
||||||
for _, rec := range records {
|
for _, rec := range records {
|
||||||
@ -92,11 +94,11 @@ func (handler *CloudflareHandler) DomainLoop(domain *godns.Domain, panicChan cha
|
|||||||
log.Println("Skiping record:", rec.Name)
|
log.Println("Skiping record:", rec.Name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if rec.Ip != currentIp {
|
if rec.IP != currentIP {
|
||||||
log.Printf("IP mismatch: Current(%+v) vs Cloudflare(%+v)\r\n", currentIp, rec.Ip)
|
log.Printf("IP mismatch: Current(%+v) vs Cloudflare(%+v)\r\n", currentIP, rec.IP)
|
||||||
handler.updateRecord(rec, currentIp)
|
handler.updateRecord(rec, currentIP)
|
||||||
} else {
|
} else {
|
||||||
log.Printf("Record OK: %+v - %+v\r\n", rec.Name, rec.Ip)
|
log.Printf("Record OK: %+v - %+v\r\n", rec.Name, rec.IP)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -175,19 +177,19 @@ func (handler *CloudflareHandler) getZone(domain string) string {
|
|||||||
|
|
||||||
for _, zone := range z.Zones {
|
for _, zone := range z.Zones {
|
||||||
if zone.Name == domain {
|
if zone.Name == domain {
|
||||||
return zone.Id
|
return zone.ID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get all DNS A records for a zone
|
// Get all DNS A records for a zone
|
||||||
func (handler *CloudflareHandler) getDNSRecords(zoneId string) []DNSRecord {
|
func (handler *CloudflareHandler) getDNSRecords(zoneID string) []DNSRecord {
|
||||||
|
|
||||||
var empty []DNSRecord
|
var empty []DNSRecord
|
||||||
var r DNSRecordResponse
|
var r DNSRecordResponse
|
||||||
|
|
||||||
req, client := handler.newRequest("GET", "/zones/"+zoneId+"/dns_records?type=A", nil)
|
req, client := handler.newRequest("GET", "/zones/"+zoneID+"/dns_records?type=A", nil)
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Request error:", err.Error())
|
log.Println("Request error:", err.Error())
|
||||||
@ -211,14 +213,14 @@ func (handler *CloudflareHandler) getDNSRecords(zoneId string) []DNSRecord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update DNS A Record with new IP
|
// Update DNS A Record with new IP
|
||||||
func (handler *CloudflareHandler) updateRecord(record DNSRecord, newIp string) {
|
func (handler *CloudflareHandler) updateRecord(record DNSRecord, newIP string) {
|
||||||
|
|
||||||
var r DNSRecordUpdateResponse
|
var r DNSRecordUpdateResponse
|
||||||
record.SetIp(newIp)
|
record.SetIP(newIP)
|
||||||
|
|
||||||
j, _ := json.Marshal(record)
|
j, _ := json.Marshal(record)
|
||||||
req, client := handler.newRequest("PUT",
|
req, client := handler.newRequest("PUT",
|
||||||
"/zones/"+record.ZoneId+"/dns_records/"+record.Id,
|
"/zones/"+record.ZoneID+"/dns_records/"+record.ID,
|
||||||
bytes.NewBuffer(j),
|
bytes.NewBuffer(j),
|
||||||
)
|
)
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
@ -238,6 +240,6 @@ func (handler *CloudflareHandler) updateRecord(record DNSRecord, newIp string) {
|
|||||||
body, _ := ioutil.ReadAll(resp.Body)
|
body, _ := ioutil.ReadAll(resp.Body)
|
||||||
log.Printf("Response failed: %+v\n", string(body))
|
log.Printf("Response failed: %+v\n", string(body))
|
||||||
} else {
|
} else {
|
||||||
log.Printf("Record updated: %+v - %+v", record.Name, record.Ip)
|
log.Printf("Record updated: %+v - %+v", record.Name, record.IP)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user