mirror of
				https://github.com/taigrr/godns
				synced 2025-01-18 04:03:25 -08:00 
			
		
		
		
	add API token support for Cloudflare
This commit is contained in:
		
							parent
							
								
									85c21e6035
								
							
						
					
					
						commit
						e9ec737610
					
				
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							| @ -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. | ||||||
|  | |||||||
| @ -40,7 +40,7 @@ type DNSRecord struct { | |||||||
| 	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"` | ||||||
| 	TTL	int32  `json:"ttl"` | 	TTL     int32  `json:"ttl"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // SetIP updates DNSRecord.IP | // 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, _ := http.NewRequest(method, handler.API+url, body) | ||||||
| 	req.Header.Set("Content-Type", "application/json") | 	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 | 	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") | 			return errors.New("password cannot be empty") | ||||||
| 		} | 		} | ||||||
| 	} else if config.Provider == CLOUDFLARE { | 	} else if config.Provider == CLOUDFLARE { | ||||||
| 		if config.Email == "" { | 		if config.LoginToken == "" { | ||||||
| 			return errors.New("email cannot be empty") | 			if config.Email == "" { | ||||||
| 		} | 				return errors.New("email cannot be empty") | ||||||
| 		if config.Password == "" { | 			} | ||||||
| 			return errors.New("password cannot be empty") | 			if config.Password == "" { | ||||||
|  | 				return errors.New("password cannot be empty") | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} else if config.Provider == ALIDNS { | 	} else if config.Provider == ALIDNS { | ||||||
| 		if config.Email == "" { | 		if config.Email == "" { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user