mirror of
				https://github.com/taigrr/godns
				synced 2025-01-18 04:03:25 -08:00 
			
		
		
		
	Merge pull request #51 from TimothyYe/cf
add API token support for Cloudflare
This commit is contained in:
		
						commit
						14bce004f6
					
				
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							@ -112,7 +112,9 @@ Usage of ./godns:
 | 
			
		||||
 | 
			
		||||
### 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
 | 
			
		||||
{
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
@ -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.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-Key", handler.Configuration.Password)
 | 
			
		||||
	} else if handler.Configuration.LoginToken != "" {
 | 
			
		||||
		req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", handler.Configuration.LoginToken))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return req, client
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								utils.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								utils.go
									
									
									
									
									
								
							@ -196,12 +196,14 @@ func CheckSettings(config *Settings) error {
 | 
			
		||||
			return errors.New("password cannot be empty")
 | 
			
		||||
		}
 | 
			
		||||
	} else if config.Provider == CLOUDFLARE {
 | 
			
		||||
		if config.LoginToken == "" {
 | 
			
		||||
			if config.Email == "" {
 | 
			
		||||
				return errors.New("email cannot be empty")
 | 
			
		||||
			}
 | 
			
		||||
			if config.Password == "" {
 | 
			
		||||
				return errors.New("password cannot be empty")
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else if config.Provider == ALIDNS {
 | 
			
		||||
		if config.Email == "" {
 | 
			
		||||
			return errors.New("email cannot be empty")
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user