1
0
mirror of https://github.com/taigrr/godns synced 2025-01-18 04:03:25 -08:00

Merge branch 'master' into ipv6

This commit is contained in:
Timothy.Ye 2020-02-06 09:52:14 +08:00
commit 290f6faf60
No known key found for this signature in database
GPG Key ID: 60C91D69819BE0BA
3 changed files with 40 additions and 10 deletions

View File

@ -104,7 +104,7 @@ Usage of ./godns:
* provider: The providers that GoDNS supports, available values are: `Cloudflare`, `Google`, `DNSPod`, `AliDNS`, `HE`, `DuckDNS`. * provider: The providers that GoDNS supports, available values are: `Cloudflare`, `Google`, `DNSPod`, `AliDNS`, `HE`, `DuckDNS`.
* email: Email or account name of your DNS provider. * email: Email or account name of your DNS provider.
* password: Password of your account. * password: Password of your account.
* login_token: Login token of your account. * login_token: API token of your account.
* domains: Domains list, with your sub domains. * domains: Domains list, with your sub domains.
* ip_url: A site helps you to get your public IP address. * ip_url: A site helps you to get your public IP address.
* interval: The interval `seconds` that GoDNS check your public IP. * interval: The interval `seconds` that GoDNS check your public IP.
@ -112,7 +112,9 @@ Usage of ./godns:
### Config example for Cloudflare ### Config example for Cloudflare
For Cloudflare, you need to provide email & Global API Key as password, and config all the domains & subdomains. For Cloudflare, you need to provide the email & Global API Key as password (or to use the API token) and config all the domains & subdomains.
* Using email & Global API Key
```json ```json
{ {
@ -133,6 +135,26 @@ For Cloudflare, you need to provide email & Global API Key as password, and conf
} }
``` ```
* Using the API Token
```json
{
"provider": "Cloudflare",
"login_token": "API Token",
"domains": [{
"domain_name": "example.com",
"sub_domains": ["www","test"]
},{
"domain_name": "example2.com",
"sub_domains": ["www","test"]
}
],
"ip_url": "https://myip.biturl.top",
"interval": 300,
"socks5_proxy": ""
}
```
### Config example for DNSPod ### Config example for DNSPod
For DNSPod, you need to provide your API Token(you can create it [here](https://www.dnspod.cn/console/user/security)), and config all the domains & subdomains. For DNSPod, you need to provide your API Token(you can create it [here](https://www.dnspod.cn/console/user/security)), and config all the domains & subdomains.

View File

@ -146,8 +146,14 @@ func (handler *Handler) newRequest(method, url string, body io.Reader) (*http.Re
req, _ := http.NewRequest(method, handler.API+url, body) req, _ := http.NewRequest(method, handler.API+url, body)
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
if handler.Configuration.Email != "" && handler.Configuration.Password != "" {
req.Header.Set("X-Auth-Email", handler.Configuration.Email) req.Header.Set("X-Auth-Email", handler.Configuration.Email)
req.Header.Set("X-Auth-Key", handler.Configuration.Password) req.Header.Set("X-Auth-Key", handler.Configuration.Password)
} else if handler.Configuration.LoginToken != "" {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", handler.Configuration.LoginToken))
}
return req, client return req, client
} }

View File

@ -207,12 +207,14 @@ func CheckSettings(config *Settings) error {
return errors.New("password cannot be empty") return errors.New("password cannot be empty")
} }
} else if config.Provider == CLOUDFLARE { } else if config.Provider == CLOUDFLARE {
if config.LoginToken == "" {
if config.Email == "" { if config.Email == "" {
return errors.New("email cannot be empty") return errors.New("email cannot be empty")
} }
if config.Password == "" { if config.Password == "" {
return errors.New("password cannot be empty") return errors.New("password cannot be empty")
} }
}
} else if config.Provider == ALIDNS { } else if config.Provider == ALIDNS {
if config.Email == "" { if config.Email == "" {
return errors.New("email cannot be empty") return errors.New("email cannot be empty")