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. | ||||
|  | ||||
| @ -40,7 +40,7 @@ type DNSRecord struct { | ||||
| 	Proxied bool   `json:"proxied"` | ||||
| 	Type    string `json:"type"` | ||||
| 	ZoneID  string `json:"zone_id"` | ||||
| 	TTL	int32  `json:"ttl"` | ||||
| 	TTL     int32  `json:"ttl"` | ||||
| } | ||||
| 
 | ||||
| // SetIP updates DNSRecord.IP | ||||
| @ -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") | ||||
| 	req.Header.Set("X-Auth-Email", handler.Configuration.Email) | ||||
| 	req.Header.Set("X-Auth-Key", handler.Configuration.Password) | ||||
| 
 | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										12
									
								
								utils.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								utils.go
									
									
									
									
									
								
							| @ -196,11 +196,13 @@ func CheckSettings(config *Settings) error { | ||||
| 			return errors.New("password cannot be empty") | ||||
| 		} | ||||
| 	} else if config.Provider == CLOUDFLARE { | ||||
| 		if config.Email == "" { | ||||
| 			return errors.New("email cannot be empty") | ||||
| 		} | ||||
| 		if config.Password == "" { | ||||
| 			return errors.New("password cannot be empty") | ||||
| 		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 == "" { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user