mirror of
https://github.com/nezhahq/nezha.git
synced 2025-01-23 05:08:13 -05:00
60 lines
1.9 KiB
Go
60 lines
1.9 KiB
Go
package ddns
|
|
|
|
import (
|
|
"bytes"
|
|
"log"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
type ProviderWebHook struct {
|
|
URL string
|
|
RequestMethod string
|
|
RequestBody string
|
|
RequestHeader string
|
|
}
|
|
|
|
func (provider *ProviderWebHook) UpdateDomain(domainConfig *DomainConfig) bool {
|
|
if domainConfig == nil {
|
|
return false
|
|
}
|
|
|
|
if domainConfig.FullDomain == "" {
|
|
log.Println("NEZHA>> Failed to update an empty domain")
|
|
return false
|
|
}
|
|
updated := false
|
|
client := &http.Client{}
|
|
if domainConfig.EnableIPv4 && domainConfig.Ipv4Addr != "" {
|
|
url := provider.FormatWebhookString(provider.URL, domainConfig, "ipv4")
|
|
body := provider.FormatWebhookString(provider.RequestBody, domainConfig, "ipv4")
|
|
header := provider.FormatWebhookString(provider.RequestHeader, domainConfig, "ipv4")
|
|
headers := strings.Split(header, "\n")
|
|
req, err := http.NewRequest(provider.RequestMethod, url, bytes.NewBufferString(body))
|
|
if err == nil && req != nil {
|
|
SetStringHeadersToRequest(req, headers)
|
|
if _, err := client.Do(req); err != nil {
|
|
log.Printf("NEZHA>> Failed to update a domain: %s. Cause by: %s\n", domainConfig.FullDomain, err.Error())
|
|
} else {
|
|
updated = true
|
|
}
|
|
}
|
|
}
|
|
if domainConfig.EnableIpv6 && domainConfig.Ipv6Addr != "" {
|
|
url := provider.FormatWebhookString(provider.URL, domainConfig, "ipv6")
|
|
body := provider.FormatWebhookString(provider.RequestBody, domainConfig, "ipv6")
|
|
header := provider.FormatWebhookString(provider.RequestHeader, domainConfig, "ipv6")
|
|
headers := strings.Split(header, "\n")
|
|
req, err := http.NewRequest(provider.RequestMethod, url, bytes.NewBufferString(body))
|
|
if err == nil && req != nil {
|
|
SetStringHeadersToRequest(req, headers)
|
|
if _, err := client.Do(req); err != nil {
|
|
log.Printf("NEZHA>> Failed to update a domain: %s. Cause by: %s\n", domainConfig.FullDomain, err.Error())
|
|
} else {
|
|
updated = true
|
|
}
|
|
}
|
|
}
|
|
return updated
|
|
}
|