Added support for authentication tokens + fix for #1 #2
							
								
								
									
										20
									
								
								lib/index.js
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								lib/index.js
									
									
									
									
									
								
							| @ -44,12 +44,12 @@ module.exports.create = function (config) { | ||||
|     defaultHeaders['X-Auth-Key'] = config.authKey | ||||
|   } | ||||
|   function api (method, path, body, tokenType) { | ||||
|     const headers = defaultHeaders; | ||||
|     const headers = defaultHeaders | ||||
|     if (tokenType && config.bearerTokens) { | ||||
|       if (!(tokenType in config.bearerTokens)) { | ||||
|         throw new Error('Unrecognized token type'); | ||||
|         throw new Error('Unrecognized token type') | ||||
|       } | ||||
|       headers['Authorization'] = 'Bearer ' + config.bearerTokens[tokenType]; | ||||
|       headers.Authorization = 'Bearer ' + config.bearerTokens[tokenType] | ||||
|     } | ||||
|     return request({ | ||||
|       url: baseUrl + path, | ||||
| @ -92,7 +92,7 @@ module.exports.create = function (config) { | ||||
|         throw new Error('Can not edit zone ' + JSON.stringify(domain) + ' from this account') | ||||
|       } | ||||
| 
 | ||||
|       const resp = await api('POST', `/zones/${zone.id}/dns_records`, {type: 'TXT', name: dnsPrefix, content: txtRecord, ttl: 300}, 'zone') | ||||
|       const resp = await api('POST', `/zones/${zone.id}/dns_records`, { type: 'TXT', name: dnsPrefix, content: txtRecord, ttl: 300 }, 'zone') | ||||
|       if (resp.statusCode !== 200) { | ||||
|         formatError('Could not add record', resp) | ||||
|       } | ||||
| @ -113,14 +113,14 @@ module.exports.create = function (config) { | ||||
|         throw new Error('Can not edit zone ' + JSON.stringify(domain) + ' from this account') | ||||
|       } | ||||
| 
 | ||||
|       const resp = await api('GET', `/zones/${zone.id}/dns_records?name=${encodeURI(dnsPrefix + '.' + domain)}`, undefined,'zone') | ||||
|       const resp = await api('GET', `/zones/${zone.id}/dns_records?name=${encodeURI(dnsPrefix + '.' + domain)}`, undefined, 'zone') | ||||
|       if (resp.statusCode !== 200) { | ||||
|         formatError('Could not read record', resp) | ||||
|       } | ||||
| 
 | ||||
|       let {result} = resp.body | ||||
|       const { result } = resp.body | ||||
| 
 | ||||
|       let record = result.filter(record => (record.type === 'TXT' && record.content === txtRecord))[0] | ||||
|       const record = result.filter(record => (record.type === 'TXT' && record.content === txtRecord))[0] | ||||
| 
 | ||||
|       if (record) { | ||||
|         const resp = await api('DELETE', `/zones/${zone.id}/dns_records/${record.id}`, undefined, 'zone') | ||||
| @ -149,12 +149,12 @@ module.exports.create = function (config) { | ||||
|         formatError('Could not read record', resp) | ||||
|       } | ||||
| 
 | ||||
|       let {result} = resp.body | ||||
|       const { result } = resp.body | ||||
| 
 | ||||
|       let record = result.filter(record => (record.type === 'TXT' && record.content === txtRecord))[0] | ||||
|       const record = result.filter(record => (record.type === 'TXT' && record.content === txtRecord))[0] | ||||
| 
 | ||||
|       if (record) { | ||||
|         return {dnsAuthorization: record.content} | ||||
|         return { dnsAuthorization: record.content } | ||||
|       } else { | ||||
|         return null // TODO: not found. should this throw?!
 | ||||
|       } | ||||
|  | ||||
							
								
								
									
										2099
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2099
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -25,6 +25,13 @@ | ||||
| 		"@root/request": "^1.3.11" | ||||
| 	}, | ||||
| 	"devDependencies": { | ||||
| 		"acme-dns-01-test": "^3.2.1" | ||||
| 		"acme-dns-01-test": "^3.2.1", | ||||
| 		"standard": "^14.1.0", | ||||
| 		"husky": "^3.0.4" | ||||
| 	}, | ||||
| 	"husky": { | ||||
| 		"hooks": { | ||||
| 			"pre-commit": "npx standard --fix && git update-index --again" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
							
								
								
									
										2
									
								
								test.js
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								test.js
									
									
									
									
									
								
							| @ -11,7 +11,7 @@ const [zone, authEmail, authType, credential, zoneToken] = process.argv.slice(2) | ||||
| const config = { authEmail } | ||||
| switch (authType) { | ||||
|   case 'token': | ||||
|     config.bearerTokens = {list: credential, zone: zoneToken || credential} | ||||
|     config.bearerTokens = { list: credential, zone: zoneToken || credential } | ||||
|     break | ||||
|   default: | ||||
|     config.authKey = credential | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user